LINUX.ORG.RU
ФорумAdmin

разные прикладные протоколы на разные каналы - как?


0

0

Возможно ли завернуть разные протоколы (www, ftp, mail) развести по двум разным провайдерам?

Схема примерно ясна - маркируем (iptables-ами) пакеты на разные dest-порты

iptables -t mangle ...  --set-mark 0x2
#все остальные - на второго провайдера

iptables -t mangle ... --dport 80  ... --set-mark 0x1
iptables -t mangle ... --dport 21  ... --set-mark 0x1

и далее по ip rule направляем их в разные таблицы (в которых прописаны
разные default gw)
ip rule add fwmark 1 table provider1
ip rule add fwmark 2 table provider2


Но. Как быть с протоколом FTP (и другими, которые открывают более одного соединения для своей работы) - первый коннект (на порт 21)
у него пометится как "1", но ftp-data уже пометится как "2" и в результате пакеты уйдут к разным провайдерам (т.е. ничего не заработает). Это для пассивного фтп конечно.

Есть варианты решения этой проблемы?



Re: Re: разные прикладные протоколы на разные каналы - как?

А как он спасает в этом случае?

Заранее не известен же исходящий порт ftp-клиента, по которому он подконнектится к серверу для передачи данных.

Вот лог tcpdump-а, ftpserver - 99.99.99.99, клиент - 11.11.11.11

10.10.10.10.4291 > 99.99.99.99.51367: . ack 17521 win 65535
99.99.99.99.51367 > 11.11.11.11.4291: . 17521:18981(1460) ack 1 win 65535
99.99.99.99.51367 > 11.11.11.11.4291: FP 18981:19857(876) ack 1 win 65535
11.11.11.11.4291 > 99.99.99.99.51367: . ack 19858 win 65535
11.11.11.11.4291 > 99.99.99.99.51367: F 1:1(0) ack 19858 win 65535
99.99.99.99.51367 > 11.11.11.11.4291: . ack 2 win 65535
11.11.11.11.4290 > 99.99.99.99.21: P 78:86(8) ack 474 win 65062
99.99.99.99.21 > 11.11.11.11.4290: P 474:494(20) ack 86 win 65535
11.11.11.11.4290 > 99.99.99.99.21: P 86:92(6) ack 494 win 65042
99.99.99.99.21 > 11.11.11.11.4290: P 494:544(50) ack 92 win 65535

это просто полазили по директориям на фтп

11.11.11.11.4292 > 99.99.99.99.51368: S 181576991:181576991(0) win 65535 <mss 1460,nop,nop,sackOK>
99.99.99.99.51368 > 11.11.11.11.4292: S 2748529220:2748529220(0) ack 181576992 win 65535 <mss 1460>
11.11.11.11.4292 > 99.99.99.99.51368: . ack 1 win 65535
11.11.11.11.4290 > 99.99.99.99.21: P 92:125(33) ack 544 win 64992
99.99.99.99.51368 > 11.11.11.11.4292: P 1:212(211) ack 1 win 65535
99.99.99.99.21 > 11.11.11.11.4290: P 544:631(87) ack 125 win 65535
99.99.99.99.21 > 11.11.11.11.4290: P 631:655(24) ack 125 win 65535
11.11.11.11.4290 > 99.99.99.99.21: . ack 655 win 64881
99.99.99.99.51368 > 11.11.11.11.4292: F 212:212(0) ack 1 win 65535
11.11.11.11.4292 > 99.99.99.99.51368: . ack 213 win 65324
11.11.11.11.4292 > 99.99.99.99.51368: F 1:1(0) ack 213 win 65324
99.99.99.99.51368 > 11.11.11.11.4292: . ack 2 win 65535

а это скачали небольшой файл с него


Хорошо видно, что --sport клиента взят случайным образом.

eightn ()

Re: Re: Re: разные прикладные протоколы на разные каналы - как?

пассивный режим - ничего не поделаешь, и другие подобные протоколы, можешь в правилах их сделать "все остальные" если подходит или смотри содержимое пакетов (тоже метод не универсальный)

или пиши свой модуль ядра.

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