Организация GRE-туннеля в RHEL/CentOS

()

Протокол GRE создавался компанией Cisco Systems для организации сетевых тунелей. И хотя в настоящее время GRE теряет актуальность, так как не поддерживает шифрование и не работает через NAT, в случае необходимости быстрой организации туннеля между двумя локальными сетями именно GRE будет в числе самых простых вариантов.

Ранее уже описывалась организация GRE-туннеля на машинах под управлением Debian/Ubuntu. Сейчас будет рассмотрено решение той же самой задачи, но уже на серверах под управлением RHEL/CentOS.

Допустим что в обоих офисах стоит шлюз под управлением CentOS. На кажом сервере по две сетевые карты:

  • eth0: Смотрит в интернет. В центральном офисе адрес 1.1.1.1, в филиале - 1.1.2.2;
  • eth1: Смотрит в локальную сеть офиса. В центральном офисе: 192.168.101.1/24, в филиале - 192.168.102.1/24.

На обоих серверах будет создан интерфейс tun0. В центральном офисе он будет иметь адрес 172.17.254.1 а в филиале - 172.17.254.2. Для этого на сервере головного офиса создадим файл "/etc/sysconfig/network-scripts/ifcfg-tun0" следующего содержания:

DEVICE=tun0
BOOTPROTO=none
ONBOOT=no
TYPE=GRE

# Адрес сервера
MY_OUTER_IPADDR=1.1.1.1
# Адрес сервера внутри GRE-туннеля
MY_INNER_IPADDR=172.17.254.1

# Адрес пира (удалённой точки)
PEER_OUTER_IPADDR=1.1.2.2
# Адрес пира (удалённой точки) внутри туннеля
PEER_INNER_IPADDR=172.17.254.2

На сервере филиала нужно создать такой же файл, но его содержание будет немного отличаться:

DEVICE=tun0
BOOTPROTO=none
ONBOOT=no
TYPE=GRE

# Адрес сервера
MY_OUTER_IPADDR=1.1.2.2
# Адрес сервера внутри GRE-туннеля
MY_INNER_IPADDR=172.17.254.2

# Адрес пира (удалённой точки)
PEER_OUTER_IPADDR=1.1.1.1
# Адрес пира (удалённой точки) внутри туннеля
PEER_INNER_IPADDR=172.17.254.1

Так же на обоих серверах создадим файл "e;/etc/sysconfig/network-scripts/route-tun0"e;. На сервере центрального офиса он будет иметь вид:

192.168.102.1/24 via 172.17.254.2 dev tun0

А на сервере филиала:

192.168.101.1/24 via 172.17.254.1 dev tun0

И наконец на обеих машинах поднимаем интерфейс командой:

ifup tun0

Проверить что интерфейс поднялся можно командой:

ifconfig tun0

Вывод будет примерно таким:

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-6E-6F-82-E2-00-00-00-00-00-00-00-00  
          inet addr:172.17.254.1  P-t-P:172.17.254.2  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP  MTU:1476  Metric:1
          RX packets:26842 errors:0 dropped:0 overruns:0 frame:0
          TX packets:41855 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:2229279 (2.1 MiB)  TX bytes:52864575 (50.4 MiB)
          

Ну а проверить работоспособность соединения можно банальной командой ping. Остаётся лишь дополнить набор правил iptables чтобы разрешить обмен трафиком и работа завершена.

На этом всё. Приятной работы!

Ключевые слова: gre, gre-туннель, iptables, vpn, rhel, centos.

Комментарии:

Anonymous 2013-09-29 17:05:39 (#)

Настроил данный тоннель между двумя CentOS 6.4 всё работает, кроме traceroute. Делаю traceroute ya.ru вижу только последний ya.ru, а хосты до этого в звёздочках.
На обоих концах в iptables прописал.
-A INPUT -p icmp --icmp-type any -j ACCEPT
-A INPUT -p udp -m udp --dport 33434:33523 -j ACCEPT
-A OUTPUT -p icmp --icmp-type any -j ACCEPT
Второй день бьюсь. Что можно сделать чтобы заработал traceroute?

MooSE 2013-10-01 00:54:18 (#)

Цитата:

Настроил данный тоннель между двумя CentOS 6.4 всё работает, кроме traceroute. Делаю traceroute ya.ru вижу только последний ya.ru, а хосты до этого в звёздочках.
На обоих концах в iptables прописал.
-A INPUT -p icmp --icmp-type any -j ACCEPT
-A INPUT -p udp -m udp --dport 33434:33523 -j ACCEPT
-A OUTPUT -p icmp --icmp-type any -j ACCEPT
Второй день бьюсь. Что можно сделать чтобы заработал traceroute?


Никогда не заморачивался. Даже не знаю что посоветовать.

Anonymous 2014-04-28 12:08:19 (#)

Цитата:

Настроил данный тоннель между двумя CentOS 6.4 всё работает, кроме traceroute. Делаю traceroute ya.ru вижу только последний ya.ru, а хосты до этого в звёздочках.
На обоих концах в iptables прописал.
-A INPUT -p icmp --icmp-type any -j ACCEPT
-A INPUT -p udp -m udp --dport 33434:33523 -j ACCEPT
-A OUTPUT -p icmp --icmp-type any -j ACCEPT
Второй день бьюсь. Что можно сделать чтобы заработал traceroute?

Посмотрите в сторону MTU это скорей всего оно.
Спасибо за статью!
Новый комментарий



© 2006-2016 Вадим Калинников aka MooSE

Глонасс навигатор, мониторинг транспорта glonassnsk.com;Профнастил с8 организация. Профнастил С8 для кровли.;личинка замка входной двери;Новая эра- люки канализационные здесь