
Туннель 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