iptables - переслать трафик c на 127.0.0.1 и пройти проверку ip источника - PullRequest
0 голосов
/ 19 апреля 2020

У меня есть стороннее приложение, которое слушает только 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

Но это все еще не работает. Будем благодарны за любые замечания или советы по устранению неполадок.

...