Набор в несколько соединений PPP

У меня есть несколько 3G USB-модемов. Я хотел бы, чтобы они поддерживали связь одновременно, НЕ обязательно объединяя их пропускную способность; отдельное интеллектуальное приложение будет эффективно управлять их использованием.

Однако я сталкиваюсь с проблемой настройки правильных маршрутов для интерфейсов ppp0, ppp1: когда один из них соединяется, другие записи в таблице маршрутизации обновляются, так что они больше не используются. Если я переподключу второй, он переопределит записи маршрутизации первого. Если я делаю это снова и снова, иногда обе записи исчезают, тогда как в редких случаях они работают хорошо.

Я пробовал оба с использованием NetworkManager, а также WVDial, но проблема появляется в обоих из них. Возможно, они оба используют один и тот же номеронабиратель PPP на бэкэнде, и именно поэтому возникает эта проблема.

Какое правильное решение заставить их работать вместе? В долгосрочной перспективе я также хотел бы, чтобы они автоматически подключались после подключения USB.

3
задан 13 January 2013 в 03:12

2 ответа

Можно хотеть попытаться настроить мобильные соединения с простой тонкой настройкой: проверка Использования это соединение только для ресурсов на его сетевом флажке, который скрыт немного далеко, к сожалению:

При настройках для Вашего соединения перейдите к вкладке IPv4, нажмите кнопку Routes, затем проверьте последний флажок на том диалоговом окне.

Не протестированный, но примерно, то, что должно происходить, является каждым pppX устройством, должен становиться включенным с правильными маршрутами через каждую из сетей Ваших поставщиков, но маршрут по умолчанию не должен быть установлен передать ни по одному из них.

Необходимо затем смочь записать простой сценарий, который, например, проверяет с помощью ping-запросов тот же сервер от каждого из интерфейсов и выбирает самый быстрый для установки маршрута по умолчанию; что-то как:

route_candidate=$(
for iface in `ifconfig -a | grep ppp | awk '{print $1; }'`; do
    echo $iface = `ping -I $iface -c 1 -q 8.8.8.8 | grep avg | awk -F/ '{print $5;}'`
done | sort -k 3 -rn | head -n 1
)

logger "Setting new route from candidate: $route_candidate"

ip route del default
ip route add default dev `echo $route_candidate | awk '{print $1;}'`

Я не протестировал это полностью, но это примерно что потребности быть сделанным; с дополнением или модификацией использования "через whatever_the_default_gw_ip_is" для IP маршрута добавляют команду по умолчанию. Выполните это с кроном на равном интервале, и у Вас есть система дешевки для пребывания на "самом быстром" ISP.

1
ответ дан 13 January 2013 в 03:12

У меня тоже проблемы с подключением к нескольким ключам. Я могу инициализировать соединение с одним маршрутизатором за раз, но не с обоими. Вы можете подключиться к Интернету или просто не получается на втором? (пожалуйста, дайте мне знать и здесь-> Почему NetworkManager не поддерживает более одного 3g Dongle )

Это может помочь создать отдельные таблицы IP с iproute2.

Отредактируйте файл /etc/iproute2/rtc_tables, просто добавив в конце что-то вроде:

1      ppp0
2      ppp1

Перезапустите демон, чтобы загрузить новую конфигурацию. Затем вы можете использовать скрипт, который запускается при событии ip-up, например ip-up.local. Что-то вроде этого может сработать:

##export variables
export ip4_address_0=$IP4_ADDRESS_0
export iface=$IFACE
export gateway=$IP4_GATEWAY

##generate clean IP
ip=`echo "$ip4_address_0" | cut -d"." -f1-4 | cut -f 1 -d "/"`
##generate ip for subnet
baseip=`echo "$ip" | cut -d"." -f1-3`

if [[ "$iface" == "ppp0" ]] ; then
        TABLE=ppp0
elif [[ "$iface" == "ppp1" ]] ; then
        TABLE=ppp1
fi

##In my case I needed to add 2 defaults using weights, everything else failed 
/usr/sbin/ip route add default scope global nexthop via "$gateway" dev "$iface" weight 1 nexthop via $baseip.0/24 dev "$iface" weight 2 table "$TABLE"
/usr/sbin/ip route add "$baseip.0/24" dev "iface" table "$TABLE"
/usr/sbin/ip route add default via "$gateway" dev "$iface" table "$TABLE"
/usr/sbin/ip rule add from "$ip/32" table "$TABLE"
/usr/sbin/ip rule add to "$ip/32" table "$TABLE"

Надеюсь, это поможет вам.... Может быть, вы также можете помочь мне (Почему NetworkManager не поддерживает более одного 3g-ключа)

0
ответ дан 25 June 2020 в 16:18

Другие вопросы по тегам:

Похожие вопросы: