LINUX.ORG.RU
ФорумAdmin

Два подключения к интернету одновременно

 ,


1

2

Задача: создать два подключения к интернету через 3g модемы. Они должны работать одновременно. Мне нужно часть приложений пускать через один модем, а часть через другой. Вроде, я научился подключаться двумя модемами. Через network-manager:

$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
link/ether 04:7d:7b:9a:10:60 brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether c0:18:85:9e:bc:47 brd ff:ff:ff:ff:ff:ff
4: wwan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
link/ether e6:0e:cf:57:14:a3 brd ff:ff:ff:ff:ff:ff
inet 100.67.83.200/28 brd 100.67.83.207 scope global dynamic wwan0
valid_lft 6947sec preferred_lft 6947sec
inet6 fe80::e40e:cfff:fe57:14a3/64 scope link
valid_lft forever preferred_lft forever
5: wwan1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
link/ether 7a:cf:4a:90:11:2b brd ff:ff:ff:ff:ff:ff
inet 10.189.2.153/30 brd 10.189.2.155 scope global dynamic wwan1
valid_lft 6943sec preferred_lft 6943sec
inet6 fe80::78cf:4aff:fe90:112b/64 scope link
valid_lft forever preferred_lft forever
Либо можно его отключить: /etc/init.d/network-manager stop И подключиться с помощью wvdial:
# wvdial megafon
--> WvDial: Internet dialer version 1.61
--> Initializing modem.
--> Sending: ATZ
OK
--> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
OK
--> Sending: AT+CGDCONT=1,"IP","internet"
AT+CGDCONT=1,"IP","internet"
OK
--> Modem initialized.
--> Sending: ATDT*99#
--> Waiting for carrier.
ATDT*99#
CONNECT 14400000
--> Carrier detected. Starting PPP immediately.
--> Starting pppd at Thu Nov 24 21:17:58 2016
--> Pid of pppd: 2091
--> Using interface ppp1
--> pppd: u x [04]
--> X [04]
--> pppd: u x [04]
--> X [04]
--> pppd: u x [04]
--> X [04]
--> pppd: u x [04]
--> X [04]
--> pppd: u x [04]
--> X [04]
--> pppd: u x [04]
--> X [04]
--> local IP address 10.216.24.70
--> pppd: u x [04]
--> X [04]
--> remote IP address 10.64.64.65
--> pppd: u x [04]
--> X [04]
--> primary DNS address 10.77.48.33
--> pppd: u x [04]
--> X [04]
--> secondary DNS address 10.77.48.49
--> pppd: u x [04]
--> X [04]
В другом окне:
# wvdial beeline
--> WvDial: Internet dialer version 1.61
--> Initializing modem.
--> Sending: ATZ
OK
--> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
OK
--> Sending: AT+CGDCONT=1,"IP","internet.beeline.ru"
AT+CGDCONT=1,"IP","internet.beeline.ru"
OK
--> Modem initialized.
--> Sending: ATDT*99#
--> Waiting for carrier.
ATDT*99#
CONNECT 14400000
--> Carrier detected. Starting PPP immediately.
--> Starting pppd at Thu Nov 24 21:17:31 2016
--> Pid of pppd: 2054
--> Using interface ppp0
--> pppd: s x [08]X [08]
--> pppd: s x [08]X [08]
--> pppd: s x [08]X [08]
--> pppd: s x [08]X [08]
--> pppd: s x [08]X [08]
--> local IP address 100.96.233.63
--> pppd: s x [08]X [08]
--> remote IP address 10.64.64.64
--> pppd: s x [08]X [08]
--> primary DNS address 10.10.32.14
--> pppd: s x [08]X [08]
--> secondary DNS address 217.118.66.244
--> pppd: s x [08]X [08]
При этом:
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
link/ether 04:7d:7b:9a:10:60 brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether c0:18:85:9e:bc:47 brd ff:ff:ff:ff:ff:ff
4: wwan0: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
link/ether e6:0e:cf:57:14:a3 brd ff:ff:ff:ff:ff:ff
5: wwan1: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
link/ether 7a:cf:4a:90:11:2b brd ff:ff:ff:ff:ff:ff
6: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 3
link/ppp
inet 100.96.233.63 peer 10.64.64.64/32 scope global ppp0
valid_lft forever preferred_lft forever
8: ppp1: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 3
link/ppp
inet 10.184.131.118 peer 10.64.64.65/32 scope global ppp1
valid_lft forever preferred_lft forever
Казалось бы, всё хорошо. Но работает только одно подключение. Маршрутизирую с помощью 3proxy: proxy -n -a -p2001 -i127.0.0.1 -e172.21.9.253 proxy -n -a -p2002 -i127.0.0.1 -e100.103.145.18 Где после -e пишу ip адрес, полученный при подключении. Затем через этот прокси пытаюсь работать. Так вот одно подключение работает, а второе нет. По отдельности оба модема работают. Ещё я в resolv.conf прописываю гугловские прокси. В логах проксика ошибка 13 - сбой подключения connect(), когда пытаюсь через нерабочий интерфейс подключиться. Подскажите, в чём может быть проблема в одновременной работе? В каком направлении копать? Нагуглить пока не получилось, но поиски продолжаю. А ещё может кто-то знает способ маршрутизации получше, чем прокси, для данной задачи? Спасибо.


