LINUX.ORG.RU
ФорумAdmin

Поменять порт средствами iptables

 


0

1

Тестовая система. Необходимо с помощью iptables поменять порт приложению (читай перебросить с eth0 на lo). На примере ssh, который висит на 127.0.0.1.

sysctl net.ipv4.ip_forward=1

sysctl -w net.ipv4.conf.eth0.route_localnet=1

iptables -P INPUT DROP

iptables -P OUTPUT ACCEPT

iptables -P FORWARD ACCEPT

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -i lo -j ACCEPT # с этой строкой не работает

#iptables -A INPUT -d 127.0.0.1 -j ACCEPT # с этой - все ок

iptables -A INPUT -i eth0 -p tcp -m tcp --dport 2222 -j ACCEPT

iptables -t nat -I PREROUTING -i eth0 -p tcp --dport 2222 -j DNAT --to-destination 127.0.0.1:22

С iptables только начал разбираться поэтому вполне возможно что что-то делаю не правильно.

Вопрос почему данная конструкция не работает если для lo все разрешить - «iptables -A INPUT -i lo -j ACCEPT»??

При этом если явно указать локальный адрес "-d 127.0.0.1 -j ACCEPT", то все работает.

Или DNAT на 127.0.0.1:22 никак не касается lo интерфейса?



Последнее исправление: odAlex (всего исправлений: 1)

Вы там в своих соц сетях совсем атрофировались. 2 слова в гугле набрать не можете. молодежъ

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3128

anonymous
()
Ответ на: комментарий от anonymous

Про REDIRECT я знаю.

Вопрос именно в том как перебросить не с порта на порт в рамках одного интерфейса, а именно на локальный адрес.

Пусть в примере будет не SSH, а REDIS висящий на 127.0.0.1...

odAlex
() автор топика

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -d 127.0.0.1 -j ACCEPT

Вы серьезно не видите разницы?

anc ★★★★★
()
Ответ на: комментарий от madcore

и как это изменило суть вопроса -) сузив все соединения до 1 порта, не указав протокол

anonymous
()
Ответ на: комментарий от anonymous

Как сделать чтобы работало я знаю.

И через mangle таблицу описаную в той статье и просто указывая напрямую адрес 127.0.0.1...

Вопрос в том почему не работает с конкретной строкой - iptables -A INPUT -i lo -j ACCEPT.

Я предполагал что все что редиректится на 127.0.0.1 дальше обрабатывается на lo интерфейсе. И если на нем все разрешить - то должно работать. Но не работает - хочу понять где в своих предположениях я ишибся.

odAlex
() автор топика
Ответ на: комментарий от odAlex

я думаю, что редирект и ваш днат на локалхост суть одно и тоже, но надо разрешать пакет на входящем интерфейсе. т.е. полностью ваше правило

#iptables -A INPUT -d 127.0.0.1 -j ACCEPT # с этой - все ок

звучит так

iptables -A INPUT -i eth0 -d 127.0.0.1 -j ACCEPT

anonymous
()
Ответ на: комментарий от anonymous

Спасибо, разобрался.

Не мог понять каким образом пакет с адресом назначения 127.0.0.1 может оказаться в INPUT цепочке интерфейча отличного от lo. Забыл что ему на прероутинге подменяется адрес назначения, но он все равно остается пакетом для eth0.

odAlex
() автор топика
Ответ на: комментарий от anonymous

если бы автор этой статьи точно указывал входящие интерфейсы прероута и инпута и исходящие аутпута и построута. читателю было бы проще -) что является правильным тоном.

anonymous
()
Ответ на: комментарий от anonymous

Там всего 2 комментария, но в принципе на эту тему -)

odAlex
() автор топика

Подозреваю что в вашем случае нужен дополнительно snat, тк редис, скорее всгео, пускает только из 127 сети. То что вы поменяли dport - мало.

iptables -t nat -I POSTROUTING ! -s 127.0.0.0/24 -d 127.0.0.1/32 -j MASQUERADE

DeeZ
()
Последнее исправление: DeeZ (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.