Два ppp подключения

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

dvss
Сообщения: 9

Два ppp подключения

Сообщение dvss »

Подключаюсь к инету (с помощью wvdial) через GPRS (ppp0) и модем (ppp1).

Программы (Centericq, Firefox, Thunderbird) работают только через ppp0, ppp1 незамечают.

Как сделать чтобы одни работали через ppp0, а другие через ppp1?
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Два ppp подключения

Сообщение sash-kan »

afaik средствами перечисленных программ это не решаемо.
потому как маршрутизацией занимается ядро системы.
и куда отправится тот или иной пакет, задается в таблице маршрутизации.
рекомендую почитать:
http://lartc.org/ - первоисточник на английскоом, самая свежая редакция
http://gazette.linux.ru.net/rus/articles/index-lartc.html - русский перевод (возможно, немного неактуальный)
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
shubhar
Сообщения: 245

Re: Два ppp подключения

Сообщение shubhar »

(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 подключения

Сообщение dvss »

(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 подключения

Сообщение shubhar »

(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 подключения

Сообщение dvss »

Что означает эта переменная $GW_IP_for_PPP0?
Если туда ввести тот же IP что и в $PPP0_IP то неработает(((
Спасибо сказали:
shubhar
Сообщения: 245

Re: Два ppp подключения

Сообщение shubhar »

(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 подключения

Сообщение dvss »

Код: Выделить всё

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 подключения

Сообщение shubhar »

(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.
корпоративный экстремист по вопросам всеобщей унификации
Спасибо сказали: