Page 1 of 3 123 LastLast
Results 1 to 15 of 45

Thread: Маршрутизация по источнику (Source Routing) на роутере

  1. #1
    Join Date
    May 2006
    Location
    Екатеринбург
    Posts
    182

    Exclamation Маршрутизация по источнику (Source Routing) на роутере

    Добил таки маршрутизацию по источнику.

    Дано: провайдер 1 подключен через ASDL модем через PPPoE. Настройки через веб интерфейс. IP адрес внешний, динамический.
    Провайдер 2: ethernet, статический внешний адрес. Его сеть используется для поступа ко всему и-нету, когда не подключен провайдер 1, и для доступа к некоторым сетям, иначе.

    Переводим один LAN порт в WAN:
    Code:
    nvram set vlan0ports="2 3 4 5*"
    nvram set vlan2ports="1 5*"
    nvram set vlan2hwname=et0 
    nvram commit
    reboot
    В файл post-boot заносим настройку для провайдера 2:
    Code:
    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, со строками
    Code:
    server=xxx.xxx.xxx.xxx
    server=xxx.xxx.xxx.xxx
    - где xxx.xxx.xxx.xxx IP адреса DNS серверов провайдера 2.


    Настройка NAT провайдера 2 и маршрутизации по источнику для провайдера 1.
    В файл post-firewall заносим:

    Code:
    # настройка 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.

    После этого с роутером можно соединяться извне по любому из двух адресов, а доступ изнутри независимо регулировать основной таблицей маршрутизации.
    Last edited by TVadim; 04-02-2008 at 06:45.

  2. #2

    Virtual Server через 2wan одновременно

    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 на сервере

    мне к сожалению не подходит т.к. 192.168.1.2 это wan еще одного роутера и он не умеет держать на нем второй IP

    Можно ли сделать так, чтобы весь трафик по порту 3777 уходил на wan2 , а весь трафик по 3999 на wan1 , чтобы ответ сервера заворачивался на правильный wan?
    Last edited by lll123lll; 07-10-2008 at 10:19.

  3. #3
    Join Date
    May 2007
    Location
    Истра
    Posts
    1,246
    Что-то мало чего понятно... Нарисуйте что ли картинку или опишите подробно, какие есть устройства, как они соединены и на каких интерфейсах какие адреса.

  4. #4
    вот схема - цель одновременный доступ к терминалу через трех провайдеров
    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 описанного тут
    Attached Images Attached Images  

  5. #5
    Join Date
    May 2006
    Location
    Екатеринбург
    Posts
    182
    Здесь http://wl500g.info/showpost.php?p=80908&postcount=461 описан частный случай настройки маршрутизации по источнику для двух провайдеров. Может поможет настроить по аналогии.

  6. #6
    маршрутизация по источнику
    это то с чего я начал - не работает
    повторил конфу из ссылки один к одному - не работает
    вернее работает, но точно так-же
    заворачивает ответы в сторону дефолтного маршрута
    на какой wan этот маршрут указывает, на тот wan и уходят ответы сервера
    соответственно только с этого wan и возможно подключение
    в RX3042H(по мимо того , что он нормально разруливает подключение с обоих wan) есть настройка заворачивать весь трафик по определенному порту на конкретный wan
    а там ядро 2.4.18 - значит и на 500gPV1 с его 2.4.20 это возможно
    вот как бы завернуть весь трафик по 3777 только на vlan2 ?
    т.е. маршрутизация не по ip а по порту

    в указанной в первом посте ссылке трафик заворачивается по ip для этого серверу дается два адреса свой для каждого wan
    у меня нет возможности задать разные адреса т.к. сервера находятся в другой локалке , но есть возможность дать разные порты
    отсюда идея по аналогии завернуть трафик по определенному порту на определенный wan чтобы он не заворачивался по дефолту...

  7. #7
    Join Date
    May 2006
    Location
    Екатеринбург
    Posts
    182
    В примере, который я привел выше, ответы уходят туда откуда пришли. Это точно работает. Но это внутри одного хоста, где можно пометить пакеты интерфейсом, с которого они пришли. В случае, когда пакет уходит в виртуальный сервер, тут сложнее, надо отслеживать соединения. Реализовано это или нет, я не знаю.

  8. #8
    в том то и дело , что ответ от виртуального сервера идет с источником 192.168.1.2
    конструкция
    Code:
    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)

    конструкцию с маркировкой пакетов
    Code:
    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
    и сделал роутинг по источнику
    Code:
    #Пробросить порт
    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 инфы нет,да и вообще по нему инфы не густо)

  9. #9
    Join Date
    Feb 2008
    Location
    Moscow, Tver
    Posts
    3,962
    Quote Originally Posted by lll123lll View Post
    в том то и дело , что ответ от виртуального сервера идет с источником 192.168.1.2
    А это или это не пробовали?

  10. #10
    эти замороченные скрипты
    не решают траблу с одновременным доступом через несколько WAN внутрь сети - какой wan активен по дефолту с того и заходи
    а скрипт ток меняет этот дефолт

    у меня все по простому
    настроен L2TP (который кста этими скриптами не потдерживается) стандартно через web морду
    к первому lan подключен ADSL модем в режиме роутера,что позволяет использовать на втором WAN статический адрес без заморочек
    в post-boot
    Code:
    #поднимается второй интерфейс
    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
    Code:
    #разрешаю вирт сервер через 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 остался живой ,
    продолжив работать через канал стрима .
    что называется даже глазом не моргнул , адрес остался прежний
    пинговался извне и заходил на него терминалом
    только транспортом теперь служила не корбиновская локалка , а стримовский модем...

  11. #11
    Quote Originally Posted by lll123lll View Post
    если основной канал падает , то дефолтный маршрут с метрикой 0 уходит
    все начинают ходить через дефолт с метрикой 1
    не надо никаких демонов и пр.
    снаружи есть доступ через оба WAN
    доступ к рутеру, или скажем вебсерверу висящщему на адресе 192.168.1.3 ?

  12. #12
    таки да в олеговской прошивке не работает и не только у меня
    не удается создать маршрутизацию по порту
    хотя вот не очень понимаю как другой девайс 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 заработком

  13. #13
    Join Date
    Nov 2006
    Location
    Russia, Moscow
    Posts
    3,640
    Quote Originally Posted by lll123lll View Post
    не удается создать маршрутизацию по порту
    хотя вот не очень понимаю как другой девайс 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. Я уже писал в начале, что поддерживать функционал "под ключ" я не в состоянии.

  14. #14
    хм ... я вроде никого не призывал насчет оперативно нулей пр... да и проблем у меня нет поскольку с этой задачей вполне себе справляется rx3042h
    просто хотел указать на ошибку в прошивке
    "не работают правила маршрутизации ip rule add fwmark..."
    и рассказал пример для чего может понадобится
    в расчете на энтузиазм
    если не исправлять ошибки то зачем вообще тогда новая прошивка чтобы новых добавить?

    по сабжу
    откатился на старую прошивку самопроизвольные переключения каналов прекратились
    смотрю через udpxy пробовал vlc 0.9.3/0.9.5/0.9.7
    провайдер корбина

  15. #15
    Join Date
    Nov 2006
    Location
    Russia, Moscow
    Posts
    3,640
    Quote Originally Posted by lll123lll View Post
    хм ... я вроде никого не призывал насчет оперативно нулей пр... да и проблем у меня нет поскольку с этой задачей вполне себе справляется rx3042h
    просто хотел указать на ошибку в прошивке
    "не работают правила маршрутизации ip rule add fwmark..."
    и рассказал пример для чего может понадобится
    в расчете на энтузиазм
    если не исправлять ошибки то зачем вообще тогда новая прошивка чтобы новых добавить?
    Мда, видимо ты никогда не занимался поддержкой хоть какого-нибудь проекта. Попробую объяснить еще доступнее - вот ты не знаешь linux, и, судя по письмам и не хочешь знать. А я не знаю iptables на нормальном уровне. Поэтому оценить корректность твоего примера не могу, а по тем ссылкам, что ты приводил, совершенно другие правила! Вот и получается что ты сообщаешь об ошибке в стиле юзера "а у меня в подвале стук", вместо того, чтобы привести гарантированно корректный тестовый пример
    И про ipt_ROUTE не смог ничего ответить, зачем он нужен с текущей версией ядра. Обычно, на энтузиазме помогают либо, когда знают точный ответ, либо когда человек прикладывает усилия сам. Первого нет у меня, а второго я не вижу у тебя.

    по сабжу
    откатился на старую прошивку самопроизвольные переключения каналов прекратились
    смотрю через udpxy пробовал vlc 0.9.3/0.9.5/0.9.7
    провайдер корбина
    Скорее всего это связано с новой версией udpxy, если будут еще жалобы, верну старую - Chipmunk6.

Page 1 of 3 123 LastLast

Similar Threads

  1. Broadcom & Asus Source
    By NKZ in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 0
    Last Post: 07-07-2007, 13:54

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •