У меня есть стороннее приложение, которое слушает только 127.0.0.1:4000 по соображениям безопасности. Кроме того, он также выполняет проверку ip источника, чтобы убедиться, что все подключения выполнены из 127.0.0.1, то есть не разрешает подключение извне localhost.
Однако у меня есть вариант использования, когда мне нужно подключиться к это приложение с другой машины в той же сети. Я пытаюсь использовать правила iptables NAT, чтобы это работало.
Машина, на которой установлено это приложение с IP-адресом: 192.168.1.100.
Я добавил следующее правило DNAT для пересылки всех траффиков c на 192.168.1.100:4000 до 127.0.0.1:4000
sysctl -w net.ipv4.conf.eth0.route_localnet=1
iptables -t nat -A PREROUTING -p tcp -d 192.168.1.100 --dport 4000 -j DNAT --to-destination 127.0.0.1:4000
Поскольку DNAT не меняет исходный IP, я подумал, что мне также понадобится правило SNAT, чтобы этот трафик c исходил от localhost чтобы пройти проверку IP-адреса источника в приложении.
iptables -t nat -A POSTROUTING -o eth0 -d 127.0.0.1 --dport 4000 -j SNAT --to 127.0.0.1
eth0 - сетевой интерфейс с IP-адресом 192.168.1.100.
Насколько я понимаю, первое правило DNAT перенаправит трафик c на 127.0.0.1, а второе правило изменит исходный IP-адрес на 127.0.0.1, так что стороннее приложение увидит, что Этот трафик c происходит от 127.0.0.1
Но это все еще не работает. Будем благодарны за любые замечания или советы по устранению неполадок.