Два провайдера без балансировки

Post new topic   Reply to topic    DD-WRT Forum Index -> Использование и установка DD-WRT
Author Message
Ziggy1941
DD-WRT Novice


Joined: 26 Oct 2015
Posts: 18

PostPosted: Mon Oct 26, 2015 8:17    Post subject: Два провайдера без балансировки Reply with quote
Аппарат Netgear R7000.

Прошивка:
root@Ziggy's DD-WRT:~# uname -a
Linux Ziggy's DD-WRT 3.10.80 #389 SMP Thu Jun 18 22:32:27 CEST 2015 armv7l GNU/Linux

Есть два провода от двух провайдеров. У первого - выход в инет через L2TP, у второго прямой белый ай-пи.

Далее есть две Wi-Fi сети с разными клиентами. Охото реализовать схему, чтобы клиенты одно сети ходили в инет через первого провайдера, а клиенты второй сети соответственно через второго провайдера.

Что делаю.

1. Настраиваю через веб-интерфейс L2TP подключение к первому провайдеру.
2. На интерфейс br0 вешаю внутренний адрес 192.168.55.1 с dhcp.
3. Создаю сетку wl0, бриджую ее с br0.

Для клиентов одной беспроводной сети все в порядке, все работает.

Далее начинаются заморочки.

1. Создаю новый unbriged vlan - vlan3. Вешаю на него белый ай-пи из сети второго провайдера.
2. Ассоциирую с vlan3 выделенный порт - port1. Втыкаю в него провод от второго провайдера. Хотелось бы чтобы на L2 уровне сети провайдеров друг друга не видели.
3. Создаю br1. Вешаю на него внутренний адрес 192.168.56.1 со вторым dhcp.
4. Создаю вторую беспроводную сеть wl0.1. Бриджую ее с br1.

В итоге клинеты второй беспроводной сети могут подключиться и получить внутренний ай-пи. Дело осталось за выходом в инет именно через второго провайдера.

Предполагаю, что тут можно использовать source based routing? Т.ч. скриптик типа вот такого?

Code:
/jffs/routing.sh:
#!/bin/sh
##########

# убираем действующий дефолтный маршрут, иначе
# выдает ошибку при добавлении альтернативного
ip route delete default

# создаем для маршрутизации через второго провайдера
# таблицу и прописываем альтернативный дефолт
ip rule add from 192.168.56.0/24 table 200
ip route flush table 200
ip route add default via WAN2_GW_IP dev vlan3 table 200

# возвращаем основной дефолт для первого провайдера
ip route add default via WAN1_GW_IP dev ppp0
ip route flush cache

exit0


Далее опять не совсем понимаю как правильно включить NAT для второго провайдера? Что то типа такого?

Code:
/jffs/firewall.sh:
#!/bin/sh
##########

iptables -A PREROUTING -t nat -p icmp -d WAN2_GW_IP -j DNAT --to 192.168.56.1

iptables -A PREROUTING -t nat --dest WAN2_GW_IP -j TRIGGER --trigger-type dnat

iptables -A FORWARD -i vlan4 -o br2 -j TRIGGER --trigger-type in
exit 0


Такая схема вообще должна работать? Подскажите плз как правильно все до конца донастроить?
Sponsor
vasek00
DD-WRT Guru


Joined: 06 Nov 2010
Posts: 3312

PostPosted: Mon Oct 26, 2015 10:46    Post subject: Re: Два провайдера без балансиров Reply with quote
По умолчанию у вас есть br0 в котором все LAN+wi-fi, зачем что-то
Code:
3. Создаю сетку wl0, бриджую ее с br0.


По умолчанию все новые интерфейсы будут развязаны между собой.

