В настоящее время у меня есть сервер openVPN с несколькими внешними IP-адресами.
Я хотел бы, чтобы все VPN-соединения (интерфейс tun0 и / или диапазон IP-адресов 10.19.88.xx) принимали второй внешний IP-адрес как «общедоступный IP-адрес» вместо первого.
В качестве примера, используя фиктивные адреса:
Deault eth0 address: 11.12.13.1 (server.domain.tld)
eth0:0 address: 11.12.13.2 (vpn.domain.tld)
Все VPN-соединения в настоящее время используют 11.12.13.1 вместо 11.12.13.2.
Есть ли способ решить эту проблему (используя iptables?)
Спасибо
iptables -t nat -A POSTROUTING -i tun0 -j SNAT --to 11.12.13.2
Проблема с ответом rkthkr (помимо странного символа в интерфейсе) заключается в том, что он будет сопоставлять только пакеты, поступающие из подсети 10.19.88.0/24, которые УЖЕ выходят через eth0: 0 и SNAT'ы.
Используя -i tun0
, вы идентифицируете пакеты только по тому интерфейсу, через который они поступают (я предполагаю, что это единственный трафик, поступающий от tun0), а затем отправляете его через SNAT на правильный исходящий IP.
Пытаться:
iptables -t nat -A POSTROUTING -s 10.19.88.0/24 -o eth0 -j SNAT --to 11.12.13.2
Или даже лучше;)
iptables -t nat -A POSTROUTING -s 10.19.88.0/24 -j SNAT --to 11.12.13.2
Не лучше ли использовать параметры openvpn вместо ввода iptables?
местный 11.12.13.2
связывать
Вы не можете использовать "-i interface_name" с POSTROUTING.
-i interface_name -> PREROUTING (откуда приходит пакет)
-o interface_name -> POSTROUTING (куда идет пакет)
те же проблемы, iptables -t nat -A POSTROUTING -i tun0 -j SNAT --to 11.12.13.2 не работает на debian 5