Как я могу перенаправить исходящий трафик на порт 80, используя iptables локально?
19
Я пытаюсь локально перенаправить порты на моей машине с Ubuntu, используя iptables. Похоже на прозрачное проксирование. Я хочу поймать что-нибудь, пытаясь оставить мою систему на порту 80 и перенаправить ее на удаленный хост и порт.
Могу ли я добиться этого с помощью функций NAT и предварительной маршрутизации iptables?
Добавьте следующее правило в таблицу NAT ( -t nat).
Это правило будет добавлено ( -A) к исходящему трафику ( OUTPUT).
Нас интересует только TCP-трафик ( -p tcp).
Нас интересует только трафик, чей порт назначения - 80 ( --dport 80).
Когда у нас будет совпадение, перейдите к DNAT ( -j DNAT).
Направьте этот трафик на IP-порт другого сервера 80 ( --to-destination IP:80).
Что такое ДНАТ?
DNAT
This target is only valid in the nat table, in the PREROUTING and OUTPUT
chains, and user-defined chains which are only called from those chains.
It specifies that the destination address of the packet should be modified
(and all future packets in this connection will also be mangled), and
rules should cease being examined.
спасибо за это, но это не похоже на работу. Однако с тех пор я обнаружил, что это работает.
pjf
sudo iptables -t nat -A ВЫХОД -p tcp --dport 80 -j DNAT - к месту назначения xx.xx.xx.xx: 3128
pjf
Это потому, что это локально, а не через шлюз? ваш SNAT будет работать через шлюз?
pjf
@pjf - я верю в это. Я обновил свой ответ.
Slm
@pjf - я нашел оба правила и обновлял свой ответ обоими. Я не был уверен, в какой ситуации ты находился.
SLM
6
Это можно сделать более конкретным, чтобы работать только с трафиком к конкретному хосту назначения. Например, когда postfix допустил ошибку и письма в очереди хотят быть отправлены на старый IP-адрес.
Очень полезный совет; именно то, что мне было нужно. Есть ли способ увеличить номер порта? Допустим, у меня есть диапазон из 100 портов, и я хочу увеличить их все на определенную сумму.
Зденек
Не уверен, что вы имеете в виду. Не могли бы вы написать цикл для Bash?
Фелипе Альварес
Будет работать цикл, добавляющий 100 правил iptables, но он замедлит его. Я бы предпочел, чтобы можно было увеличить число последовательных портов в одном правиле.
Зденек
@ Zdenek Я не знаю, возможно ли это с iptables. Вы смотрели firewalld?
Это можно сделать более конкретным, чтобы работать только с трафиком к конкретному хосту назначения. Например, когда postfix допустил ошибку и письма в очереди хотят быть отправлены на старый IP-адрес.
источник
Это может позволить вам переводить порты на все IP-адреса. Основным отличием здесь является отсутствие IP-адреса в
--to-destination
поле.источник
firewalld
?