LINUX.ORG.RU
ФорумAdmin

iptables DNAT

 


0

2

Добрый день. Прошу помощи по iptables. Есть такая ситуация:

  1. Клиент с адресом 1.1.1.1
  2. Сервер №1 с адресом 2.2.2.1
  3. Сервер №2 с адресом 3.3.3.1

Скорость соединения между клиентом и сервером №1 очень низкая (порядка 30Kbit/s). Скорость соединения клиент-сервер№2 100Mbit/sи сервер№1-сервер№2 100Mbit/s. Как сделать на сервере №2 перенаправление трафика с определенных портов на сервер №1. Пробовал с помощью iptables на сервере №2 для 443 порта:

iptables -t nat -A PREROUTING -p tcp –dport 443 -j DNAT –to-destination 2.2.2.1:443

iptables -t nat -A POSTROUTING -p tcp –dst 2.2.2.1 –dport 443 -j MASQUERADE

Трафик течет, но все еще с ограничением в 30Kbit/s. При использовании nginx - скорость получается порядка 100Mbit/s. Что я делаю не так в правилах iptables?



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

сначало нужно повесить теги на соединения клиента, потом dnat snat по тегам.

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

Понял. Правила нормально выглядят, snat есть значит в обратку трафик должен на s2 пойти.

При использовании nginx - скорость получается порядка 100Mbit/s.

Можешь расшифровать?

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

Если вместо этих правил использовать nginx и конструкцию такого вида:

stream { server { listen 443; proxy_pass 2.2.2.1:443; }

то при обращении на сервер №2 клиент по факту берет контент с сервера №1 на нормальной скорости

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

Глупый вопрос, но всеже. tcpdump на s1 смотрели, там трафик приходит и уходит со стороны s2 когда dnat настроен?

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

tcpdump выдает то, что и должно быть при настройке таких правил в iptables:

На S2:

client -> S2

S2 -> S1

S1 -> S2

S2 -> client

На S1:

S2 -> S1

S1 -> S2

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

Если добавить правило iptables:

iptables -A FORWARD -p tcp –tcp-flags SYN,RST SYN -j TCPMSS –set-mss 128

то скорость client – S2 – S1 увеличивается до ~800Kbit/s

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

Я конечно очень давно не крутил айпитаблес для таких задач, но сдается мне, что так как в тз, оно и не осилит.

Тут бы pf хорошо зашел. Нужно тут и в qos и в altq.

Или какая-то железка между ними, которая в это умеет.

Но могу ошибаться, iptables для таких задач не применял никогда. Спросите в гугле лучше.

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

Тем не менее, по моему мнению данный способ не верный. Для этого понимания нужно углубиться в стэк тсипи пипи. Но работать костыльно будет, да. Правильно ли использовать костыли? Нет.

anonymous
()

Подампите tcp-пакеты и посмотрите, какие параметры tcp соединения (MSS, TCP Window Scaling) выставляются клиентом при подключении к сервер 1 и сервер 2, да и между сервер 1 и сервер 2. Явно будут отличия. Там и будет понято, что рихтовать iptables'ом.

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