Назад | Перейти на главную страницу

Прокси-внешние подключения к внутреннему процессу, требующие клиентов localhost

У меня есть демон, работающий в системе CentOS (7), который принимает необработанные TCP (не HTTP) соединения, и я хотел бы подключиться к демону с удаленного компьютера через Интернет. Проблема в том, что демон будет принимать только соединения, исходящие от localhost.

Кроме того, у меня нет возможности что-либо изменить в том, как процесс-демон обрабатывает обмен данными, поэтому любое решение должно будет «обмануть» его, заставив думать, что внешние соединения происходят локально на определенном порту.

В настоящее время я считаю, что я должен иметь возможность использовать iptables для прокси внешних подключений к демону, но я еще не нашел правильную комбинацию правил / директив брандмауэра для выполнения этой задачи. Я также рассматривал возможность добавления Nginx в уравнение, но, насколько я понимаю, одного iptables должно быть достаточно.

У меня есть опыт системного администратора Linux среднего уровня, но я новичок в iptables ...

Итак, мой вопрос (ы):

  1. Каков наилучший / самый простой способ (iptables или нет) настроить эту конфигурацию?
  2. Если iptables - лучший подход, как лучше всего проверить из командной строки, работают ли соединения?

Спасибо!

РЕДАКТИРОВАТЬ: Я подумал, что это может быть полезно для любой доброй души, желающей помочь мне. Я пробовал различные варианты приведенных ниже правил, но безуспешно:

Предпосылки

  1. эхо 1 | sudo tee / proc / sys / net / ipv4 / ip_forward
  2. sudo sysctl -w net.ipv4.conf.eth0.route_localnet = 1

Правила межсетевого экрана

# 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