Записки системного администратора

Ещё один блог о системном администрировании, операционных системах, СУБД, сетях, костылях-велосипедах и пр.

CentOS 7: настройка IPIP-туннеля за 5 минут

Возникают ситуации, в которых необходимо соединить удаленные UNIX-сервера туннелем. Например, для того, чтобы получить доступ к удаленной внутренней сети, соединить внутренние сети серверов виртуализации или же необходимо предоставить локальным пользователям определенные сервисы из удаленной сети. Одним из самых простых в настройке туннелей является IPIP-туннель. О его настройке и пойдет речь в этой заметке.

Стоит отметить, что удобство использования IPIP-туннеля состоит еще в том, что его можно настроить как на UNIX-системах, так и на роутерах Mikrotik или Cisco. В дистрибутиве Centos7 уже имеется все необходимое для создания IPIP-туннеля. Служебные скрипты для настройки сети и сами конфигурационные файлы хранятся по традиции в каталоге /etc/sysconfig/network-scripts/.

Итак, обозначим исходные данные, которые необходимы для настройки туннеля.
Имеем два сервера виртуализации под управлением Centos7 со следующими внешними IP-адресами:

srv-kvm1 WAN: 111.112.113.114
srv-kvm2 WAN: 121.122.123.124

На каждом сервере имеется виртуальная локальная сеть:

srv-kvm1 LAN: 10.1.1.0/24
srv-kvm2 LAN: 10.1.2.0/24

И нам необходимо соединить эти виртуальные локальные сети посредством IPIP-туннеля со следующими параметрами:

srv-kvm1 IPIP: 10.10.1.1/30
srv-kvm2 IPIP: 10.10.1.2/30

Создаем файл ifcfg-tun0 на сервере srv-kvm1 со следующим содержимым:

DEVICE=tun0
MY_OUTER_IPADDR=111.112.113.114
PEER_OUTER_IPADDR=121.122.123.124
MY_INNER_IPADDR=10.10.1.1/30
PEER_INNER_IPADDR=10.10.1.2/30
TYPE=IPIP
TTL=255
ONBOOT=yes

На сервере srv-kvm2 создаем такой же файл, с зеркальной заменой адресов:

DEVICE=tun0
MY_OUTER_IPADDR=121.122.123.124
PEER_OUTER_IPADDR=111.112.113.114
MY_INNER_IPADDR=10.10.1.2/30
PEER_INNER_IPADDR=10.10.1.1/30
TYPE=IPIP
TTL=255
ONBOOT=yes

Думаю, описывать содержимое этих файлов не стоит, и так все понятно :)

Теперь необходимо создать таблицу маршрутизации для нашего интерфейса на каждом сервере. В файл /etc/iproute2/rt_tables добавляем строку:

100    tabletun0

Опишем правила маршрутизации. На сервере srv-kvm1 создаем файл rule-tun0 cо следующим содержимым:

from 10.10.1.1 lookup tabletun0

На втором сервере:

from 10.10.1.2 lookup tabletun0

Опишем необходимые маршруты. Для этого на сервере srv-kvm1 в файле route-tun0 запишем:

default dev tun0 table tabletun0
10.1.2.0/24 dev tun0

На втором сервере:

default dev tun0 table tabletun0
10.1.1.0/24 dev tun0

В настройках iptables каждого сервера нужно разрешить принимать протокол ipip.
На srv-kvm1:

# iptables -A INPUT -p ipip -s 121.122.123.124 -j ACCEPT

На srv-kvm2:

# iptables -A INPUT -p ipip -s 111.112.113.114 -j ACCEPT

Поднимаем интерфейс командой:

# ifup tun0

На этом настройка закончена. В результате нам удалось соединить две виртуальные локальные сети IPIP-туннелем, который будет автоматически подниматься после перезагрузки серверов со всеми необходимыми маршрутами.

HTML Preview:

Коротко о себе:

Привет! Меня зовут Вадим. В этом блоге я пишу об интересующих меня вещах, о проблемах, с которыми сталкиваюсь во время работы, и о путях их решения.

Связаться со мной можно, написав письмо на адрес vadim@adminbook.click