LINUX.ORG.RU
ФорумAdmin

[iptables] перенаправление портов

 


0

0

Есть три интерфейса - eth1($IP1), eth2($IP2) и vtun0($IP0). Хочется все входящие соединения по eth2 c компа $IP на $PORT порт и по vtun0 на $PORT порт перенаправлять на интерфейс eth1. Создаю правила так:

iptables -t nat -A PREROUTING -p tcp -d $IP0 --dport $PORT -j DNAT --to-destination $IP1 iptables -t nat -A PREROUTING -p tcp -s $IP -d $IP2 --dport $PORT -j DNAT --to-destination $IP1

в результате:

host:~# iptables -L -n -t nat --line-numbers Chain PREROUTING (policy ACCEPT) num target prot opt source destination 1 DNAT tcp -- 0.0.0.0/0 $IP0 tcp dpt:$PORT to:$IP1 2 DNAT tcp -- $IP $IP2 tcp dpt:$PORT to:$IP1

Однако, при соединении телнетом к $IP0 перенаправление происходит, а к $IP2 - нет, подвисает

$IP@user:~$ telnet $IP2 $PORT Trying $IP2...

какие будут предложения по отладке?

PS если убрать -s $IP во втором правиле, telnet все равно не коннектится

PSS Дистр Debian

anonymous

(четр, форматирование жоское) Есть три интерфейса - eth1($IP1), eth2($IP2) и vtun0($IP0). Хочется все входящие соединения по eth2 c компа $IP на $PORT порт и по vtun0 на $PORT порт перенаправлять на интерфейс eth1. Создаю правила так:

code:iptables -t nat -A PREROUTING -p tcp -d $IP0 --dport $PORT -j DNAT --to-destination $IP1

iptables -t nat -A PREROUTING -p tcp -s $IP -d $IP2 --dport $PORT -j DNAT --to-destination $IP1

в результате:

code:host:~# iptables -L -n -t nat --line-numbers

Chain PREROUTING (policy ACCEPT)

num target prot opt source destination

1 DNAT tcp -- 0.0.0.0/0 $IP0 tcp dpt:$PORT to:$IP1

2 DNAT tcp -- $IP $IP2 tcp dpt:$PORT to:$IP1

Однако, при соединении телнетом к $IP0 перенаправление происходит, а к $IP2 - нет, подвисает

code:$IP@user:~$ telnet $IP2 $PORT

Trying $IP2...

какие будут предложения по отладке?

ЗЫЖ если убрать -s $IP во втором правиле, telnet все равно не коннектится

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

Попробуй по анологии (единственным перенаправлением) -
iptables -t nat -A PREROUTING -p tcp -d $IP2 --dport $PORT -j DNAT --to-destination $IP1

Думаю, должно работать.. А вообще-то это некорректные правила.. В данном случае тебе стоило бы не по IP перенаправлять, а по портам..

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

>>iptables -t nat -A PREROUTING -p tcp -d $IP2 --dport $PORT -j DNAT --to-destination $IP1 я написал, что так не работает

>> А вообще-то это некорректные правила.. В данном случае тебе стоило бы не по IP перенаправлять, а по портам.. почему некорректные?

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

сравни -
твоё - iptables -t nat -A PREROUTING -p tcp -s $IP -d $IP2 --dport $PORT -j DNAT --to-destination $IP1

моё - iptables -t nat -A PREROUTING -p tcp -d $IP2 --dport $PORT -j DNAT --to-destination $IP1

Разницу улавливаешь?

>почему некорректные?

Потому, что в них присутствует неоднозначность..

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

>> ЗЫЖ если убрать -s $IP во втором правиле, telnet все равно не коннектится в первом посте написано ;)

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

>>Потому, что в них присутствует неоднозначность..

хорошо, как осуществить вот это:

>>Есть три интерфейса - eth1($IP1), eth2($IP2) и vtun0($IP0). Хочется все входящие соединения по eth2 c компа $IP на $PORT порт и по vtun0 на $PORT порт перенаправлять на интерфейс eth1

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

iptables -t nat -A PREROUTING -p tcp -s $IP -d $IP2 --dport $PORT -j DNAT --to-destination $IP1:$PORT
iptables -t nat -A PREROUTING -p tcp -d $IP0 --dport $PORT -j DNAT --to-destination $IP1:$PORT

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

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

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

А попробуй вот так - iptables -t nat -A PREROUTING -p tcp -d $IP2 --dport $PORT -j DNAT --to-destination $IP1:$PORT iptables -t nat -A PREROUTING -p tcp -d $IP0 --dport $ANOTHERPORT -j DNAT --to-destination $IP1:$PORT

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

А попробуй вот так -
iptables -t nat -A PREROUTING -p tcp -d $IP2 --dport $PORT -j DNAT --to-destination $IP1:$PORT
iptables -t nat -A PREROUTING -p tcp -d $IP0 --dport $ANOTHERPORT -j DNAT --to-destination $IP1:$PORT

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

щёчки не показатель, не сильно ориентируйся на них, запрос то приходит (щёчик крутится), но как ему ответить обратно на этот запрос? проверь все таки маршрутизацию... С иптаблес больше ты ничего не придумаешь :)

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

посмотри как у тебя связаны eth1 и vtun0, это очень важно... у них есть доступ друг к другу? Можешь ли ты из сетки eth1 пропинговать тачку из vtun0?

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

Тогда, как уже верно заметили выше, просмотри таблицы маршрутизации на всех задействованных интерфейсах..

MiracleMan ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.