Вы создали новый интерфейс vlan3 к нему подключили провайдера с белым IP.
По поводу br1 зачем его делать br1 если новый wi-fi и так имеет имя сетевого интерфейса (посмотреть через ifconfig) или через WEB GUI так же можно IP присвоить (Network Configuration - Unbridged и тут же есть Masquerade / NAT - Enable) это про новый wi-fi. Так же управление данным интерфейсом появиться на http://192.168.1.1/Networking.asp в окне Network Configuration с нужным именем, в окне ниже Multiple DHCP Server делаем настройки и в результате чего, так как DHCP и DNSMasq в одном флаконе, то получаем запись в конфиге для DNSMasq dhcp-option = ...3,...:
Code:
interface=br0,[новый_wi-fi]
...
dhcp-option=[новый_wi-fi],3,[его_IP]
...

для чего все это да для того чтоб можно было воспользоваться такой командой :
Code:
dhcp-option=br0,3,[IP_шлюза1]
dhcp-option=[новый_wi-fi],3,[IP_шлюза2]

клиенты помимо IP могут получать и разные IP шлюза в зависимости к какой сети подключены.
http://192.168.1.1/Services.asp окно с DNSMasq можно добавлять опции в окне "Additional DNSMasq Options"

Далее так как подключен второй провайдер на vlan3 то естественно :
Code:
iptables -t nat -I POSTROUTING 1 -o vlan3 -j SNAT --to-source [IP_данного_интерфейса]


Вам необходимо будет с созданного wi-fi дать разрешения на vlan3, тогда любой клиент данной wi-fi будет иметь доступ только к vlan3.

Примечание :
переменная из "nvram" берется через "get" и тогда имеет вид $(nvram get имя_переменной)
Ziggy1941
DD-WRT Novice


Joined: 26 Oct 2015
Posts: 18

PostPosted: Mon Oct 26, 2015 12:07    Post subject: Re: Два провайдера без балансиров Reply with quote
vasek00 wrote:
По умолчанию у вас есть br0 в котором все LAN+wi-fi, зачем что-то

Да верно, тут все само собой так и получилось.

Quote:
Вы создали новый интерфейс vlan3 к нему подключили провайдера с белым IP.
По поводу br1 зачем его делать br1 если новый wi-fi и так имеет имя сетевого интерфейса (посмотреть через ifconfig) или через WEB GUI так же можно IP присвоить (Network Configuration - Unbridged и тут же есть Masquerade / NAT - Enable) это про новый wi-fi.

Я тоже так сначала хотел сделать. А потом подумал, что вполне возможно беспроводных сетей будет больше чем одна для каждого провайдера (например одна в диапазоне 2ГГц и вторая - в 5 ГГц). При таком раскладе я так понимаю бриджи как раз и нужны?

Quote:
клиенты помимо IP могут получать и разные IP шлюза в зависимости к какой сети подключены.

Все верно, я про это не забыл. У меня клиенты в зависимости от сетки получают нужные шлюзы и ДНСы.

Quote:
Далее так как подключен второй провайдер на vlan3 то естественно :
Code:
iptables -t nat -I POSTROUTING 1 -o vlan3 -j SNAT --to-source [IP_данного_интерфейса]

Это собственни и есть все включение NAT? Вводить в окне Administration / Commands / Firewall?

Quote:
Вам необходимо будет с созданного wi-fi дать разрешения на vlan3, тогда любой клиент данной wi-fi будет иметь доступ только к vlan3.

Можно тут чуть подробнее? Что за разрешения имеются в виду? ip rule add ...?
Ziggy1941
DD-WRT Novice


Joined: 26 Oct 2015
Posts: 18

PostPosted: Mon Oct 26, 2015 12:48    Post subject: Re: Два провайдера без балансиров Reply with quote
Пробую в Administration / Commands / Firewall вот такие команды добавлять (yyy.xxx это я только тут заменил, чтоб не светить реальные адреса )):

