Задача: создать два подключения к интернету через 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(), когда пытаюсь через нерабочий интерфейс подключиться.
Подскажите, в чём может быть проблема в одновременной работе? В каком направлении копать? Нагуглить пока не получилось, но поиски продолжаю.
А ещё может кто-то знает способ маршрутизации получше, чем прокси, для данной задачи?
Спасибо.