Bekijk de volledige versie : Маршрутизация по источнику (Source Routing) на роутере
Добил таки маршрутизацию по источнику.
Дано: провайдер 1 подключен через ASDL модем через PPPoE. Настройки через веб интерфейс. IP адрес внешний, динамический.
Провайдер 2: ethernet, статический внешний адрес. Его сеть используется для поступа ко всему и-нету, когда не подключен провайдер 1, и для доступа к некоторым сетям, иначе.
Переводим один LAN порт в WAN:
nvram set vlan0ports="2 3 4 5*"
nvram set vlan2ports="1 5*"
nvram set vlan2hwname=et0
nvram commit
reboot
В файл post-boot заносим настройку для провайдера 2:
ifconfig vlan2 hw ether xx:xx:xx:xx:xx:xx
ifconfig vlan2 XX.XX.XX.2 netmask 255.255.255.0 up
route add -net XX.XX.XX.0 netmask 255.255.255.0 gw XX.XX.XX.1
# маршрутизация в сети, доступ в которые идет всегда через пров. 2
route add -net YYY netmask YYY gw XX.XX.XX.1
route add default gw XX.XX.XX.1 metric 20
ip route add XX.XX.XX.0/24 dev vlan2 src XX.XX.XX.2 table 2
ip route add default via XX.XX.XX.1 table 2
ip rule add from XX.XX.XX.2 table 2
где:
xx:xx:xx:xx:xx:xx MAC адрес
XX.XX.XX.2 ваш адрес
XX.XX.XX.1 шлюз провайдера
YYY - сеть, поступ к которой всегда через провайдера 2
Создаем файл /tmp/local/etc/dnsmasq.conf, который будет при загрузке дописан к /etc/dnsmasq.conf, со строками
server=xxx.xxx.xxx.xxx
server=xxx.xxx.xxx.xxx
- где xxx.xxx.xxx.xxx IP адреса DNS серверов провайдера 2.
Настройка NAT провайдера 2 и маршрутизации по источнику для провайдера 1.
В файл post-firewall заносим:
# настройка iptables провайдера 2
iptables -I INPUT 6 -i vlan2 -m state --state NEW -j SECURITY
iptables -I FORWARD 6 -o vlan2 ! -i br0 -j DROP
iptables -t nat -A POSTROUTING -o vlan2 ! -s XX.XX.XX.2 -j MASQUERADE
ip rule list|grep "lookup 1"|awk '{system("ip rule del from "$3" table 1")}'
ip route flush table 1
ip route list table main|grep ppp0|awk '{system("ip route add "$0" table 1")}'
ip rule add from $2 table 1
в начале удаляется правило, которое могло остаться от предыдущего соединения и очищается таблица 1. Затем копируется из таблицы main строки маршрутизации касающиеся ppp0 и устанавливается правило использовать таблицу 1 для соединений от провайдера 1.
После этого с роутером можно соединяться извне по любому из двух адресов, а доступ изнутри независимо регулировать основной таблицей маршрутизации.
lll123lll
07-10-2008, 09:50
WL-500GPV1
wan1 - PPTP проброшен порт wan:3999->lan192.168.1.2:3999
1-й порт подключен к ADSL роутеру с пробросом wan:3999->lan192.168.9.2:3777
на нем поднят второй wan2
robocfg vlan 2 ports "1 5t" vlan 0 ports "2 3 4 5t"
ifconfig vlan2 192.168.9.2 broadcast 192.168.9.255 netmask 255.255.255.0 up
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o vlan2 -j MASQUERADE
route add -net 192.168.9.0 netmask 255.255.255.0 dev vlan2
и проброшен порт
iptables -t nat -A PREROUTING -p tcp -d 192.168.9.2/255.255.255.255 --dport 3777 -j DNAT --to 192.168.1.2:3777
iptables -i vlan2 -I INPUT -p tcp --dport 3777 -j ACCEPT
НО VSERVER работает только через тот WAN на который указывает default маршрут т.к. ответ сервера заворачивается на этот WAN
Решение с дополнительным IP на сервере (http://wl500g.info/showpost.php?p=46379&postcount=31)
мне к сожалению не подходит т.к. 192.168.1.2 это wan еще одного роутера и он не умеет держать на нем второй IP
Можно ли сделать так, чтобы весь трафик по порту 3777 уходил на wan2 , а весь трафик по 3999 на wan1 , чтобы ответ сервера заворачивался на правильный wan?
Что-то мало чего понятно... Нарисуйте что ли картинку или опишите подробно, какие есть устройства, как они соединены и на каких интерфейсах какие адреса.
lll123lll
08-10-2008, 13:11
вот схема - цель одновременный доступ к терминалу через трех провайдеров
500gP заворачивает ответ сервера не на тот wan c которого пришел ответ, а на тот , на который указывает default маршрут
я попробовал завернуть все пакеты по порту 3777 на vlan2
iptables -A PREROUTING -i br0 -t mangle -p tcp --dport 3777 -j MARK --set-mark 1
ip rule add fwmark 1 table 202
ip route add default via 192.168.9.1 dev vlan2 table 202
ip route flush cache
но они все равно уходят на wan1 если default из таблицы main указавает на него
по видимому из-за глюка fwmark описанного тут (http://wl500g.info/showthread.php?t=7824)
Здесь http://wl500g.info/showpost.php?p=80908&postcount=461 описан частный случай настройки маршрутизации по источнику для двух провайдеров. Может поможет настроить по аналогии.
lll123lll
10-10-2008, 15:56
маршрутизация по источнику (http://lartc.org/howto/lartc.rpdb.multiple-links.html#AEN298)
это то с чего я начал - не работает
повторил конфу из ссылки один к одному - не работает
вернее работает, но точно так-же
заворачивает ответы в сторону дефолтного маршрута
на какой wan этот маршрут указывает, на тот wan и уходят ответы сервера
соответственно только с этого wan и возможно подключение
в RX3042H(по мимо того , что он нормально разруливает подключение с обоих wan) есть настройка заворачивать весь трафик по определенному порту на конкретный wan
а там ядро 2.4.18 - значит и на 500gPV1 с его 2.4.20 это возможно
вот как бы завернуть весь трафик по 3777 только на vlan2 ?
т.е. маршрутизация не по ip а по порту
в указанной в первом посте ссылке трафик заворачивается по ip для этого серверу дается два адреса свой для каждого wan
у меня нет возможности задать разные адреса т.к. сервера находятся в другой локалке , но есть возможность дать разные порты
отсюда идея по аналогии завернуть трафик по определенному порту на определенный wan чтобы он не заворачивался по дефолту...
В примере, который я привел выше, ответы уходят туда откуда пришли. Это точно работает. Но это внутри одного хоста, где можно пометить пакеты интерфейсом, с которого они пришли. В случае, когда пакет уходит в виртуальный сервер, тут сложнее, надо отслеживать соединения. Реализовано это или нет, я не знаю.
lll123lll
12-10-2008, 11:45
в том то и дело , что ответ от виртуального сервера идет с источником 192.168.1.2
конструкция
iptables -t mangle -A OUTPUT -s 192.168.1.2 -p tcp --dport 3777 -j ROUTE --gw 192.168.9.1
не проходит , потому что в прошивке нет модуля для target ipt_ROUTE (или его вообще нет в этой версии iptables)
конструкцию с маркировкой пакетов
iptables -t mangle -A PREROUTING -p tcp --dport 3777 -s 192.168.1.2 -j MARK --set-mark 233
ip rule add fwmark 233 table 202
ip route add default via 192.168.9.1 dev vlan2 table 202 проглатывает , но роутить по нему не хочет...а есть ли вообще модуль ipt_MARK в прошивке?
пошел по проторенному пути - разобрался как назначить второй адрес на WAN RX3042H
и сделал роутинг по источнику
#Пробросить порт
iptables -t nat -A PREROUTING -p tcp -d 192.168.9.2 --dport 3777 -j DNAT --to 192.168.1.7:3777
#дать доступ локалке в инет чрез vlan2
iptables -t nat -A POSTROUTING -j SNAT -o vlan2 -s 192.168.1.0/24 --to-source 192.168.9.2
#завернуть все пакеты от 192.168.1.7 на vlan2
ip route add default via 192.168.9.1 table 202
ip rule add from 192.168.1.7 table 202
неудобство в том , что нестандартные настройки на RX3042H сбрасываются при разрыве связи и перезагрузке
и приходится поднимать их руками из консоли
(как все это дело там сохранить по типу post-firewall в 500gP инфы нет,да и вообще по нему инфы не густо)
в том то и дело , что ответ от виртуального сервера идет с источником 192.168.1.2
А это (http://wl500g.info/showpost.php?p=35225&postcount=1) или это (http://wl500g.info/showpost.php?p=111637&postcount=37) не пробовали?
lll123lll
12-10-2008, 21:22
эти замороченные скрипты
не решают траблу с одновременным доступом через несколько WAN внутрь сети - какой wan активен по дефолту с того и заходи
а скрипт ток меняет этот дефолт
у меня все по простому
настроен L2TP (который кста этими скриптами не потдерживается) стандартно через web морду
к первому lan подключен ADSL модем в режиме роутера,что позволяет использовать на втором WAN статический адрес без заморочек
в post-boot
#поднимается второй интерфейс
robocfg vlan 0 ports "2 3 4 5t" vlan 2 ports "1 5t"
vconfig add eth0 2
ifconfig vlan2 192.168.9.2 netmask 255.255.255.0 up
#настраивается маршрутизация по источнику чтоб определенный IP заворачивало на определенный WAN
ip route add default via 192.168.9.1 dev vlan2 metric 0 table 202
ip rule add from 192.168.9.2 table 202
ip rule add from 192.168.1.7 table 202
#делаем маршруты для ресурсов только через второй wan
route add -net 195.34.32.116 netmask 255.255.255.255 gw 192.168.9.1
route add -net 212.188.4.10 netmask 255.255.255.255 gw 192.168.9.1
post-firewall
#разрешаю вирт сервер через WAN2 (сам сервер настроен через web)
iptables -t nat -A PREROUTING -d 192.168.9.2 -j VSERVER
#настраиваю nat для второго wan
iptables -t nat -A POSTROUTING -j SNAT -o vlan2 -s 192.168.1.0/24 --to-source 192.168.9.2
#доступ к Wan2 только из локалки
iptables -t filter -A FORWARD -i ! br0 -o vlan2 -j DROP
#дефолтный маршрут с метрикой 1 на резервный канал
route add default gw 192.168.9.1 dev vlan2 metric 1
файлик с DNS для второго WAN
echo "server=195.34.32.116" > /tmp/local/etc/dnsmasq.conf
echo "server=212.188.4.10" >> /tmp/local/etc/dnsmasq.conf
если основной канал падает , то дефолтный маршрут с метрикой 0 уходит
все начинают ходить через дефолт с метрикой 1
не надо никаких демонов и пр.
снаружи есть доступ через оба WAN
вот и все (мож чего упустил в плане безопастности, но эт не прямой выход в инет , а к еще одной железке со своим фаерволом)
тут конечно остается случай когда подключение до прова есть,а инета у прова нету
этакий кульбит , конечное дело , без пинга на внешний ресурс не разрулить
но это редкое явление завсегда можно пофиксить подключившись через живой канал
...что вот на самом деле мучит так это никакое поведение MARK
с нормальным ip rule add fwmark было бы все гораздо легче
ну мож когда и прикрутят к железке ядро посвежее...
PS обнаружилось забавное явление
выдернул из роутера кабель корбины,а vpn остался живой ,
продолжив работать через канал стрима .
что называется даже глазом не моргнул , адрес остался прежний
пинговался извне и заходил на него терминалом
только транспортом теперь служила не корбиновская локалка , а стримовский модем...
если основной канал падает , то дефолтный маршрут с метрикой 0 уходит
все начинают ходить через дефолт с метрикой 1
не надо никаких демонов и пр.
снаружи есть доступ через оба WAN
доступ к рутеру, или скажем вебсерверу висящщему на адресе 192.168.1.3 ?
lll123lll
07-12-2008, 22:52
таки да в олеговской прошивке не работает и не только у меня (http://wl500g.info/showthread.php?p=46379#post46379)
не удается создать маршрутизацию по порту
хотя вот не очень понимаю как другой девайс rx3042h 2.4.18 iptables v1.2.4
создает правило перенаправляющее трафик куда положено
pkts bytes target prot opt in out source destination
5 240 ALLOW tcp -- * * 192.168.2.2 194.67.23.10 2 tcp dpt:110 oif:eth2 continue snat auto
прошивку скачал сегодня с утра 1.9.2.7-d5
имею на борту трех провов могу покрутить так и сяк
готов поучаствовать как тестер но в линухе не очень, поэтому если надо что-то проверить , то нужны подробные инструкции что и ка запускать...мозг на борту тоже вроде есть хотя и испорчен легким t-sql заработком :)
не удается создать маршрутизацию по порту
хотя вот не очень понимаю как другой девайс rx3042h 2.4.18 iptables v1.2.4
создает правило перенаправляющее трафик куда положено
pkts bytes target prot opt in out source destination
5 240 ALLOW tcp -- * * 192.168.2.2 194.67.23.10 2 tcp dpt:110 oif:eth2 continue snat auto
Это вывод с работающего девайса? А на ASUS'е в чём отличие?
гугл много че показывает насчет ipt_route но вне моего понимания
Без твоего вникания не обойдемся. На родном сайте netfilter написано, что модуль ipt_ROUTE исключён, т.к. аналогичный функционал включён в ядро. Кому верить?
P.S. Я уже писал в начале, что поддерживать функционал "под ключ" я не в состоянии.
lll123lll
08-12-2008, 18:33
хм ... я вроде никого не призывал насчет оперативно нулей пр... да и проблем у меня нет поскольку с этой задачей вполне себе справляется rx3042h
просто хотел указать на ошибку в прошивке
"не работают правила маршрутизации ip rule add fwmark..."
и рассказал пример для чего может понадобится
в расчете на энтузиазм
если не исправлять ошибки то зачем вообще тогда новая прошивка чтобы новых добавить?
по сабжу
откатился на старую прошивку самопроизвольные переключения каналов прекратились
смотрю через udpxy пробовал vlc 0.9.3/0.9.5/0.9.7
провайдер корбина
хм ... я вроде никого не призывал насчет оперативно нулей пр... да и проблем у меня нет поскольку с этой задачей вполне себе справляется rx3042h
просто хотел указать на ошибку в прошивке
"не работают правила маршрутизации ip rule add fwmark..."
и рассказал пример для чего может понадобится
в расчете на энтузиазм
если не исправлять ошибки то зачем вообще тогда новая прошивка чтобы новых добавить?
Мда, видимо ты никогда не занимался поддержкой хоть какого-нибудь проекта. Попробую объяснить еще доступнее - вот ты не знаешь linux, и, судя по письмам и не хочешь знать. А я не знаю iptables на нормальном уровне. Поэтому оценить корректность твоего примера не могу, а по тем ссылкам, что ты приводил, совершенно другие правила! Вот и получается что ты сообщаешь об ошибке в стиле юзера "а у меня в подвале стук", вместо того, чтобы привести гарантированно корректный тестовый пример :(
И про ipt_ROUTE не смог ничего ответить, зачем он нужен с текущей версией ядра. Обычно, на энтузиазме помогают либо, когда знают точный ответ, либо когда человек прикладывает усилия сам. Первого нет у меня, а второго я не вижу у тебя.
по сабжу
откатился на старую прошивку самопроизвольные переключения каналов прекратились
смотрю через udpxy пробовал vlc 0.9.3/0.9.5/0.9.7
провайдер корбина
Скорее всего это связано с новой версией udpxy, если будут еще жалобы, верну старую - Chipmunk6.
AndreyPopov
10-01-2009, 22:43
пусть проблема не относится прямо к оборудованию ASUS и тем более прошивкам Олега, но может у кого-то будут мысли, потому как я как-то в тупике.
все завертелось давно, почти 10 лет назад. тогда протянули себе выделенку с 2048к локального трафика провайдера и 64к внешнего.
купили у провайдера РЕАЛЬНЫЙ адресный пул и было все нормально.
но со временем появилась возможность ISDN 128k, а теперь и ADSL (c начала 256к, теперь безлимит 8М за $30 в месяц).
причем ADSL линий теперь ТРИ от разных провайдеров.
- выделенка осталась для получения и отправки почты (потому как 2М на отправку до сих еще никто не предоставляет) и локального трафика провайдера (очень хороший сервер фильмов, побагаче остальных и обновляется чаще)
- три ADSL линии используются для внешнего Интернета и для доступа опять же к локальным ресурсам провайдеров.
есть "центральный" маршрутизатор (Windows Server), на котором статическими маршрутами все сделано. т.е. прописаны локальные маршруты на каждого провайдера и также руками "поделена полоса пропускания" внешнего Интернета.
на всех ADSL провайдеров стоят ADSL модемы, которые как обычно с NAT, о они подключены каждый к отдельной сетевой карте "центрального" маршрутизатора. на старого провайдере стоит SDSL модем в режиме Bridge и в него в режиме Router (с отключенным NAT и Firewall) включен WAN'ом WL-500gp и LAN подключен к отдельной карте "центрального" маршрутизатора.
для внутренних клиентов сети все работает бесподобно.
но возникли проблемы с внешними подключениями.
вот в этом и есть главная проблема.
хоть у провайдера и прописана маршрутизация, но получается, что при таком раскладе как у меня все клиенты, которые НЕ относятся к локальной сети провайдера, НЕ видят мою сеть!
если запустить tracert (traceroute) то они все доходят до wl-500gp(в данном случае) и на этом "застряют".
с начала я наезжал на провайдера SDSL, но тот отвечал, что у него все отлично пингуется и трассируется.
только потом я выяснил(или понял), что запрос приходит через сеть провайдера, а ответ ему отсылается через одного из ADSL провайдеров, т.е. по расписанным маршрутам.
как выйти из данной ситуации никак не разберусь.
буду очень признателен за высказанные мнения!
пусть проблема не относится прямо к оборудованию ASUS и тем более прошивкам Олега, но может у кого-то будут мысли, потому как я как-то в тупике.
все завертелось давно, почти 10 лет назад. тогда протянули себе выделенку с 2048к локального трафика провайдера и 64к внешнего.
купили у провайдера РЕАЛЬНЫЙ адресный пул и было все нормально.
но со временем появилась возможность ISDN 128k, а теперь и ADSL (c начала 256к, теперь безлимит 8М за $30 в месяц).
причем ADSL линий теперь ТРИ от разных провайдеров.
- выделенка осталась для получения и отправки почты (потому как 2М на отправку до сих еще никто не предоставляет) и локального трафика провайдера (очень хороший сервер фильмов, побагаче остальных и обновляется чаще)
- три ADSL линии используются для внешнего Интернета и для доступа опять же к локальным ресурсам провайдеров.
есть "центральный" маршрутизатор (Windows Server), на котором статическими маршрутами все сделано. т.е. прописаны локальные маршруты на каждого провайдера и также руками "поделена полоса пропускания" внешнего Интернета.
на всех ADSL провайдеров стоят ADSL модемы, которые как обычно с NAT, о они подключены каждый к отдельной сетевой карте "центрального" маршрутизатора. на старого провайдере стоит SDSL модем в режиме Bridge и в него в режиме Router (с отключенным NAT и Firewall) включен WAN'ом WL-500gp и LAN подключен к отдельной карте "центрального" маршрутизатора.
для внутренних клиентов сети все работает бесподобно.
но возникли проблемы с внешними подключениями.
вот в этом и есть главная проблема.
хоть у провайдера и прописана маршрутизация, но получается, что при таком раскладе как у меня все клиенты, которые НЕ относятся к локальной сети провайдера, НЕ видят мою сеть!
если запустить tracert (traceroute) то они все доходят до wl-500gp(в данном случае) и на этом "застряют".
с начала я наезжал на провайдера SDSL, но тот отвечал, что у него все отлично пингуется и трассируется.
только потом я выяснил(или понял), что запрос приходит через сеть провайдера, а ответ ему отсылается через одного из ADSL провайдеров, т.е. по расписанным маршрутам.
как выйти из данной ситуации никак не разберусь.
буду очень признателен за высказанные мнения!
Вероятно надо настраивать на роутере либо маскарадинг двусторонний, либо пре- построутинги.
Надо в запросах, проходящих через роутер, подменять source адрес, чтобы ответ роутеру вернулся и опять source поменять, чтобы отправителя запроса в тупик не ставить.
Либо как-то "центральному маршрутизатору" объяснить, что все пакеты с роутера отправлять ему-же, а не по приоритетному маршруту.
AndreyPopov
11-01-2009, 12:30
Вероятно надо настраивать на роутере либо маскарадинг двусторонний, либо пре- построутинги.
Надо в запросах, проходящих через роутер, подменять source адрес, чтобы ответ роутеру вернулся и опять source поменять, чтобы отправителя запроса в тупик не ставить.
Либо как-то "центральному маршрутизатору" объяснить, что все пакеты с роутера отправлять ему-же, а не по приоритетному маршруту.
маскарадинг, пре-роутинг и пост-роутинг - это в основном заморочки NAT - а его нет в данном случае.
а вот КАК объяснить "центральному маршрутизатору", чтобы он пакеты слал обратно по пути откуда пришел этот пакет?
маскарадинг, пре-роутинг и пост-роутинг - это в основном заморочки NAT - а его нет в данном случае.
а вот КАК объяснить "центральному маршрутизатору", чтобы он пакеты слал обратно по пути откуда пришел этот пакет?
А зафигарить например nginx в режиме реверс прокси (http://blog.kovyrin.net/2006/05/18/nginx-as-reverse-proxy/lang/ru/)?
Я сомневаюсь, что на Винде можно разрулить такую сложную маршрутизацию, ну например тегировать vlan на роутере и отслеживать в "центре" по тегу.
Мысль сырая, непродуманная, но предложу (пинайте, если что) - можно попробовать развернуть Asus на 180 градусов - т.е. пусть внутренняя сеть будет в WAN'е, а внешка - в LAN'е. И включить NAT - тогда для w2k3 все пакеты придут уже от Asusa и соотв. роутить их можно обратно достаточно просто. А asus раздаст обратно сам. Вопрос только в размерах NAT таблицы (кол-во сессий) на асусе.
AndreyPopov
11-01-2009, 23:09
Мысль сырая, непродуманная, но предложу (пинайте, если что) - можно попробовать развернуть Asus на 180 градусов - т.е. пусть внутренняя сеть будет в WAN'е, а внешка - в LAN'е. И включить NAT - тогда для w2k3 все пакеты придут уже от Asusa и соотв. роутить их можно обратно достаточно просто. А asus раздаст обратно сам. Вопрос только в размерах NAT таблицы (кол-во сессий) на асусе.
да дело не в ASUS тут как бы.
это "центральный" маршрутизатор отправляет ответы на запрос "не в том направлении".
говорят, что это называется Source Routing, но ключ реестра я прописал в винде DisableIPSourceRouting в "0".
только не помагает. выставил порядок binding (обращения к адаптерам) - тоже не помагает.
вот как заставить центральный машрутизатор отправлять ответ на запрос из внешней сети по пути, по которому этот внешний запрос пришел, а НЕ по тому, что прописан в таблице маршрутизации?
да дело не в ASUS тут как бы.
это "центральный" маршрутизатор отправляет ответы на запрос "не в том направлении".
говорят, что это называется Source Routing, но ключ реестра я прописал в винде DisableIPSourceRouting в "0".
только не помагает. выставил порядок binding (обращения к адаптерам) - тоже не помагает.
вот как заставить центральный машрутизатор отправлять ответ на запрос из внешней сети по пути, по которому этот внешний запрос пришел, а НЕ по тому, что прописан в таблице маршрутизации?
Я и говорю - Винда очень тупая, некоторые вещи невозможно сделать. На NIX-ах например такое на ура бы сделалось.
DisableIPSourceRouting - служит для блокировки уязвимости (http://www.microsoft.com/technet/security/bulletin/MS06-032.mspx)
Пишут, что вроде как должно работать (http://www.windowsreference.com/networking/disable-ip-source-routing-in-windows-server-2008-windows-vista/).
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es\Tcpip\Parameters
"DisableIPSourceRouting"=dword:0
AndreyPopov
12-01-2009, 14:19
Я и говорю - Винда очень тупая, некоторые вещи невозможно сделать. На NIX-ах например такое на ура бы сделалось.
DisableIPSourceRouting - служит для блокировки уязвимости (http://www.microsoft.com/technet/security/bulletin/MS06-032.mspx)
Пишут, что вроде как должно работать (http://www.windowsreference.com/networking/disable-ip-source-routing-in-windows-server-2008-windows-vista/).
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es\Tcpip\Parameters
"DisableIPSourceRouting"=dword:0
да это я уже сделал.
а как на *nix это сделать?
у винды тоже есть командная строка и утилита netsh - может по подобию получится слепить.
lll123lll
12-01-2009, 14:59
на винде не получится она всегда будет заворачивать ответ на дефолтный маршрут
там даже метрики толком не работают
зачем вам винда на PC роутере? поставьте туда например M0n0wall и радуйтесь жизни
хотя с вашими скоростями справится один WL500GP
на нем можно перенастроить порты чтоб было 4WAN 1LAN
только для полноценной работы с мультиван надо прошить DDWRT
входящие подключения метятся через connmark в соответствии с wan через который они пришли
потом помеченные пакеты заворачиваются на нужный wan через ip rule add fwmark в соответствии с этими метками
соответствующие рецепты легко нагуглить
но вы должны знать что такое iptables и iproute2
если не знаете то стоит начать отсюда (http://www.opennet.ru/docs/RUS/iptables/)
если желание настраивать не пропадет то все вполне реально
у меня работают три прова с локальными ресурсами и пр на asus500gP + asus3042h
две железки по 100$ с линухом на борту винду забыл как страшный сон причем две только потому что поца на 500gP на все не хватает т.к. скорости под сотку и на ddwrt не хочется переходить из-за wifi.
AndreyPopov
12-01-2009, 16:02
видать прийдется wl-500gp перепрофилировать.
тем более мне на нем нужен только маршрутизация
правда у меня еще есть 3Com Switch 4500 c Layer3 - надо глянуть как он относится к source routing?
да это я уже сделал.
а как на *nix это сделать?
у винды тоже есть командная строка и утилита netsh - может по подобию получится слепить.
Например в Убунте это настраивается не особо заморачиваясь (http://www.opennet.ru/cgi-bin/opennet/ks.cgi?mask=ubuntu%20linux%20route%20ifconfig).
да дело не в ASUS тут как бы.
Понятно, что дело не в ASUS. Binding тоже не поможет, и это понятно. Но мое решение, тем не менее, решить проблему малой кровью (без установки вместо w2k3 *nix), как мне кажется, может, т.к. в таком случае все пакеты в сторону центрального маршрутизатора будут из одной сети - даже маршрут прописывать не придется. А трансляцией займется как раз АСУС.
AndreyPopov
19-01-2009, 13:11
Например в Убунте это настраивается не особо заморачиваясь (http://www.opennet.ru/cgi-bin/opennet/ks.cgi?mask=ubuntu%20linux%20route%20ifconfig).
собственно поставил я DD-WRT, потому как настройки VLAN там прописываются через Web интерфейс.
скриптом запустил "расписание" маршрутизации, как и было у меня.
все работает.
сейчас буду пытаться настроить Source Routing.
пока возник идин вопрос.
как я понял по умолчанию доступны команды route add.
при установке iproute2 появляется возможность команд ip route add
ну по крайней мере команда ip route отвечает:
195.24.153.40/29 dev eth2 proto kernel scope link src 195.24.153.42
195.24.153.32/29 dev vlan1 proto kernel scope link src 195.24.153.34
195.24.153.56/29 dev vlan4 proto kernel scope link src 195.24.153.58
195.24.153.48/29 dev vlan3 proto kernel scope link src 195.24.153.50
195.24.153.232/29 dev wl0.2 proto kernel scope link src 195.24.153.236
195.24.153.240/29 dev wl0.1 proto kernel scope link src 195.24.153.244
195.24.153.0/27 dev vlan2 proto kernel scope link src 195.24.153.1
195.24.153.64/26 dev br0 proto kernel scope link src 195.24.153.68
и скрипт я сделал командами такого плана:
ip route add 78.25.8.242/32 via 195.24.153.49 dev vlan3
т.е. собственно вопрос в том, что для DD-WRT как я понял ставить пакет iproute2 НЕ надо - он там уже есть?????
в общем iproute2 в DD-WRT уже стоит.
нашел инструкцию пошаговую тут: http://lartc.org/howto/index.html
ну в общем все где-то понятно, только везде указывается путь где надо создавать дополнительные таблицы маршрутизации:
/etc/iproute2/rt_tables
такого пути в DD-WRT нет. но сами таблицы есть и где-то храняться, потому как
ip rule list выдает:
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
какие есть мысли по поводу пути, где хранится эта таблица, чтобы в нее добавить?
наверное решение здесь:
http://www.dd-wrt.com/phpBB2/viewtopic.php?p=79278#79278
попробую для своих четырех портов.
AndreyPopov
24-01-2009, 17:03
схема такая:
Internet <-> router wl-500gp <-> router central wl-500gp <- сеть с реальными IP адресами.
к центральному роутеру подключены подключены еще несколько провайдеров и руками сделана таблица load balancing.
уже практически все работает нормально.
даже написано правило, чтобы сам роутер пользовался руками сделаной таблицей load balancing с помощью интерфейса lo.
не получается пока сказать:
чтобы компы из сеть с реальными IP адресами пользовались руками сделаной таблицей load balancing, но при этом внешние запросы приходящие из Internet, чтобы возвращались через router wl-500gp
с правилами так все нормально и не сложилось.
ну и пришлось как в Айболите-66 - нормальные герои всегда идут в обход.
пришлось делать так:
каждому компьютеру в сети присвоил еще дополнительный IP адрес, но из другой подсети. интерфейсу роутера через ifconfig vlan0:0 тоже присвоил второй IP адрес.
и уже тогда воспользовалься правилами маршрутизации
- адреса из основной сети пользуются главной таблицей маршрутизации
- а адреса из новой подсети направлены на таблицу с ручной балансировкой нагрузки.
так все заработало как мне хотелось.
сперто здесь http://www.opennet.ru/base/net/adv_route_qos.txt.html
4. Advanced Routing.
Теперь я приведу несколько примеров, иллюстрирующих возможности
table-routing.
Для начала рассмотрим вариант простейшей маршрутизации по адресу src.
Предположим, у нас есть высокоскоростной и дорогой линк на провайдера
(xDSL) и медленный, но дешёвый линк по коммутируемуму доступу
(dial-up). Маршрут по умолчанию в основной таблице установлен на xDSL,
но мы хотим одну из машин внутренней сети направить в нашу медленную
связь, и освободить таким образом основной канал. Теперь мы создадим
для этой машины отдельную таблицу маршрутов, которую назовем Manager:
# echo 100 Manager >> /etc/iproute2/rt_tables
Далее создаем правило-селектор по адресу нашей выделенной машины,
чтобы маршрутизация для нее переходила в новую таблицу:
# ip rule add from 191.216.121.1 table Manager
Осталось добавить маршрут по умолчанию в таблицу Manager (там пока
пусто), и сбросить кэш маршрутов:
# ip route add default via 191.216.121.14 dev ppp2 table Manager
# ip route flush cache
Все готово. Здесь ppp2 - наш дешёвый линк. Конечно это можно было
сделать и не создавая отдельную таблицу маршрутов, это просто пример
работы с таблицами.
Теперь предположим, что нам надо направить в dial-up весь SMTP трафик,
идущий с внутреннего адреса. Используя iptables помечаем пакеты SMTP:
# iptables -t mangle -I PREROUTING -p tcp -s 10.0.0.1 --sport 25 -j MARK --set-mark 0x10
Маскарадим отмеченные пакеты, и отправляем их в таблицу Manager,
содержащую маршрут в ppp2:
# ip rule add fwmark 10 preference 200 nat 191.216.121.2 table Manager
LARTC-Destination-based-port-routing-multi-gateway wan (http://www.dslreports.com/forum/r22438489-LARTC-Destination-based-port-routing-multi-gatewaywan)
portaddress-forwarding-with-iptables-with-one-network-interface.-417225/ (http://www.linuxquestions.org/questions/linux-networking-3/portaddress-forwarding-with-iptables-with-one-network-interface.-417225/)
google (http://www.google.com/search?client=opera&rls=ru&q=iptables+forward+trafic+by+port+dst&sourceid=opera&ie=utf-8&oe=utf-8)
OTMOPO3OK
06-11-2009, 11:59
Всем доброго дня!
Имеется роутер wl-500w (прошивка последняя) с двумя подключенными провайдерами:
1. eth1 ip 77.239.196.17 gw 77.239.196.1
2. vlan1 ip 10.10.10.3 gw 10.10.10.1
Локалка: 192.168.1.0/24
Решил завернуть udp трафик идущий на порт 1194 в канал провайдера №2.
Создал таблицу 4 для второго провайдера
touch /etc/iproute2/rt_tables
ip route show table main | grep -v ^default \
| while read ROUTE ; do
ip route add table 4 $ROUTE
done
ip route add table 4 default via 10.10.10.1
ip route show table 4
77.239.196.1 dev eth1 scope link
192.168.1.0/24 dev br0 proto kernel scope link src 192.168.1.1
10.10.10.0/24 dev vlan1 proto kernel scope link src 10.10.10.3
77.239.192.0/20 dev eth1 proto kernel scope link src 77.239.196.17
127.0.0.0/8 dev lo scope link
default via 10.10.10.1 dev vlan1
Далее маркирую пакеты:
iptables -t mangle -A PREROUTING -p udp --dport 1194 -s 192.168.1.0/24 -j MARK --set-mark 4
Натим пакеты на втором интерфейсе:
iptables -t nat -A POSTROUTING -o vlan1 -j SNAT --to-source 10.10.10.3
Правим табицу маршрутизации №4 для маркированных пакетов:
ip rule add fwmark 4 table 4
ip rule show
0: from all lookup local
32765: from all fwmark 4 lookup 4
32766: from all lookup main
32767: from all lookup 253
Вроде все. Запускаем openvpn и tcpdump на интерфейсе №2
tcpdump -i vlan1
00:17:09.809660 IP 10.10.10.3.54816 > xxx-xx-251-80.pride-net.ru.1194: UDP, length: 42
00:17:09.885709 IP xxx-xx-251-80.pride-net.ru.1194 > 10.10.10.3.54816: UDP, length: 50
00:17:11.881966 IP 10.10.10.3.54816 > xxx-xx-251-80.pride-net.ru.1194: UDP, length: 42
00:17:11.956202 IP xxx-xx-251-80.pride-net.ru.1194 > 10.10.10.3.54816: UDP, length: 54
00:17:12.597098 arp who-has 10.10.10.1 tell 10.10.10.3
00:17:12.598064 arp reply 10.10.10.1 is-at 00:1e:be:de:e6:b7
00:17:13.909266 IP 10.10.10.3.54816 > xxx-xx-251-80.pride-net.ru.1194: UDP, length: 42
00:17:13.988404 IP xxx-xx-251-80.pride-net.ru.1194 > 10.10.10.3.54816: UDP, length: 54
00:17:15.959057 IP 10.10.10.3.54816 > xxx-xx-251-80.pride-net.ru.1194: UDP, length: 42
00:17:16.038802 IP xxx-xx-251-80.pride-net.ru.1194 > 10.10.10.3.54816: UDP, length: 54
00:17:18.008920 IP 10.10.10.3.54816 > xxx-xx-251-80.pride-net.ru.1194: UDP, length: 42
Соединение не устанавливается, пакеты уходят в верном направлении на интерфейс 2 провайдера и возвращаются, но только на интерфейс vlan1, но не дальше.
Запускаю снифер на br0
tcpdump -i br0 | grep 1194
00:19:45.674915 IP 192.168.1.15.54818 > xxx-xx-251-80.pride-net.ru.1194: UDP, length: 42
00:19:57.210260 IP 192.168.1.15.54818 > xxx-xx-251-80.pride-net.ru.1194: UDP, length: 42
00:19:59.510409 IP 192.168.1.15.54818 > xxx-xx-251-80.pride-net.ru.1194: UDP, length: 42
00:20:10.654456 IP 192.168.1.15.54819 > xxx-xx-251-80.pride-net.ru.1194: UDP, length: 42
00:20:12.920396 IP 192.168.1.15.54819 > xxx-xx-251-80.pride-net.ru.1194: UDP, length: 42
Пакеты уходят, но не возвращаются!
В чем косяк подскажите?:cool:
OTMOPO3OK
07-11-2009, 06:30
Все заработало, вот конфиг:)
Решил завернуть udp трафик идущий на порт 1194 в канал провайдера №2.
Создал таблицу 4 для второго провайдера
touch /etc/iproute2/rt_tables
ip route add table inet_adsl default via 10.10.10.
ip route show table inet_adsl
default via 10.10.10.1 dev vlan1
Далее маркирую пакеты:
iptables -t mangle -A PREROUTING -p udp --dport 1194 -s 192.168.1.0/24 -j MARK --set-mark 4
Натим пакеты на втором интерфейсе:
iptables -t nat -A POSTROUTING -o vlan1 -j SNAT --to-source 10.10.10.3
Правим табицу маршрутизации №4 для маркированных пакетов:
ip rule add fwmark 4 table inet_adsl
ip rule add from 192.168.1.0/24 table inet_adsl
ip rule show
0: from all lookup local
32764: from 192.168.1.0/24 lookup inet_adsl
32765: from all fwmark 4 lookup inet_adsl
32766: from all lookup main
32767: from all lookup 253
для балансировки соединений в большинстве случаев достаточно единственной команды
Пусть $IF1 будет именем первого интерфейса, а $IF2 -- именем второго.
Далее, $P1 это IP-адрес шлюза провайдера 1, а $P2 -- IP адрес шлюза провайдера 2.
ip route add default scope global nexthop via $P1 dev $IF1 weight 1 nexthop via $P2 dev $IF2 weight 1 и т.д.
если основной канал падает , то дефолтный маршрут с метрикой 0 уходит
все начинают ходить через дефолт с метрикой 1
не надо никаких демонов и пр.
снаружи есть доступ через оба WAN
Не получилось получить доступ из вне по второму WANу. Делал по Вашей инструкции, что-то не так. Вторым инетом служит комп с подключенным интернетом. Интернет ходит но роутер даже не пингуется (WAN2) со второго компа.
Что может быть?
AndreyPopov
14-07-2010, 13:38
вам нужна маршрутизация по источнику, для это надо воспользоваться возможностями iproute2
iproute add rule и так далее и сделать ДВЕ отдельных таблицы маршрутизации.
вам нужна маршрутизация по источнику, для это надо воспользоваться возможностями iproute2
iproute add rule и так далее и сделать ДВЕ отдельных таблицы маршрутизации.
Может я плохо объяснил, что мне нужно.
Нужна помощь в настройке связи между компьютером (ББ, стоит линукс Мандрива) и роутером WL500gp.
Инет ББ > (wlan2) >
Инет l2tp > (wlan0) > WL500gp < (br0) < Домашняя сеть ДС
Инет ходит нормально, но нужно видеть расшары на ББ, из ДС.
[admin@ASUS WL500gp root]$ ip route
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
10.10.10.2 10.21.68.1 255.255.255.255 UGH 40 0 0 vlan1
10.10.12.3 10.21.68.1 255.255.255.255 UGH 40 0 0 vlan1
94.45.64.34 192.168.3.8 255.255.255.255 UGH 40 0 0 vlan2
192.168.3.8 192.168.3.8 255.255.255.255 UGH 40 0 0 vlan2
10.0.0.28 10.21.68.1 255.255.255.255 UGH 40 0 0 vlan1
192.168.3.0 0.0.0.0 255.255.255.0 U 40 0 0 vlan2
192.168.1.0 0.0.0.0 255.255.255.0 U 40 0 0 br0
10.21.68.0 0.0.0.0 255.255.254.0 U 40 0 0 vlan1
10.0.0.0 10.21.68.1 255.0.0.0 UG 40 0 0 vlan1
10.0.0.0 10.21.68.1 255.0.0.0 UG 40 0 0 vlan1
127.0.0.0 0.0.0.0 255.0.0.0 U 40 0 0 lo
0.0.0.0 94.27.127.8 0.0.0.0 UG 40 0 0 ppp0
0.0.0.0 192.168.3.8 0.0.0.0 UG 40 0 0 vlan2
0.0.0.0 10.21.68.1 0.0.0.0 UG 40 0 0 vlan1
iptables-save
# Generated by iptables-save v1.2.7a on Tue Jul 13 09:30:44 2010
*nat
:PREROUTING ACCEPT [5562:365511]
:POSTROUTING ACCEPT [1751:105158]
:OUTPUT ACCEPT [1760:107120]
:VSERVER - [0:0]
-A PREROUTING -d 94.27.68.125 -j VSERVER
-A PREROUTING -d 10.21.69.241 -j VSERVER
-A PREROUTING -d 192.168.3.2 -j VSERVER
-A POSTROUTING -s ! 94.27.68.125 -o ppp0 -j MASQUERADE
-A POSTROUTING -s ! 10.21.69.241 -o vlan1 -j MASQUERADE
-A POSTROUTING -s 192.168.1.0/255.255.255.0 -d 192.168.1.0/255.255.255.0 -o br0 -j MASQUERADE
-A VSERVER -p tcp -m tcp --dport 8089 -j DNAT --to-destination 192.168.1.254:80
-A VSERVER -p udp -m udp --dport 51255 -j DNAT --to-destination 192.168.1.3:5125 5
-A VSERVER -p udp -m udp --dport 51300 -j DNAT --to-destination 192.168.1.8:5130 0
-A VSERVER -p udp -m udp --dport 59263 -j DNAT --to-destination 192.168.1.7:5926 3
-A VSERVER -p tcp -m tcp --dport 59263 -j DNAT --to-destination 192.168.1.7:5926 3
-A VSERVER -p tcp -m tcp --dport 51413 -j DNAT --to-destination 192.168.1.8:5141 3
-A VSERVER -p udp -m udp --dport 27272 -j DNAT --to-destination 192.168.1.4:2727 2
-A VSERVER -p tcp -m tcp --dport 51300 -j DNAT --to-destination 192.168.1.8:5130 0
-A VSERVER -p udp -m udp --dport 50711 -j DNAT --to-destination 192.168.1.4:5071 1
-A VSERVER -p tcp -m tcp --dport 50711 -j DNAT --to-destination 192.168.1.4:5071 1
-A VSERVER -p udp -m udp --dport 47197 -j DNAT --to-destination 192.168.1.4:4719 7
-A VSERVER -p udp -m udp --dport 59265 -j DNAT --to-destination 192.168.1.7:5926 5
-A VSERVER -p tcp -m tcp --dport 59265 -j DNAT --to-destination 192.168.1.7:5926 5
-A VSERVER -p tcp -m tcp --dport 33058 -j DNAT --to-destination 192.168.1.4:3305 8
-A VSERVER -p tcp -m tcp --dport 6000 -j DNAT --to-destination 192.168.1.8:6000
-A VSERVER -p tcp -m tcp --dport 8077 -j DNAT --to-destination 192.168.1.10:8077
-A VSERVER -p tcp -m tcp --dport 6000 -j DNAT --to-destination 192.168.1.8:6000
-A VSERVER -p tcp -m tcp --dport 9091 -j DNAT --to-destination 192.168.1.8:9091
-A VSERVER -p tcp -m tcp --dport 10000 -j DNAT --to-destination 192.168.1.8:1000 0
COMMIT
# Completed on Tue Jul 13 09:30:44 2010
# Generated by iptables-save v1.2.7a on Tue Jul 13 09:30:44 2010
*mangle
:PREROUTING ACCEPT [37449:4162632]
:INPUT ACCEPT [33894:3594506]
:FORWARD ACCEPT [3305:524753]
:OUTPUT ACCEPT [43593:31186134]
:POSTROUTING ACCEPT [47039:31750434]
COMMIT
# Completed on Tue Jul 13 09:30:44 2010
# Generated by iptables-save v1.2.7a on Tue Jul 13 09:30:44 2010
*filter
:INPUT DROP [3496:210987]
:FORWARD ACCEPT [638:82448]
:OUTPUT ACCEPT [43105:30758683]
:MACS - [0:0]
:SECURITY - [0:0]
:logaccept - [0:0]
:logdrop - [0:0]
-A INPUT -p tcp -m tcp --dport 51778:51779 -j ACCEPT
-A INPUT -m state --state INVALID -j DROP
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -m state --state NEW -j ACCEPT
-A INPUT -i br0 -m state --state NEW -j ACCEPT
-A INPUT -d 224.0.0.0/240.0.0.0 -p 2 -j ACCEPT
-A INPUT -d 224.0.0.0/240.0.0.0 -p udp -m udp ! --dport 1900 -j ACCEPT
-A INPUT -i ppp0 -m state --state NEW -j SECURITY
-A INPUT -p udp -m udp --sport 67 --dport 68 -j ACCEPT
-A INPUT -d 192.168.1.254 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 5122 --tcp-flags SYN,RST,ACK SYN -j ACCEPT
-A FORWARD -i br0 -o br0 -j ACCEPT
-A FORWARD -m state --state INVALID -j DROP
-A FORWARD -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -j TCPMSS --clamp-mss-to-pm tu
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i ! br0 -o ppp0 -j DROP
-A FORWARD -i ! br0 -o vlan1 -j DROP
-A FORWARD -i ! br0 -m state --state NEW -j SECURITY
-A FORWARD -m conntrack --ctstate DNAT -j ACCEPT
-A FORWARD -o br0 -j DROP
-A SECURITY -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -m limit --limit 1/sec -j RETURN
-A SECURITY -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -m limit --limit 1/sec -j RETURN
-A SECURITY -p udp -m limit --limit 5/sec -j RETURN
-A SECURITY -p icmp -m limit --limit 5/sec -j RETURN
-A SECURITY -j DROP
-A logaccept -m state --state NEW -j LOG --log-prefix "ACCEPT " --log-tcp-sequen ce --log-tcp-options --log-ip-options
-A logaccept -j ACCEPT
-A logdrop -m state --state NEW -j LOG --log-prefix "DROP " --log-tcp-sequence - -log-tcp-options --log-ip-options
-A logdrop -j DROP
COMMIT
AndreyPopov
14-07-2010, 14:50
вам надо делать ОТДЕЛЬНУЮ таблицу для КАЖДОГО интерфейса.
зайдите на форум DD-WRT и нгайдите там тему Dual/Triple WAN - там есть автоматизированные скрипты!
одной таблицей вы не обойдетесь - еще раз вам повторяю!
для кажого WAN должна быть СВОЯ таблица!
вот мой пример ЧЕТЫРЕХ провайдеров, которые подключены к одному WL-500GP.
IF0=eth1
IF1=eth0
IF2=eth2
IF3=eth3
IF4=eth4
P0_NET=195.24.153.64/27
P01_NET=195.24.153.96/27
P1_NET=195.24.153.32/29
P2_NET=195.24.153.0/27
P3_NET=195.24.153.48/29
P4_NET=195.24.153.56/29
IP0=195.24.153.68
IP01=195.24.153.100
IP1=195.24.153.34
IP2=195.24.153.1
IP3=195.24.153.50
IP4=195.24.153.58
P1=195.24.153.33
P2=195.24.153.2
P3=195.24.153.49
P4=195.24.153.57
ip rule add from 195.24.153.5 table 50 prio 500
ip route flush table 50
ip route add default via $P1 table 50
ip route add $P0_NET dev $IF0 table 50
ip route add $P01_NET dev $IF0 table 50
ip route add $P1_NET dev $IF1 table 50
ip route add $P2_NET dev $IF2 src $IP2 table 50
ip route add $P3_NET dev $IF3 table 50
ip route add $P4_NET dev $IF4 table 50
ip route add 127.0.0.0/8 dev lo table 50
ip route flush cache
195.24.153.5 - это адрес роутера, за которым находится домашняя сеть.
а далее у меня руками разбросан "load balancing" по всем провайдерам table 50
116.0.0.0/6 via 195.24.153.57 dev eth4
120.0.0.0/6 via 195.24.153.2 dev eth2
132.0.0.0/6 via 195.24.153.49 dev eth3
140.0.0.0/6 via 195.24.153.2 dev eth2
136.0.0.0/6 via 195.24.153.57 dev eth4
148.0.0.0/6 via 195.24.153.57 dev eth4
144.0.0.0/6 via 195.24.153.49 dev eth3
156.0.0.0/6 via 195.24.153.49 dev eth3
152.0.0.0/6 via 195.24.153.2 dev eth2
164.0.0.0/6 via 195.24.153.2 dev eth2
160.0.0.0/6 via 195.24.153.57 dev eth4
180.0.0.0/6 via 195.24.153.57 dev eth4
176.0.0.0/6 via 195.24.153.49 dev eth3
184.0.0.0/6 via 195.24.153.2 dev eth2
204.0.0.0/6 via 195.24.153.2 dev eth2
200.0.0.0/6 via 195.24.153.2 dev eth2
212.0.0.0/6 via 195.24.153.57 dev eth4
208.0.0.0/6 via 195.24.153.49 dev eth3
220.0.0.0/6 via 195.24.153.49 dev eth3
216.0.0.0/6 via 195.24.153.49 dev eth3
default via 195.24.153.33 dev eth0
P.S. у меня на роутере этом Firewall/NAT выключены, но на DD-WRT скрипты лежат с поддержкой Firewall/NAT и автоматическим load balancing
вам надо делать ОТДЕЛЬНУЮ таблицу для КАЖДОГО интерфейса.
зайдите на форум DD-WRT и нгайдите там тему Dual/Triple WAN - там есть автоматизированные скрипты!
одной таблицей вы не обойдетесь - еще раз вам повторяю!
для кажого WAN должна быть СВОЯ таблица!
Спасибо за совет, попробую разобраться, может пример есть, буду признателен.
MrGalaxy
05-05-2011, 19:52
вам нужна маршрутизация по источнику, для это надо воспользоваться возможностями iproute2
iproute add rule и так далее и сделать ДВЕ отдельных таблицы маршрутизации.
А как это сделать?
В мануале по iproute2 сказано
4.2.1. Раздельный доступ
Первый вопрос заключается в том, как организовать маршрутизацию таким образом, чтобы ответы на запросы, приходящие через определенного провайдера, скажем ровайдера 1, уходили через того же провайдера.
Давайте определим некоторые переменные. Пусть $IF1 будет именем первого интерфейса (if1 на рисунке), а $IF2 -- именем второго. Тогда $IP1 будет IP адресом $IF1 , а $IP2 -- IP адресом $IF2 . Далее, $P1 это IP-адрес шлюза провайдера 1, а $P2 -- IP адрес шлюза провайдера 2. Наконец, $P1_NET это IP сеть, к которой принадлежит $P1 , а $P2_NET -- сеть, к которой принадлежит $P2 .
Создадим две дополнительные таблицы маршрутизации, скажем T1 и T2. Добавим их в файл /etc/iproute2/rt_tables. Теперь можно настроить эти таблицы следующими командами:
ip route add $P1_NET dev $IF1 src $IP1 table T1
ip route add default via $P1 table T1
ip route add $P2_NET dev $IF2 src $IP2 table T2
ip route add default via $P2 table T2На роутере нет файла /etc/iproute2/rt_tables. А вот, скажем, на Убунте есть.
The Miron, спасибо за ответ, уже легче. Зря только в эту ветку перенесли, вопрос относится не только к WL500gP-v.2.
AndreyPopov
22-10-2012, 12:41
- есть четыре провайдера
- есть центральный роутер x86 OpenWRT Kamikaze 8.09.02, на котором реализован multi-wan с маршрутизацией по источнику и Load balncing по правилам.
- у всех провайдеров PPPoE поднято на роутерах asus wl-5xx
- роутеры asus wl-5xx подключены к центральному роутеру x86 OpenWRT
- на двух стоит прошивка энтузиастов, на двух DD-WRT
в общем-то все работает без особых проблем.
но есть некоторые "непонятности", которые создают некоторые неудобства.
все началось с непонятных проблем по проброске портов, но там сошлось все вместе:
а) глючащий ДСЛ модем в режиме моста
б) провайдер блокировавший спам
в) данная проблема по Source Routing
сразу оговорюсь, что проблема не в центральном роутере x86 OpenWRT и его скриптах. в нем стоят одинаковые сетевые карты и для каждого интерфейса прописана таблица маршрутизации. скрипты проверены и перепроверены!
проблема в том, что роутеры asus wl-5xx с разной прошивкой по разному взаимодействуют с центральным роутером x86 OpenWRT, в чем это заключается:
- при пинге с роутеров с прошивкой энтузиастов на адрес внутренней сети за центральным роутером время задержки можете доходить до 100мс, при пинге с роутеров DD-WRT задержка в среднем 1мс
- по команде traceroute на адрес внутренней сети за центральным роутером вывод ответа может задержаться на 15-60с на роутерах с прошивкой энтузиастов, на роутерах DD-WRT ответ виден практически мгновенно.
WAN1 (wl-500gpv1 1.9.2.7-rtn):
[admin@cs-trifle root]$ ip route
10.198.0.1 dev ppp0 proto kernel scope link src 85.198.188.40
195.24.153.32/29 dev br0 proto kernel scope link src 195.24.153.33
195.24.153.0/24 via 195.24.153.34 dev br0 metric 1
10.51.0.0/16 dev vlan1 proto kernel scope link src 10.51.0.13
127.0.0.0/8 dev lo scope link
default via 10.198.0.1 dev ppp0
WAN2 (wl-500W DD-WRT):
root@cs-urktel:~# ip route
195.5.5.202 dev ppp0 scope link
195.5.5.202 dev ppp0 proto kernel scope link src 82.207.89.70
195.24.153.0/27 dev br0 proto kernel scope link src 195.24.153.2
195.24.153.0/24 via 195.24.153.1 dev br0
127.0.0.0/8 dev lo scope link
default via 195.5.5.202 dev ppp0
WAN3 (wl-500gpv2 1.9.2.7-rtn):
[admin@csoptima8 root]$ ip route
195.248.176.231 dev ppp0 proto kernel scope link src 78.25.8.242
195.24.153.48/29 dev br0 proto kernel scope link src 195.24.153.49
195.24.153.0/24 via 195.24.153.50 dev br0 metric 1
169.254.0.0/16 dev vlan1 proto kernel scope link src 169.254.130.131
127.0.0.0/8 dev lo scope link
default via 195.248.176.231 dev ppp0
WAN4 (wl-520gu DD-WRT):
root@csoptima4:~# ip route
195.24.153.56/29 dev br0 proto kernel scope link src 195.24.153.57
195.24.153.0/24 via 195.24.153.58 dev br0
127.0.0.0/8 dev lo scope link
у этого провайдера сейчас обрыв провода, потому нет сессии PPPoE, потому как не с этим все же проблема.
traceroute:
[admin@cs-trifle root]$ traceroute 195.24.153.67
traceroute to 195.24.153.67 (195.24.153.67), 30 hops max, 38 byte packets
1 195.24.153.34 (195.24.153.34) 0.468 ms 1.074 ms 0.864 ms
2 195.24.153.67 (195.24.153.67) 1.447 ms 0.959 ms 1.097 ms
[admin@cs-trifle root]$
root@cs-urktel:~# traceroute 195.24.153.67
traceroute to 195.24.153.67 (195.24.153.67), 30 hops max, 38 byte packets
1 cs-central-router.computersystemsltd.com (195.24.153.1) 1.148 ms 1.265 ms 1.000 ms
2 exchange.computersystemsltd.com (195.24.153.67) 0.891 ms * 0.923 ms
[admin@csoptima8 root]$ traceroute 195.24.153.67
traceroute to 195.24.153.67 (195.24.153.67), 30 hops max, 38 byte packets
1 195.24.153.50 (195.24.153.50) 0.429 ms 1.354 ms 0.351 ms
2 195.24.153.67 (195.24.153.67) 1.291 ms 1.301 ms 1.192 ms
root@csoptima4:~# traceroute 195.24.153.67
traceroute to 195.24.153.67 (195.24.153.67), 30 hops max, 38 byte packets
1 cs-central-router.computersystemsltd.com (195.24.153.58) 0.576 ms cs-central-router.computersystemsltd.com (195.24.153.58) 0.428 ms 0.421 ms
2 exchange.computersystemsltd.com (195.24.153.67) 1.808 ms * 0.636 ms
Fast Deer
21-02-2013, 10:40
Здравствуйте!
Собственно сабж. Подробности:
на своем WL500W поднял второй WAN (W2) с локалкой от второго прова (статик IP, vlan1), прописал маршрут. Проверил - пакеты ходят во вторую сеть (tracert сеть 2го прова), но интернет по дефолту настроен на основного прова (WAN1, PPPoE) и соответственно, все ходят через него, а там канал не очень широкий. Мне нужно завернуть трафик с определенных машин моей локалки (по IP адресу) через W2, а также по определенным портам оставить на основном WAN (W1) - это нужно для доступа некоторые ресурсы провов.
Также хотелось бы на всякий случай (при падении какого нить канала) переключать (переключение вручную) основного прова для всех компов моей локалки.
Как это можно реализовать? Если нужно более подробно, то подробности выложу в тему, но IMHO, можно обойтись и переменными - нужные значения подставлю сам.
Те кто может помочь - пишите в личку, плиз. Отвечаю не сразу.
AndreyPopov
25-05-2013, 13:28
Несколько провайдеров, source routing, маркирование пакетов iptables и Windows - внешний доступ к внутренним ресурсам через нескольких провайдеров
думаю на сегодня, когда есть возможность подключить нескольких провайдеров, чтобы:
- иметь резервный канал
- увеличить пропускную способность
и другие варианты этих двух пунктов, многих интересует этот вопрос.
также одной из задач в таких условиях является внешний доступ к внутренним ресурсам вашей со всех провайдеров.
если речь идет о системах на базе Linux, то широкие возможности пакет iproute2 по настройке нескольких таблиц маршрутизации на основе разных правил и в том числе маршрутизация по источнику (source routing), использование маркировки пакетов силами iptables для формирования этих правил - в общем на системах Linux возможностей маршрутизации на любой вкус.
но когда дело доходит до Windows, то тут даже все обилие возможностей пакета iproute2/iptables просто убивается!
и так, какова моя ситуация:
исторически сложилось так, что у меня четыре провайдера
на каждого провайдера стоит роутер(Linux) с поднятой сессией PPPoe
эти четыре роутера подключены к центральному роутеру(Linux), который занимается балансировкой трафика
за центральным роутером находится офисная сеть и сервера - все Windows/Windows Server
P1 --R1---\
\ ____________
\----| |
P2 --R2------------| central |
| balansing |-------- office and servers
P3 --R3------------| router |
/----|____________|
/
P4 --R4---/
и если с балансировкой трафика, "заворачиванием трафика" на нужного провайдера ( в случае к примеру когда провайдер предоставляет бесплатный почтовый ящик с доступом у нему через этого провайдера) - все было достаточно просто, то с внешним доступом к внутренним серверам пришлось повозиться и достаточно долго.
были перепробованы все методы начиная:
- с source routing
- маркировка пакетов с помощью iptables -j MARK --set-mark xx
- маркировка пакетов с помощью iptables -j CONNMARK --set-mark xx
- маркировка пакетов с помощью iptables -j TOS --set-tos xx
но дело в том, что Windows принимая IP (TCP/UDP) пакет просто игнорирует все выставленные в пакетах приоритеты и маркеры и соответственно в ответ высылает "девственно" чистый пакет. единственное, что умеет делать Windows/Windows Server это маркировать заголовок пакета приоритетом TOS, с помощью службы QoS. но следует заметить, что и это работает далеко не всегда, потому как драйвера не всех сетевых карт поддерживают эту функцию.
решение было найдено таким путем:
- на каждом сервере, доступ к которому нужен был извне к основному адресу было добавлено еще по четыре дополнительных адреса (по одному на каждого провайдера).
скажем так у - у сервера основной адрес 192.168.1.254, ему на тот же интерфейс добавили 192.168.1.241, 192.168.1.242, 192.168.1.243, 192.168.1.244
- в пробросе портов Virtual Server на каждом проутере был прописан на свой адрес:
P1 --R1 -> 192.168.1.241
P2 --R2 -> 192.168.1.242
P3 --R3 -> 192.168.1.243
P4 --R4 -> 192.168.1.244
- на центральном роутере созданы дополнительные таблицы маршрутизации:
ip route add from 192.168.1.241 table 1
ip route add default via R1 table 1
ip route add from 192.168.1.242 table 2
ip route add default via R2 table 2
ip route add from 192.168.1.243 table 3
ip route add default via R3 table 3
ip route add from 192.168.1.244 table 4
ip route add default via R4 table 4
вот в такой конфигурации работает и балансировка и внешний доступ от каждого провайдера.
ryzhov_al
25-05-2013, 13:57
Форум посвящён домашним роутерам ASUS.
Какие нафиг office and servers?!
AndreyPopov
25-05-2013, 14:52
Форум посвящён домашним роутерам ASUS.
Какие нафиг office and servers?!
а типа сейчас дома ни укого не может быть двух провайдеров и нет домашнего вэб сервера?
когда вэб сервер поднят на флэшке подключенной к самому роутеру - то особых проблем не возникает.
а вот когдасервер находится за роутером и на нем стоит винда - вот тогда начинается самое интересное.
а роутеры эти давно не домашние, они относятся к категории SOHO - Small Office & Home Office
и этот топик адресован именно туда.