ip route delete default
ip rule add from 192.168.56.0/24 table 200
ip route flush table 200
ip route add default via 92.54.yyy.xxx dev vlan3 table 200
ip route add default via 77.223.yyy.ххх dev ppp0
ip route add 10.0.0.1 via 92.54.yyy.xxx dev vlan3
ip route flush cache
iptables -t nat -I POSTROUTING 1 -o vlan3 -j SNAT --to-source 92.54.yyy.ххх

После ребута не вижу никаких изменений в таблице роутинга ( Никакого второго дефолтного маршрута не появляется.

И что еще смущает вот эти команды ничего не показывают:

ip route list table table 200
ip rule show

Статичный маршрут "ip route add 10.0.0.1" заработал, но только с самого роутера. С клиентов не идет, видимо NAT все же не включился.
vasek00
DD-WRT Guru


Joined: 06 Nov 2010
Posts: 3312

PostPosted: Mon Oct 26, 2015 13:08    Post subject: Re: Два провайдера без балансиров Reply with quote
Большая часть функций ip route у меня пропала уже после релиза 17201.
Так же какие либо изменения в router/iproute2/ip датированы в релизе 18762/4years и в iproute в релизе 19925/3years.

Что-то у вас все как-то сложно.
Ziggy1941
DD-WRT Novice


Joined: 26 Oct 2015
Posts: 18

PostPosted: Mon Oct 26, 2015 13:26    Post subject: Re: Два провайдера без балансиров Reply with quote
vasek00 wrote:
Большая часть функций ip route у меня пропала уже после релиза 17201.
Так же какие либо изменения в router/iproute2/ip датированы в релизе 18762/4years и в iproute в релизе 19925/3years.

Что-то у вас все как-то сложно.

Да вроде наборот хотел как проще. )

По умолчанию со всех клиентов натить через родной дефолтный шлюз.
А для клиентов из определенной подсети натить через альтернативный псевдо-шлюз.

В актуальных прошивках получается без вариантов такое реализовать?
vasek00
DD-WRT Guru


Joined: 06 Nov 2010
Posts: 3312

PostPosted: Mon Oct 26, 2015 15:00    Post subject: Re: Два провайдера без балансиров Reply with quote
Code:
Инет1----L2TP(WAN)dd-wrt(LAN)vlan3-----Инет2
ПК1--------------(wi-fi1) (wi-fi2)------------ПК2


wi-fi1(он же br0) - 192.168.1.1
wi-fi2 - 192.168.2.1

default на Инет1, т.е. для локальных ПК1 (wi-fi1), для других ПК2 через vlan3. Добавить нужно будет :
Code:
iptables -I POSTROUTING -s 192.168.2.0/24 -o vlan3 -j SNAT --to-source [IP_vlan3]

После всех настроек wi-fi2 появиться маршрут
Code:
192.168.2.0/24 dev [wi-fi2] proto kernel scope link src 192.168.2.1

и для vlan3
Code:
[IP_сеть_vlan3]/24 dev vlan3 proto kernel  scope link src [IP_vlan3]

так же NAT так как стоит использовать в настройках
Code:
-A POSTROUTING -s 192.168.2.1/24 -o [интерфейс_WAN] -j SNAT --to-source [IP_WAN]

DHCP для wi-fi2 настроен так же через WEB и тогда получили конф для DNSMAsq:
Code:

interface=br0,[имя_wi-fi2]
...
dhcp-option=br0,3,192.168.1.1
dhcp-option=[имя_wi-fi2],3,192.168.2.1
dhcp-authoritative
dhcp-range=br0,192.168.1.120,192.168.130.122,255.255.255.0,600m
dhcp-range=[имя_wi-fi2],192.168.2.120,192.168.2.121,255.255.255.0,600m
dhcp-host=хх:хх:хх:хх:хх:хх,Имя_1,192.168.1.17,600m
dhcp-host=хх:хх:хх:хх:хх:х1,Имя_2,192.168.2.16,600m
...
stop-dns-rebind

