Протокол 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
Так же на обоих серверах создадим файл "/etc/sysconfig/network-scripts/route-tun0". На сервере центрального офиса он будет иметь вид:
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 чтобы разрешить обмен трафиком и работа завершена.
На этом всё. Приятной работы!
Anonymous 2013-09-29 17:05:39 (#)
На обоих концах в 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?