Я хочу, чтобы весь трафик, поступающий с 192.168.2.10 на интерфейсе eth0, маскировался и передавался через интерфейс tun0. Я хочу, чтобы ответ вернулся через tun0. Я не хочу, чтобы другой трафик на интерфейсе eth0 был затронут. Вот что у меня есть:

# iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
# iptables -A FORWARD -i tun0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
# iptables -A FORWARD -i eth0 -s 192.168.2.10/32 -o tun0 -j ACCEPT
# ip rule add from 192.168.2.10/32 table 100
# ip route add default via 10.8.0.1 table 100

Это правильная конфигурация? Похоже, что работает, но трафик выглядит очень странно в iftop. Похоже, что исходящий трафик проходит через tun0, но ответ приходит на eth0, хотя я могу неправильно его прочитать или это может быть вызвано неправильной настройкой на другом конце.

1 ответ1

0

Вы не можете напрямую изменить, через какой интерфейс приходят ответы - получатель не принимает это решение, отправитель принимает (как и посредники).

Однако вы должны убедиться, что исходящие пакеты маскируются с правильным адресом источника. Если это не тот вариант, рассмотрите возможность использования -j SNAT с явно настроенным адресом источника, вместо того, чтобы полагаться на -j MASQUERADE .

Другими словами, чтобы ответы приходили через tun0, исходные пакеты должны иметь адрес «источника», который обычно также достигается через tun0.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .