У меня есть демон, работающий в системе CentOS (7), который принимает необработанные TCP (не HTTP) соединения, и я хотел бы подключиться к демону с удаленного компьютера через Интернет. Проблема в том, что демон будет принимать только соединения, исходящие от localhost.
Кроме того, у меня нет возможности что-либо изменить в том, как процесс-демон обрабатывает обмен данными, поэтому любое решение должно будет «обмануть» его, заставив думать, что внешние соединения происходят локально на определенном порту.
В настоящее время я считаю, что я должен иметь возможность использовать iptables для прокси внешних подключений к демону, но я еще не нашел правильную комбинацию правил / директив брандмауэра для выполнения этой задачи. Я также рассматривал возможность добавления Nginx в уравнение, но, насколько я понимаю, одного iptables должно быть достаточно.
У меня есть опыт системного администратора Linux среднего уровня, но я новичок в iptables ...
Итак, мой вопрос (ы):
Спасибо!
РЕДАКТИРОВАТЬ: Я подумал, что это может быть полезно для любой доброй души, желающей помочь мне. Я пробовал различные варианты приведенных ниже правил, но безуспешно:
# Setup basic forwarding
sudo iptables --append FORWARD -i eth0 -p tcp --dport 9876 -j ACCEPT
# Route all incoming packets at external interface (eth0) on port 9876 to localhost 9876
# -- OR --
sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 9876 -j DNAT --to-destination 127.0.0.1:9876
# -- OR --
#sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 9876 -j REDIRECT --to-port 9876
# Make sure packets leaving the external interface have the external address of that interface
#sudo iptables -A POSTROUTING -t nat -o eth0 -p tcp --dport 9876 -d 127.0.0.1 -j SNAT --to-source 127.0.0.1
# -- OR --
sudo iptables -A POSTROUTING -t nat -s 127.0.0.1 -j SNAT –to-source XX.XX.XX.XX
# -- OR --
#iptables -A POSTROUTING -t nat -p tcp -d XX.XX.XX.XX --dport 9876 -j MASQUERADE