строчка dhcp-option=..3,... говорим что для клиентов сети [имя_wi-fi2] шлюзом будет 192.168.2.1.
далее прописать маршрут, что для клиентов 192.168.2.0/24 шлюзом сделать IP шлюза Инет2.

Осталось только разрешить iptables для интерфейса [имя_wi-fi2] на доступ к vlan3, примеры много раз уже писалось на данном форуме, можно воспользоваться поиском (там так же использовался vlan3).

после того как будет отлажено в ручную, можно приступать к автоматизации процесса при перезапуске и по контролю соединений, так как например при пропадании Инет1 будет автоматом восстанавливаться, а для vlan3 нет, но и так же в некоторых случаях будут пропадать настройки, так как возможны остановки и запуски сервисов опять, все зависит от цикла восстановления соединения.
Ziggy1941
DD-WRT Novice


Joined: 26 Oct 2015
Posts: 18

PostPosted: Tue Oct 27, 2015 14:40    Post subject: Re: Два провайдера без балансиров Reply with quote
Я все же через br1 интерфейс делаю, внутренний адрес не напрямую на wl0.1. Потом еще wl1.1 туда же добавится.

Quote:
для других ПК2 через vlan3. Добавить нужно будет :
Code:
iptables -I POSTROUTING -s 192.168.2.0/24 -o vlan3 -j SNAT --to-source [IP_vlan3]

...
Quote:
так же NAT так как стоит использовать в настройках
Code:
-A POSTROUTING -s 192.168.2.1/24 -o [интерфейс_WAN] -j SNAT --to-source [IP_WAN]

Не совсем понял в чем будет отличие между этими двумя правилами?

Quote:
DHCP для wi-fi2 настроен так же через WEB

С dhcp все ОК, работает правильно для обоих локальных сетей.

Quote:
Осталось только разрешить iptables для интерфейса [имя_wi-fi2] на доступ к vlan3, примеры много раз уже писалось на данном форуме, можно воспользоваться поиском (там так же использовался vlan3).


Типа вот такие правила?

Code:
iptables -I INPUT -i vlan3 -s 192.168.56.0/24 -j ACCEPT
iptables -I OUTPUT -o vlan3 -j ACCEPT



Quote:
после того как будет отлажено в ручную, можно приступать к автоматизации процесса при перезапуске


Пока даже вручную не взлетает )

# iptables -t nat -nvL

показывает в секции построутинга вот что:

Code:

