PDA

Bekijk de volledige versie : WL-550gE :: как настроить 2 входящих канала?



andycpp
03-01-2007, 17:28
Коллеги, хелп, т.к. в юниксе - ламер.
Ситуация следующая:
железо: есть wl-550gE, есть 2 модема - один (docsis) - получает IP по DHCP (хотя IP не меняется, но без DHCP возникают проблемы), второй (adsl) - со встроенным nat/fw/router и получает адрес через PPPoE.
компы: несколько, подключены в асус проводным и беспроводным путём
сеть: внутренняя 10.0.0.0/24, несколько портов форвардятся на внутренние машины

асус - 10.0.0.1, adsl-модем - 10.0.0.2

Как настроить это дело так, чтобы часть трафика шла через docsis-модем, а всё остальное - через adsl, кроме того, нужно оставить форвардинг портов с docsis на внутренние компы?

Я поставил прошивку Олега, но настроить никак не получается - что я сделал - docsis воткнул в WAN-порт, adsl-модем в один из LAN-портов, а дальше ничего не получается - просто через таблицу роутинга могу задать выборочно маршруты хождения через adsl - они работают, а вот если пытаюсь наоборот - default gateway'ем сделать этот adsl, то ничего не работает - вернее как, исходящие соединения отрабатываются, а вот форвардинг портов и т.п. - отключается :(
да, и делать 2 NAT'а не нужно - у adsl-модема он уже есть. Если не сложно, напишите как для идиота команды :)

andycpp
04-01-2007, 18:12
В общем как выглядит картина


[@root]$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
82.144.206.1 0.0.0.0 255.255.255.255 UH 0 0 0 vlan1
82.144.206.0 0.0.0.0 255.255.255.128 U 0 0 0 vlan1
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 br0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 82.144.206.1 0.0.0.0 UG 0 0 0 vlan1

[@root]$ iptables -t nat -L -n
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
VSERVER all -- 0.0.0.0/0 82.144.206.10
NETMAP udp -- 0.0.0.0/0 82.144.206.10 udp spt:6112 10.0.0.0/24

Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
NETMAP udp -- 10.0.0.0/24 0.0.0.0/0 udp dpt:6112 82.144.206.10/32
MASQUERADE all -- !82.144.206.10 0.0.0.0/0
MASQUERADE all -- 10.0.0.0/24 10.0.0.0/24

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Chain VSERVER (1 references)
target prot opt source destination
DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:25 to:10.0.0.101:25
DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 to:10.0.0.100:80


Теперь меняю DG на adsl-модем


[@root]$ route delete default
[@root]$ route add default gateway 10.0.0.2
[@root]$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
82.144.206.1 0.0.0.0 255.255.255.255 UH 0 0 0 vlan1
82.144.206.0 0.0.0.0 255.255.255.128 U 0 0 0 vlan1
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 br0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 10.0.0.2 0.0.0.0 UG 0 0 0 br0
[@root]$ iptables -t nat -L -n
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
VSERVER all -- 0.0.0.0/0 82.144.206.10
NETMAP udp -- 0.0.0.0/0 82.144.206.10 udp spt:6112 10.0.0.0/24

Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
NETMAP udp -- 10.0.0.0/24 0.0.0.0/0 udp dpt:6112 82.144.206.10/32
MASQUERADE all -- !82.144.206.10 0.0.0.0/0
MASQUERADE all -- 10.0.0.0/24 10.0.0.0/24

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Chain VSERVER (1 references)
target prot opt source destination
DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:25 to:10.0.0.101:25
DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 to:10.0.0.100:80

и вот после этого порты уже на форвардятся :( (т.е. пакеты, приходящие на 82.144.206.10:80 не попадают на 10.0.0.100:80 и т.п.

что я делаю не так? :(

зы. и что такое NETMAP udp -- 10.0.0.0/24 0.0.0.0/0 udp dpt:6112 82.144.206.10/32 ?

andycpp
05-01-2007, 23:21
Сижу тут, копаюсь :)
Выяснил следующее - при замене DG получается следующее - по одному каналу приходит SYN-запрос на TCP соединение, а вот SYN ACK отсылается уже по второму каналу (в соотв. с DG). Соответственно, соединение не устанавливается.
Как это можно побороть?

SPI-Firewall ведь есть, он, по-идее, отслеживает TCP handshake последовательности, и, как я понимаю, может правильно роутить... Но как это применить?

Luddit
06-01-2007, 07:12
По поводу двух внешних тут встречаются советы:

Настройка нескольких WAN. Нужно тем у кого несколько провайдеров или если хочется разделить порты и раздавать интернет незаисимо. В роутере используется свитч с поддержкой vlan. Порты нумеруются USB-1-2-3-4-0, где 0-WAN. Чтобы сделать например 1 порт независимым нужно дать команды
robocfg vlan 2 ports "1 5t" vlan 0 ports "2 3 4 5t"
vconfig add eth0 2
после этого появится полноценный интерфейс vlan2. Посмотреть список интерфейсов командой ifconfig -a
посмотреть конфигурацию портов свитча robocfg show
Новому интерфейсу можно назначить свой MAC адрес командой
ifconfig hw ether 00:11:32:23:32:23
запустить интерфейс:
ifconfig vlan2 192.168.2.1 broadcast 192.168.2.255 netmask 255.255.255.0 up

и

банальный ip route add default table XXX scope global nexthop via $IP1 dev ppp0 weight 1 nexthop via $IP2 dev ppp1 weight 1 уже не устраивает?
С адсл-ом даже извратов с патчами для dead-маршрутов не нужно - все через ip-up и ip-down делается

Но чую, что должно быть что-то еще. Также неясна работоспособность без свопа на флэшке.
В общем, очень хочется целиком работающий пример для балансировки двух внешних каналов.

andycpp
06-01-2007, 09:29
Понимаешь как получается - после того, как я добавляю vlan2, и даю ему ИП, скажем, 10.0.2.10 (а адсл-модем - 10.0.2.1) то с роутера я модем могу пинговать, а вот с компа - нет :( Хотя я роутинг добавил
route add -net 10.0.2.0 netmask 255.255.255.0 gw 10.0.2.10

почему так?

Luddit
06-01-2007, 09:39
Роутинг добавил в комп или в роутер? М.б. компу явно надо указать, что пакеты для модема надо слать на роутер, а дальше он сам разберется?

andycpp
06-01-2007, 10:48
Почему не пинговался - разобрался. Нужно отключать маскарад для vlan2. Но старая проблема так и осталась - перестают форвардиться порты. Вернее, (как я понимаю) не получается tcp handshake - запрос на соединение приходит по одному каналу, а ответ на него отсылается по другому...

Как сделать так, что если пакет пришел через один канал (интерфейс), то и отвечать нужно туда же?

Я нашел вот что:


Next, you set up the routing rules. These actually choose what routing table to route with. You want to make sure that you route out a given interface if you already have the corresponding source address:
ip rule add from $IP1 table T1
ip rule add from $IP2 table T2
This set of commands makes sure all answers to traffic coming in on a particular interface get answered from that interface.

Но у меня не работают команда ip rule и таблицы роутинга :( Может прошивка не собрана как advanced router?