LINUX.ORG.RU
ФорумAdmin

Iptables работает частично/странное поведение


0

1

Перенаправляю входящие соединения с порта одного сервера на порт другого правилами:

-A PREROUTING -d XXX.XXX.XXX.XXX/32 -p tcp -m tcp --dport 9756 -j DNAT --to-destination YYY.YYY.YYY.YYY:8300 -A POSTROUTING -d YYY.YYY.YYY.YYY/32 -p tcp -m tcp --dport 8300 -j SNAT --to-source XXX.XXX.XXX.XXX:9756

С отдельного сервера зайти telnet YYY.YYY.YYY.YYY 8300 получается практически всегда(раз подвисло за 50 попыток), а вот по адресу telnet XXX.XXX.XXX.XXX 9756 каждый третий раз соединится не получается.

Куда рыть? В первый раз с таким сталкиваюсь..

каков философский смысл второго правила ? того которое POSTROUTING ??

MKuznetsov ★★★★★
()

Рыть в сторону описания протокола tcp. Если все пакеты от разных соединений засовывать в один коннект, то будет плохо работать.

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

каков философский смысл второго правила ? того которое POSTROUTING ??

PREROUTING меняет адрес назначения, а POSTROUTING отправителя, чтобы конечный сервер не додумался отвечать клиенту напрямую т.к. он не знает исходящий сокет и возвращать нужно через XXX.XXX.XXX.XXX. Разве что-то не так?

Рыть в сторону описания протокола tcp. Если все пакеты от разных соединений засовывать в один коннект, то будет плохо работать.

А почему коннект один?

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

А почему коннект один?

Принадлежность пакета коннекту (сокету) определяется четырмя числами (dst ip/port + src ip/port). Первая пара обусловлена сервером, а вторую пару вы лишаете уникальности с помощью: "--to-source XXX.XXX.XXX.XXX:9756". Поэтому для сервера «YYY.YYY.YYY.YYY:8300» все пакеты, прошедшие ваш DNAT+SNAT предсавляются одним потоком.

mky ★★★★★
()

Что это за хня?

-A PREROUTING -i eth0 -p tcp -m tcp --dport 443 -j DNAT --to-destination 192.168.0.33:443

это всё, что надо для routing'a.

Ну и попробуйте (x)inetd до кучи.

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