Chain POSTROUTING (policy ACCEPT 29186 packets, 1819K bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 SNAT       0    --  *      vlan3   192.168.56.0/24      0.0.0.0/0           to:92.54.98.155
90425 8713K SNAT       0    --  *      ppp0    192.168.55.0/24      0.0.0.0/0           to:77.223.70.71
    3   186 SNAT       0    --  *      vlan2   0.0.0.0/0            0.0.0.0/0           to:10.3.9.81
    0     0 MASQUERADE  0    --  *      *       0.0.0.0/0            0.0.0.0/0           mark match 0x80000000/0x80000000


Вроде бы похоже на правду?

# iptables -nvL

показывает

Code:

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
...
    0     0 ACCEPT     0    --  vlan3  *       192.168.56.0/24      0.0.0.0/0
 1589  217K ACCEPT     0    --  vlan3  *       0.0.0.0/0            0.0.0.0/0

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
...
    0     0 ACCEPT     0    --  vlan3  *       0.0.0.0/0            0.0.0.0/0   



# ip route

Code:

default via 77.223.xxx.xxx dev ppp0  scope link
10.0.0.1 via 92.54.xxx.1 dev vlan3
10.0.0.70 via 10.3.9.3 dev vlan2
10.3.9.0/24 dev vlan2  proto kernel  scope link  src 10.3.9.81
77.223.xxx.xxx dev ppp0  scope link
92.54.xxx.xxx/23 dev vlan3  proto kernel  scope link  src 92.54.98.155
127.0.0.0/8 dev lo  scope link
169.254.0.0/16 dev br0  proto kernel  scope link  src 169.254.255.1
192.168.55.0/24 dev br0  proto kernel  scope link  src 192.168.55.1
192.168.56.0/24 dev br1  proto kernel  scope link  src 192.168.56.1


По идее должен заработать NAT с клиентов сети 56.00/24 до адреса 10.0.0.1 второго
провайдера и до адресов 92.54.xxx.xxx/23. Но чего то мешает...
vasek00
DD-WRT Guru


Joined: 06 Nov 2010
Posts: 3312

PostPosted: Tue Oct 27, 2015 17:12    Post subject: Re: Два провайдера без балансиров Reply with quote
Ziggy1941 wrote:
Я все же через br1 интерфейс делаю, внутренний адрес не напрямую на wl0.1. Потом еще wl1.1 туда же добавится.

Да без проблем хозяин барин. Вопрос только в том для чего используется так сказать bridge если интерфейс в нем один.

Ziggy1941 wrote:
так же NAT так как стоит использовать в настройках
Code:
-A POSTROUTING -s 192.168.2.1/24 -o [интерфейс_WAN] -j SNAT --to-source [IP_WAN]
и
iptables -I POSTROUTING -s 192.168.2.0/24 -o vlan3 -j SNAT --to-source [IP_vlan3]

Не совсем понял в чем будет отличие между этими двумя правилами?

Только в том чтоб указать правильный интерфейс

Ziggy1941 wrote:

С dhcp все ОК, работает правильно для обоих локальных сетей.

Да пусть работает, через DNSMasq можно управлять тем что должен получить клиент.

Ziggy1941 wrote:

Пока даже вручную не взлетает )
# iptables -t nat -nvL

показывает в секции построутинга вот что:

Code:

