Оказывается, в этом нет ничего нового, и я просто использовал неправильные ключевые слова, чтобы найти ответ. Вот два связанных вопроса, которые дают ответ:
Возможно, iptables
или firewalld
можно использовать в моем сценарии для переадресации портов на определенные машины в нисходящей подсети, но я не смог понять, как заставить это работать.
Это может быть не идеально, но мой обходной путь состоял в том, чтобы создать службу systemd на моей gateway
машине, которая использует socat
для перенаправления трафика через определенный порт на определенный IP-адрес.
Это скрипт, который запускается на моем gateway
для переадресации портов 80
и 443
на 10.0.0.100
.
firewall-cmd --zone=external --add-port=80/tcp
socat TCP4-LISTEN:80,fork TCP4:10.0.0.100:80 &
firewall-cmd --zone=external --add-port=443/tcp
socat TCP4-LISTEN:443,fork TCP4:10.0.0.100:443 &
wait