Я пытаюсь перенаправить порт 443 на другой сервер с помощью iptables. Чем объяснить, что это не работает? Я включил net.ipv4.ip_forward.
Это код, который я использую. У меня нет других правил iptables:
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 443 -j DNAT --to 1.2.3.4:443
iptables -A FORWARD -p tcp -d 1.2.3.4 --dport 443 -j ACCEPT
Если ваша политика пересылки по умолчанию - DROP, вам также необходимо принимать трафик, чтобы вернуться:
iptables -A FORWARD -p tcp -s 1.2.3.4 --sport 443 -j ACCEPT
Вы должны немного обезопасить это, чтобы, если ваш ящик 1.2.3.4 скомпрометирован, по крайней мере, ни один поддельный пакет не может пройти через ваш шлюз с использованием порта источника 443.
IPTABLES=/sbin/iptables
[ ... ]
$IPTABLES -A PREROUTING -t nat -i eth0 -p tcp --dport 443 -j DNAT --to 1.2.3.4:443
$IPTABLES -I FORWARD -p tcp ! --syn -m state --state NEW -j DROP
$IPTABLES -A FORWARD -p tcp -d 1.2.3.4 --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
$IPTABLES -A FORWARD -p tcp -s 1.2.3.4 --sport 443 -m state --state ESTABLISHED -j ACCEPT