Chain POSTROUTING (policy ACCEPT 29186 packets, 1819K bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 SNAT       0    --  *      vlan3   192.168.56.0/24      0.0.0.0/0           to:92.54.98.155
90425 8713K SNAT       0    --  *      ppp0    192.168.55.0/24      0.0.0.0/0           to:77.223.70.71
    3   186 SNAT       0    --  *      vlan2   0.0.0.0/0            0.0.0.0/0           to:10.3.9.81
    0     0 MASQUERADE  0    --  *      *       0.0.0.0/0            0.0.0.0/0           mark match 0x80000000/0x80000000


Вроде бы похоже на правду?

# iptables -nvL

показывает

Code:

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
...
    0     0 ACCEPT     0    --  vlan3  *       192.168.56.0/24      0.0.0.0/0
 1589  217K ACCEPT     0    --  vlan3  *       0.0.0.0/0            0.0.0.0/0

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
...
    0     0 ACCEPT     0    --  vlan3  *       0.0.0.0/0            0.0.0.0/0   



# ip route

Code:

default via 77.223.xxx.xxx dev ppp0  scope link
10.0.0.1 via 92.54.xxx.1 dev vlan3
10.0.0.70 via 10.3.9.3 dev vlan2
10.3.9.0/24 dev vlan2  proto kernel  scope link  src 10.3.9.81
77.223.xxx.xxx dev ppp0  scope link
92.54.xxx.xxx/23 dev vlan3  proto kernel  scope link  src 92.54.98.155
127.0.0.0/8 dev lo  scope link
169.254.0.0/16 dev br0  proto kernel  scope link  src 169.254.255.1
192.168.55.0/24 dev br0  proto kernel  scope link  src 192.168.55.1
192.168.56.0/24 dev br1  proto kernel  scope link  src 192.168.56.1


По идее должен заработать NAT с клиентов сети 56.00/24 до адреса 10.0.0.1 второго
провайдера и до адресов 92.54.xxx.xxx/23. Но чего то мешает...


Code:
Инет1---ppp0(роутер)vlan3----Инет2
ПК1-----------br0 br1------------ПК2


ppp0 (77.хх.хх.71) <--> br0 (192.168.55.1)
vlan2 (10.3.9.81) <--> br0 настройки по умолчанию так как он WAN порт
vlan3 (92.хх.хх.155) <--> br1 (192.168.56.1)

Тогда
Code:
iptables -I POSTROUTING -s 192.168.56.0/24 -o vlan3 -j SNAT --to-source 92.хх.хх.155

Quote:

# ip route

10.0.0.1 via 92.54.xxx.1 dev vlan3

Для чего? В сети vlan3 можно найти устройство с таким IP 10.0.0.1?

и в итоге
Code:
iptables -I INPUT -i br1 -j ACCEPT
iptables -I INPUT -i br1 -m state --state NEW -j ACCEPT
iptables -I FORWARD -i br1 -o br1 -j ACCEPT
iptables -I FORWARD -i br1 -m state --state NEW -j ACCEPT
iptables -I OUTPUT -o br1 -j ACCEPT
iptables -I FORWARD -i vlan3 -o br1 -j ACCEPT
iptables -I FORWARD -i br1 -o vlan3 -m state --state NEW -j ACCEPT
Ziggy1941
DD-WRT Novice


Joined: 26 Oct 2015
Posts: 18

PostPosted: Wed Oct 28, 2015 17:26    Post subject: Re: Два провайдера без балансиров Reply with quote
vasek00 wrote:
Ziggy1941 wrote:
Я все же через br1 интерфейс делаю, внутренний адрес не напрямую на wl0.1. Потом еще wl1.1 туда же добавится.

Да без проблем хозяин барин. Вопрос только в том для чего используется так сказать bridge если интерфейс в нем один.


Дык говорю ж, что возможно не один там будет интерфейс. Чтоб потом много не менять, а просто добавить к бриджу.

Quote:

Тогда
Code:
iptables -I POSTROUTING -s 192.168.56.0/24 -o vlan3 -j SNAT --to-source 92.хх.хх.155



"-t nat" только еще вроде надо?

Quote:

Quote:

# ip route

10.0.0.1 via 92.54.xxx.1 dev vlan3

Для чего? В сети vlan3 можно найти устройство с таким IP 10.0.0.1?


Как это не странно звучит, но таки да ) У провайдера так авторизатор работает.

Quote:

и в итоге
Code:
iptables -I INPUT -i br1 -j ACCEPT
iptables -I INPUT -i br1 -m state --state NEW -j ACCEPT
iptables -I FORWARD -i br1 -o br1 -j ACCEPT
iptables -I FORWARD -i br1 -m state --state NEW -j ACCEPT
iptables -I OUTPUT -o br1 -j ACCEPT
iptables -I FORWARD -i vlan3 -o br1 -j ACCEPT
iptables -I FORWARD -i br1 -o vlan3 -m state --state NEW -j ACCEPT


Вроде бы что-то начало получаться.

Спасибо за помощь! ))
vasek00
DD-WRT Guru


Joined: 06 Nov 2010
Posts: 3312

PostPosted: Thu Oct 29, 2015 5:19    Post subject: Re: Два провайдера без балансиров Reply with quote
Ziggy1941 wrote:

Дык говорю ж, что возможно не один там будет интерфейс. Чтоб потом много не менять, а просто добавить к бриджу.

Мудро, но как то ...

Ziggy1941 wrote:

Тогда
Code:
iptables -I POSTROUTING -s 192.168.56.0/24 -o vlan3 -j SNAT --to-source 92.хх.хх.155


"-t nat" только еще вроде надо?

Ну думаю вы знаете что POSTROUTING в nat.
Display posts from previous:    Page 1 of 1
Post new topic   Reply to topic    DD-WRT Forum Index -> Использование и установка DD-WRT All times are GMT

Navigation

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You cannot download files in this forum