Ответ на: комментарий от anonymous

Спасибо. Статья - то, что надо. Но возник вопрос. Как мне определить адрес шлюза имеющегося подключения? Гуглил, не смог найти работающего решения. Нашёл: http://forum.ubuntu.ru/index.php?topic=120924.0

При одном имеющемся подключении, route -n возвращает::

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 ppp0
10.64.64.64     0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
traceroute тоже первый прыжок делает при каждом новом подключении до нового адреса. А значит не получится подключиться сначала отдельно через каждый интерфейс, узнать шлюзы, а потом их использовать при совместном подключении, потому что они поменяются. Узнавать надо непосредственно.

ip r возвращает:

ip r
default dev ppp0  scope link 
10.64.64.64 dev ppp0  proto kernel  scope link  src 100.86.108.27 
Но 10.64.64.64 не очень, похоже на шлюз, мне кажется. Это при подключении фигурирует как remote ip address и этот адрес одинаков при подключении через разных провайдеров, т.е. это какой-то внутренний адрес. Аналогично:
# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         0.0.0.0         0.0.0.0         U         0 0          0 ppp0
10.64.64.64     0.0.0.0         255.255.255.255 UH        0 0          0 ppp0
Какие есть варианты получения данных dhcp или другого определения адреса шлюза? Может, можно какие-то служебные пакеты перехватить?

ants
() автор топика
Ответ на: комментарий от ants

В соединениях точка-точка(ppp) адрес шлюза необязателен, т.к. просто направляя трафик в подобное соединение - он окажется на другом конце(что логично, точка-точка же).

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

У тебя как раз подобный случай(default dev ppp0). Но ты прав, адрес другой стороны туннеля - 10.64.64.64, то есть можно указывать и его в качестве шлюза.

Какие есть варианты получения данных dhcp или другого определения адреса шлюза?

В случае соединений ppp DHCP в 99,9% случаев не используется - все назначения адресов происходят непосредственно по протоколу PPP(точнее через IPCP). И как я уже упоминал - сам адрес шлюза тебе не нужен - нужно просто добавить соответствующий маршрут в устройство ppp0. Это можно сделать через /etc/ppp/ip-up.d - в этой директории лежат скрипты выполняющиеся при подключении устройств ppp.

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от Pinkbyte

Спасибо. Ещё один вопросик.

Finally, let $P1_NET be the IP network $P1 is in, and $P2_NET the IP network $P2 is in.

Правильно понимаю, что этот адрес сети тоже не нужен, как и адрес шлюза? Если нет, то что это за адрес?

ip a возвращает:

14: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 3
    link/ppp 
    inet 10.246.134.134 peer 10.64.64.64/32 scope global ppp0
       valid_lft forever preferred_lft forever
адрес сети получается 10.64.64.64/32?

ants
() автор топика
Ответ на: комментарий от ants

Спасибо большое. Вроде, со всем разобрался. Если будут ещё вопросы напишу.

оффтоп В последнее время замечаю, что форум linux.org.ru самый толковый из известных мне.

ants
() автор топика
Ответ на: комментарий от ants

Здравствуйте!

Подскажите, пожалуйста, как вам удалось распределить маршрутизацию между устройствами (ppp0, ppp1)?

У меня три модема и в 3proxy пытаюсь распределить примерно так

proxy -n -a -p9990 -i10.1.1.21 -e100.98.116.42
proxy -n -a -p9991 -i10.1.1.21 -e100.97.225.186
proxy -n -a -p9992 -i10.1.1.21 -e10.235.130.111
в соответствии с ip r
10.1.1.0/24 dev eth0  proto kernel  scope link  src 10.1.1.21
10.64.64.64 dev ppp0  proto kernel  scope link  src 100.98.116.42
10.64.64.65 dev ppp1  proto kernel  scope link  src 100.97.225.186
10.64.64.66 dev ppp2  proto kernel  scope link  src 10.235.130.111
если в 3proxy исходящий интерфейс задавать полученный ip или -e0.0.0.0 то при весь трафик идет через один канал подключенный последним.

route -n возвращает следующее

Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 ppp2
0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 ppp1
0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 ppp0
0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 eth0
10.1.1.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
10.64.64.64     0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
10.64.64.65     0.0.0.0         255.255.255.255 UH    0      0        0 ppp1
10.64.64.66     0.0.0.0         255.255.255.255 UH    0      0        0 ppp2
Подскажите как мне правильно распределить маршрутизацию?

Заранее спасибо.

iwbh
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.