пятница, 27 декабря 2013 г.

NAT через IPIP-туннель.

Понадобилось для определенного теста сымитировать выход в интернет из другого города. В том городе имеется небольшой сервер, доступный по внутренней сети (предположим, некие VPN от провайдера, сервер и тестовая машина находятся в локальных маршрутизируемых сетях).

У сервера есть белый ip-адрес и выход в интернет, у клиента такой роскоши нет.

Сервер
IP-адрес локалки: 192.168.1.1/24
IP-адрес белый: 1.2.3.4

Клиент
IP-адрес локалки: 192.168.2.2/24
Шлюз 192.168.2.1

Решение состоит из двух шагов: Поднятие туннеля между клиентом и сервером и настройка NAT на сервере.

На сервере:
ip tun add tun0 mode ipip local 192.168.1.1 remote 192.168.2.2 ttl 255
ip l s dev tun0 up
iptables -I INPUT -p 4 -s 192.168.2.2 -j ACCEPT
iptables -I FORWARD -s 192.168.2.2 -j ACCEPT
iptables -I FORWARD -d 192.168.2.2 -j ACCEPT
iptables -t nat -I POSTROUTING -s 192.168.2.2 -j MASQUERADE

На клиенте:
ip tun add tun0 mode ipip local 192.168.2.2 remote 192.168.1.1 ttl 255
ip l s dev tun0 up
ip r a 192.168.1.1 via 192.168.2.1
ip r d default
ip r a default dev tun0
Надо помнить, что здесь не используется шифрование.
Forwarding должен быть включен, а rp_filter на всякий случай выключен.

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

Отправить комментарий