Туннель IP-IP между Debian и Centos

Туннель IP-IP между Debian и Centos

Защитившись от ддоса у одной из известных компаний, у нас возникла проблема в работе почты — светить истинный IP-адрес было нельзя, а почтового релея партнер не предоставлял. После небольшого обдумывания, старший администратор попросил меня получить от партнера «белый» IP-адрес и пробросить его с одной из его vds  на наш сервер.

Типа схема

То есть на сервере Centos есть свой родной IP-адрес — 2.2.2.2, который свободно маршрутизируется в интернете. И есть сервер Debian, с родным «белым» адресом 1.1.1.1. Между ними мы и собираем туннель. Только со стороны первого сервера будет серый адрес — 10.10.10.1, а со стороны второго — адрес из сети первого — 2.2.2.3. Таким образом, «белый» адрес, который свободно роутится в интернете, будет «забинден» на сервере совсем другого провайдера.

Настройки на Debian

Как и всегда — через файл /etc/network/interfaces:

auto tun0
iface tun0 inet static
        address 2.2.2.3
        network 255.255.255.255
        pointopoint 10.10.10.1
        mtu 1350
        pre-up /sbin/ip tunnel add $IFACE mode ipip remote 2.2.2.2 local 1.1.1.1 dev eth0
        pre-up /sbin/ip link set $IFACE up
        pre-up /sbin/ip rule add from 2.2.2.3 lookup gate2
        post-up /sbin/ip route add default via 10.10.10.1 dev $IFACE src 2.2.2.3 table gate2
        pre-down /sbin/ip route del default via 10.10.10.1 dev $IFACE src 2.2.2.3 table gate2
        post-down /sbin/ip rule del from 2.2.2.3 lookup gate2
        post-down /sbin/ip link set $IFACE down
        post-down /sbin/ip tunnel del $IFACE

Для того, чтобы у нас не сменился основной дефолтный маршрут, я создал отдельное правило (rule) — gate2:

sam@debian:~$ grep gate2 /etc/iproute2/rt_tables
200     gate2

И в него добавил маршрут по умолчанию:

default via 10.10.10.1 dev tun0 src 2.2.2.3 table gate2

осталось только поднять:

ifup tun0

Туннель создался, но  пока не работает, так как не создан на другой стороне.

Настройки на Centos

Тут примерно все аналогично. Только файлов конфигурации тут несколько.

Так же добавляем правило:

[sam@centos ~]$ grep gate2 /etc/iproute2/rt_tables
251     gate2

В «шляпных системах» вся сетевая конфигурация раскидана отдельно по файлам. Создаем файлы туннеля:

[sam@centos ~]$ cat /etc/sysconfig/network-scripts/ifcfg-tun0
DEVICE=tun0
TYPE=IPIP
TTL=255
MTU=1350
MY_OUTER_IPADDR=2.2.2.2
PEER_OUTER_IPADDR=1.1.1.1
MY_INNER_IPADDR=10.10.10.1
PEER_INNER_IPADDR=2.2.2.3
[sam@centos ~]$ cat /etc/sysconfig/network-scripts/rule-tun0
from 10.10.10.1 lookup gate2
[sam@centos ~]$ cat /etc/sysconfig/network-scripts/route-tun0
2.2.2.3 dev tun0 table gate2

Готово. Поднимаем аналогично:

ifup tun0

Осталось только разрешить серверу Centos форвардить трафик (не забываем прописать в /etc/sysctl.conf):

sysctl -w net.ipv4.ip_forward=1

Смотрим туннели:

[sam@centos ~]$ ip a show dev tun0
6: tun0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1350 qdisc noqueue state UNKNOWN
    link/ipip 2.2.2.2 peer 1.1.1.1
    inet 10.10.10.1 peer 2.2.2.3/32 scope global tun0

Пингуем и убеждаемся, что все работает.

Если сделать трассировку из интернета на адреса 2.2.2.2 и 2.2.2.3, то видно, что до адреса 2.2.2.3 трассировка идет через 2.2.2.2