ALiEN, все верно Ваш вариант рабочий.
iptables -t nat -A PREROUTING -i em0 -p tcp -m tcp -d [EXT-IP] --dport 80 -j DNAT --to-destination 192.168.51.9:80
iptables -A FORWARD -i em0 -o br0 -d 192.168.51.9 -p tcp -m tcp --dport 80 -j ACCEPT
Вот это правило:
iptables -t nat -A POSTROUTING -d 192.168.51.9 -p tcp -m tcp --dport 80 -j MASQUERADE
именно для того, что я изначально хотел, чтобы openvpn-client использовал свое Интернет-соединение, т.е. чтобы не было
redirect-gateway
на клиенте.
Но у меня остался вопрос...
Как именно работает это правило? Оно нужно именно для той схемы, когда маршруты по умолчанию и сервера и клиента разные.
iptables -t nat -A POSTROUTING -d 192.168.51.9 -p tcp -m tcp --dport 80 -j MASQUERADE
Например я пробовал сделать так:
iptables -t nat -A POSTROUTING -d 192.168.51.9 -p tcp -m tcp --dport 80 -o em0 -j SNAT --to-source [EXT-IP]
Как я мыслю... У меня выделенный EXT-IP и покидая интерфейс пакету назначается этот IP при MASQUERADE, так почему же не срабатывает --to-source [EXT-IP]?
Поясните пожалуйста этот момент.