Я настраиваю VPS, который работает на openvz, как сервер OpenVPN, используя интерфейс tun.
У меня возникли проблемы с правилом iptables, поскольку MASQUERADE недоступен.
Если бы MASQUERADE был доступен, я бы написал правила iptables следующим образом:
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT
iptables -A FORWARD -j REJECT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Однако, учитывая, что я не могу использовать MASQUERADE, как я могу переписать эти правила, используя вместо этого SNAT или DNAT?
заранее спасибо
-------------- РЕДАКТИРОВАТЬ ---------------
Спасибо Olipro за решение. Вот правила, которые у меня сработали:
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT
iptables -A FORWARD -j REJECT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j SNAT --to-source 1.2.3.4
Где 1.2.3.4 - публичный IP-адрес сервера openvpn.
Вам действительно нужен MASQUERADE, только если ваш глобальный IPv4-адрес часто меняется (например, на ADSL), в противном случае предпочтительнее использовать SNAT.
Вместо правила MASQUERADE используйте SNAT следующим образом:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source 1.2.3.4
замените 1.2.3.4 фактическим общедоступным IP-адресом виртуальной машины ... Кроме того, я бы ожидал, что eth0 будет veth0 или venet0, поскольку это ящик OpenVZ.