Подключаюсь к инету (с помощью wvdial) через GPRS (ppp0) и модем (ppp1).
Программы (Centericq, Firefox, Thunderbird) работают только через ppp0, ppp1 незамечают.
Как сделать чтобы одни работали через ppp0, а другие через ppp1?
Два ppp подключения
Модератор: Bizdelnick
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Два ppp подключения
afaik средствами перечисленных программ это не решаемо.
потому как маршрутизацией занимается ядро системы.
и куда отправится тот или иной пакет, задается в таблице маршрутизации.
рекомендую почитать:
http://lartc.org/ - первоисточник на английскоом, самая свежая редакция
http://gazette.linux.ru.net/rus/articles/index-lartc.html - русский перевод (возможно, немного неактуальный)
потому как маршрутизацией занимается ядро системы.
и куда отправится тот или иной пакет, задается в таблице маршрутизации.
рекомендую почитать:
http://lartc.org/ - первоисточник на английскоом, самая свежая редакция
http://gazette.linux.ru.net/rus/articles/index-lartc.html - русский перевод (возможно, немного неактуальный)
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
shubhar
- Сообщения: 245
Re: Два ppp подключения
(dvss @ Воскресенье, 15 Мая 2005, 22:41) писал(а):Подключаюсь к инету (с помощью wvdial) через GPRS (ppp0) и модем (ppp1).
Программы (Centericq, Firefox, Thunderbird) работают только через ppp0, ppp1 незамечают.
Как сделать чтобы одни работали через ppp0, а другие через ppp1?
Все вполне оборимо!
Надо разбросать по портам. iptables + iproute2.
80й порт - на один канал, 25,110,143 на другой.
Пример:
для 80-го порта (т.е. для доступа только по веб), для других аналогично.
echo 202 www.in >> /etc/iproute2/rt_tables #это сделать единственный(!!!) раз
-------------------
/sbin/iptables -A OUTPUT -t mangle -p tcp -s $PPP0_IP --dport 80 -j MARK --set-mark 0x1
/sbin/iptables -A PREROUTING -t mangle -s $PPP0_IP -j MARK --set-mark 0x1
/sbin/ip rule add fwmark 1 table www.in
/sbin/ip route add default via $GW_IP_for_PPP0 dev $PPP0_DEV table www.in
/sbin/ip route flush cache
вроде так.
Суть идеи в том, чтобы сделать default router для разных потоков - разный.
Можно еще маркировать пакеты (и соответсвеноо их перенаправлять) от разных UID, и через скрипты от другого UID запускать программы - тогда для них default router будет иным. Но это, ИМХО, уже изврат
корпоративный экстремист по вопросам всеобщей унификации
-
dvss
- Сообщения: 9
Re: Два ppp подключения
(Sash Kan @ Понедельник, 16 Мая 2005, 12:51) писал(а):/sbin/iptables -A OUTPUT -t mangle -p tcp -s $PPP0_IP --dport 80 -j MARK --set-mark 0x1
Bad argument `80'
-
shubhar
- Сообщения: 245
Re: Два ppp подключения
(dvss @ Понедельник, 16 Мая 2005, 19:40) писал(а):(Sash Kan @ Понедельник, 16 Мая 2005, 12:51) писал(а):/sbin/iptables -A OUTPUT -t mangle -p tcp -s $PPP0_IP --dport 80 -j MARK --set-mark 0x1
Bad argument `80'
iptables -A OUTPUT -t mangle -p tcp -s 10.1.1.1 --dport 80 -j MARK --set-mark 0x1
где 10.1.1.1 - пример адреса IP для соединения например для ррр0.
$PPP0_IP в моих примерах - это переменная для скрипта = замените на реально существущее знаение IP или предварительно присвойте этой переменной знаение - будет работать.
вот как тут - создайте файл dual_channel
#!/bin/sh
#это пример. ставте свой реально получаемый, при ррр-соединени
#арес, узнать его можно (если он всегда разный), пропарсив таблицу раутинга для
#девайса ррр0 и ррр1
$PPP0_IP="10.1.1.1"
/sbin/iptables -A OUTPUT -t mangle -p tcp -s $PPP0_IP --dport 80 -j MARK --set-mark 0x1
ну и т.д как написано выше.
default router пусть будет всегда заточен, допустим, на девайс ррр1, тогда вышеуказанные правила, вкупе с iproute2 укажут другой дефолтный маршрут для помеченных пакетов. Здесь приведена только основная схема-идея. У меня лично это работает для разделения "наземного" и "спутниково" каналов. Почта, DNS по земле, HTTP/FTP через спутник - он дешевле
Пишите, если чего не получится, разберемся!
корпоративный экстремист по вопросам всеобщей унификации
-
dvss
- Сообщения: 9
Re: Два ppp подключения
Что означает эта переменная $GW_IP_for_PPP0?
Если туда ввести тот же IP что и в $PPP0_IP то неработает(((
Если туда ввести тот же IP что и в $PPP0_IP то неработает(((
-
shubhar
- Сообщения: 245
Re: Два ppp подключения
(dvss @ Понедельник, 16 Мая 2005, 22:59) писал(а):Что означает эта переменная $GW_IP_for_PPP0?
Если туда ввести тот же IP что и в $PPP0_IP то неработает(((
тот же ИП вводить нельзя - это ближайший к вам шлюз - реальный девайс "с той стороны" - на стороне провайдера. Шлюз устанавливает, как правило, сервер провайдера при поднятии ррр-соединения.
1. Что показывает route -n относительно default route?
Скопируйте сюда всю таблицу маршрутов, которая имеется после установки всех ррр0 и ррр1 соединений - я скажу чего указывать точно.
2. сделайте ifconfig -a и тоже сюда давайте или в приват.
корпоративный экстремист по вопросам всеобщей унификации
-
dvss
- Сообщения: 9
Re: Два ppp подключения
Код: Выделить всё
bash-3.00# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.64.64.64 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
83.237.136.16 0.0.0.0 255.255.255.255 UH 0 0 0 ppp1
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 10.64.64.64 0.0.0.0 UG 0 0 0 ppp0
bash-3.00# ifconfig -a
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
ppp0 Link encap:Point-to-Point Protocol
inet addr:172.19.96.97 P-t-P:10.64.64.64 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:637 errors:0 dropped:0 overruns:0 frame:0
TX packets:722 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:439438 (429.1 Kb) TX bytes:77644 (75.8 Kb)
ppp1 Link encap:Point-to-Point Protocol
inet addr:83.237.136.241 P-t-P:83.237.136.16 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:4 errors:0 dropped:0 overruns:0 frame:0
TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:64 (64.0 b) TX bytes:97 (97.0 b)Я ввожу вседующее (для ppp1):
/sbin/iptables -A OUTPUT -t mangle -p tcp -s 83.237.136.241 --dport 80 -j MARK --set-mark 0x1
/sbin/iptables -A PREROUTING -t mangle -s 83.237.136.241 -j MARK --set-mark 0x1
/sbin/ip rule add fwmark 1 table www.in
/sbin/ip route add default via 83.237.136.16 dev ppp1 table www.in
/sbin/ip route flush cache
Но после этого браузер всеравно лезет через ppp0
-
shubhar
- Сообщения: 245
Re: Два ppp подключения
(dvss @ Вторник, 17 Мая 2005, 20:06) писал(а):Я ввожу вседующее (для ppp1):
/sbin/iptables -A OUTPUT -t mangle -p tcp -s 83.237.136.241 --dport 80 -j MARK --set-mark 0x1
/sbin/iptables -A PREROUTING -t mangle -s 83.237.136.241 -j MARK --set-mark 0x1
/sbin/ip rule add fwmark 1 table www.in
/sbin/ip route add default via 83.237.136.16 dev ppp1 table www.in
/sbin/ip route flush cache
Но после этого браузер всеравно лезет через ppp0
Попробуйте временно убрать -s 83.237.136.241 из правил.
Или для начала проверьте пинг (убрав временно --dport 80 , т.е. "по всем портам" для проверки на-пока) командой ping -I 83.237.136.241 ftp.ru
Т.е. надо проверить, что поток уходит на ррр1, несмотря на то что default router = 10.64.64.64
Если это работает - попробовать снова с указанием --dport 80 в правилах. (предварительно удалив все правила или очистив вообще таблицы). В ПМ мой № ICQ.
корпоративный экстремист по вопросам всеобщей унификации