URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 44338
[ Назад ]

Исходное сообщение
"Объединение каналов по портам"

Отправлено VadimMA , 24-Май-04 18:21 
Помогите реализовать задачку

Есть три интерфейса ppp0, ppp1 и eth0.
Eth0 ? во внутреннюю сеть.
ррр0 и ррр1 ? на Интернет.

Требуется:
Через ррр0 (с eth0 конечно) проходили, к примеру, только порты SMTP, FTP, POP3.
А через ррр1 только WWW.

Как это дело промутить?


Содержание

Сообщения в этом обсуждении
"Объединение каналов по портам"
Отправлено andrey , 24-Май-04 18:47 
>Помогите реализовать задачку
>
>Есть три интерфейса ppp0, ppp1 и eth0.
>Eth0 ? во внутреннюю сеть.
>ррр0 и ррр1 ? на Интернет.
>
>Требуется:
>Через ррр0 (с eth0 конечно) проходили, к примеру, только порты SMTP, FTP,
>POP3.
>А через ррр1 только WWW.
>
>Как это дело промутить?

может быть так...

ipfw add deny tcp from eth0 to any !21 via ppp0
ipfw add deny tcp from eth0 to any !25 via ppp0
ipfw add deny tcp from eth0 to any !110 via ppp0
ipfw add deny tcp from eth0 to any !80 via ppp1


"Объединение каналов по портам"
Отправлено sanders , 24-Май-04 19:10 
>Помогите реализовать задачку
>
>Есть три интерфейса ppp0, ppp1 и eth0.
>Eth0 ? во внутреннюю сеть.
>ррр0 и ррр1 ? на Интернет.
>
>Требуется:
>Через ррр0 (с eth0 конечно) проходили, к примеру, только порты SMTP, FTP,
>POP3.
>А через ррр1 только WWW.
>
>Как это дело промутить?

Только из того что написанно eth0 я понял что это Linux, а не BSD... хотя это вовсе не факт. Для Linux это делает пакет iproute2..
Вот примерно то что тебе нужно здалать:
bash# iptables -t mangle -I PREROUTING -p tcp -s 192.168.1.0/24 -d 200.185.61.96/28   --dport 25 -j MARK --set-mark 0x10
bash# iptables -t mangle -I PREROUTING -p tcp -s 192.168.1.0/24 -d 200.185.61.96/28   --dport 21 -j MARK --set-mark 0x10
bash# iptables -t mangle -I PREROUTING -p tcp -s 192.168.1.0/24 -d 200.185.61.96/28   --dport 110 -j MARK --set-mark 0x10
bash# iptables -t mangle -I PREROUTING -p tcp -s 192.168.1.0/24 -d 200.185.61.96/28   --dport 80 -j MARK --set-mark 0x15
Это пометит пакеты: smtp pop ftp метка - 0x10
                    www -- 0x15

bash# iptables -t nat -A POSTROUTING -p tcp -d 0/0 -o ppp0 -j SNAT --to-source $IP_PPP0
bash# iptables -t nat -A POSTROUTING -p tcp -d 0/0 -o ppp1 -j SNAT --to-source $IP_PPP1
Это натит пакеты

bash# echo "300 PPP0" >> /etc/iproute2/rt_tables
bash# echo "300 PPP1" >> /etc/iproute2/rt_tables
Это делается только один раз(создаются таблицы).

bash# ip route add default via $IP_PROVA0 dev ppp0 table PPP0
bash# ip route add default via $IP_PROVA1 dev ppp1 table PPP1
bash# ip flush cache
bash# ip rule add fwmark 10 table PPP0
bash# ip rule add fwmark 15 table PPP1
Это зоздает маршруты и правила маршрутизации.
$IP_PROVA -- ip на стороне прова
$IP_PPP -- ip на твоей стороне
А вообще если чего не ясно можно глянуть здесь:
http://www.atmsk.ru/index.php?option=articles&task=viewartic...


"Объединение каналов по портам"
Отправлено wraith , 24-Май-04 20:54 
>>Помогите реализовать задачку
>>
>>Есть три интерфейса ppp0, ppp1 и eth0.
>>Eth0 ? во внутреннюю сеть.
>>ррр0 и ррр1 ? на Интернет.
>>
>>Требуется:
>>Через ррр0 (с eth0 конечно) проходили, к примеру, только порты SMTP, FTP,
>>POP3.
>>А через ррр1 только WWW.
>>
>>Как это дело промутить?
>
хм...
а почему не сделать так:
iptables -t nat -A POSTROUTING --sport 80 -o ppp1 -j SNAT --to-source x.x.x.x
iptables -t nat -A POSTROUTING -o ppp0 -j SNAT --to-source x.x.x.x

т.е натить http на ppp1 а все остальное на ppp0?


"Объединение каналов по портам"
Отправлено VadimMA , 25-Май-04 09:31 
Буду эксперементировать.
Всем спасибо!

"Объединение каналов по портам"
Отправлено sanders , 25-Май-04 11:19 
>>>Помогите реализовать задачку
>>>
>>>Есть три интерфейса ppp0, ppp1 и eth0.
>>>Eth0 ? во внутреннюю сеть.
>>>ррр0 и ррр1 ? на Интернет.
>>>
>>>Требуется:
>>>Через ррр0 (с eth0 конечно) проходили, к примеру, только порты SMTP, FTP,
>>>POP3.
>>>А через ррр1 только WWW.
>>>
>>>Как это дело промутить?
>>
>хм...
>а почему не сделать так:
>iptables -t nat -A POSTROUTING --sport 80 -o ppp1 -j SNAT --to-source
>x.x.x.x
>iptables -t nat -A POSTROUTING -o ppp0 -j SNAT --to-source x.x.x.x
>
>т.е натить http на ppp1 а все остальное на ppp0?

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


"Объединение каналов по портам"
Отправлено VadimMA , 26-Май-04 09:34 
>>>>Помогите реализовать задачку
>>>>
>>>>Есть три интерфейса ppp0, ppp1 и eth0.
>>>>Eth0 ? во внутреннюю сеть.
>>>>ррр0 и ррр1 ? на Интернет.
>>>>
>>>>Требуется:
>>>>Через ррр0 (с eth0 конечно) проходили, к примеру, только порты SMTP, FTP,
>>>>POP3.
>>>>А через ррр1 только WWW.
>>>>
>>>>Как это дело промутить?
>>>
>>хм...
>>а почему не сделать так:
>>iptables -t nat -A POSTROUTING --sport 80 -o ppp1 -j SNAT --to-source
>>x.x.x.x
>>iptables -t nat -A POSTROUTING -o ppp0 -j SNAT --to-source x.x.x.x
>>
>>т.е натить http на ppp1 а все остальное на ppp0?
>
>Дело в том что правила NAT вставляются в цепочку POSTROUTING -- тоесть
>после принятия решения о маршрутизации, таким образом куда уйдет пакет?.. естественно
>на маршрут по умолчанию, а вот вернется уже в зависимости от
>NAT.


А если вместо POSTROUTING использовать PREROUTING?