Назад | Перейти на главную страницу

SNAT через Racoon IPSec VPN

Я пытаюсь перенаправить трафик с устройства (которое я назову «целевым»), подключенного к моему серверу Ubuntu (которое я назову «хостом»), на серверы в удаленном офисе.

Хост использует Racoon IPSec VPN, подключенный через сетевую карту, называемую efix. Это создает псевдоним IF, называемый efix:0 имеющий IP-адрес 192.168.190.132. Он может подключаться к серверам.

Связь между хостом и целью - это канал Ethernet с использованием IP-адресов. 10.0.0.1 на IF eusb для хозяина и 10.0.0.2 на IF eth0 для цели.

Я установил следующие маршруты и записи iptables:

Используя Wireshark для мониторинга HTTP GET, я вижу SYN пакеты от цели проходят весь путь до сервера, но сервер SYNACK пакеты останавливаются на хосте и не пересылаются на цель. Я что-то упустил? Разве SNAT не должен отслеживать соединения?

Вероятно, ваша проблема заключается в том, что ваше правило пересылки полагается на то, что SNAT уже сработал для возвращаемых пакетов. Когда вы говорите iptables -A FORWARD -d 10.0.0.0/24, это означает, что трафик уже был изменен через NAT, что происходит после пересылка. Когда приходит начальный пакет, он имеет IP-адрес с NAT (192.168.190.32) в качестве пункта назначения.

Возможно, вам нужны такие правила:

iptables -A forward -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A -i efix -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j SNAT --to-source 192.168.190.132

Первое правило разрешает трафик, связанный с существующими соединениями, например обратный трафик от SNAT-соединений от «хоста». Второй принимает трафик от «хоста» (если я понимаю вашу схему, «хост» передает трафик на ваш межсетевой экран NAT через его интерфейс «etho0», верно?). Вы также можете ограничить это правило с помощью «-d 192.168.190.0/24», в зависимости от ваших конкретных потребностей.

Последнее правило - это то, что вы уже опубликовали, которое говорит о том, что трафик должен быть SNAT.