Одновременная работа Интернета и бесплатной сети (ФОС)
From ArchWiki
Contents |
Введение
Цель статьи в том, что бы работать одновременно и в интернете и в бесплатной сети (ФОС), которую предоставляет провайдер, но с другим логином и паролем. ADSL модем должен быть в режиме моста.
Проверка установленных пакетов
Для начала проверим что у нас все стоит из нужного програмного обеспечения. Нам нужен pppd и ip ( он входит в пакет iproute2).
pacman -Q iproute2 && pacman -Q ppp
iproute2 2.6.28-1 ppp 2.4.4-9
Настройка pppoe
Отлично, все стоит. Следующим шагом настройте свои подключения для инета и фоса. У меня они лежат, как и у вас, в /etc/ppp/peers
cat /etc/ppp/peers/fos
noipdefault nodefaultroute hide-password noauth persist maxfail 0 plugin rp-pppoe.so eth1 user “fileXXXXXX” unit 1
cat /etc/ppp/peers/inet
noipdefault nodefaultroute hide-password noauth persist maxfail 0 plugin rp-pppoe.so eth1 user “jdslXXXXXX” unit 0
Если вы все сделали верно, то к фосу можно будет коннектиться с помощью pon fos и отрубиться poff fos Аналогично и к инету.
Добавление скрипта и маршрутизации
Далее пишим скрипт для автоматического поднятия фоса с инетом и добавлением правил маршрутизации.
vim /etc/ppp/ip-up.d/00-routing.sh
#! /bin/bash IP=”/usr/sbin/ip” FOS_IFACE=”ppp1″ INET_IFACE=”ppp0″ if [ $1 = $FOS_IFACE ]; then NET=`/bin/grep -vE ‘^#’ /etc/ppp/fos.list` for i in $NET; do $IP route add $i dev $1 done fi if [ $1 = $INET_IFACE ]; then $IP route del default 2>/dev/null $IP route add default dev $1 fi
И сделаем его выполняемым
chmod 755 /etc/ppp/ip-up.d/00-routing.sh
Обратите внимание на путь в скрипте, а именно на строчку
NET=`/bin/grep -vE ‘^#’ /etc/ppp/fos.list`
Это путь к файлу, где указаны все сети и адреса, которые должны направляться на ppp1. Т.е. считаться бесплатным трафиком. Список таких сетей и сайтов ищите и спрашивайте у ваших провайдеров.
Теперь завершающий этап. Отключитесь полностью от ФОСа и инета, и подрубитесь заново. Проверте поднялись ли интерфейсы ppp0 и ppp1
ppp0 Link encap:Point-to-Point Protocol
inet addr:88.147.211.197 P-t-P:88.147.128.127 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1
RX packets:868164 errors:0 dropped:0 overruns:0 frame:0
TX packets:894747 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:633514822 (604.1 Mb) TX bytes:368966099 (351.8 Mb)
ppp1 Link encap:Point-to-Point Protocol
inet addr:88.147.223.163 P-t-P:88.147.128.127 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1
RX packets:2272881 errors:0 dropped:0 overruns:0 frame:0
TX packets:3019009 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:875742380 (835.1 Mb) TX bytes:3707531434 (3535.7 Mb)
Потом смотрим маршрутизацию
netstat -nr
Вот кусок того, что вы должны увидеть
Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 83.222.15.80 0.0.0.0 255.255.255.255 UH 0 0 0 ppp1 217.174.97.60 0.0.0.0 255.255.255.255 UH 0 0 0 ppp1 194.67.1.14 0.0.0.0 255.255.255.255 UH 0 0 0 ppp1 217.23.64.14 0.0.0.0 255.255.255.255 UH 0 0 0 ppp1 88.147.128.127 0.0.0.0 255.255.255.255 UH 0 0 0 ppp1 88.147.128.127 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0 217.9.151.19 0.0.0.0 255.255.255.255 UH 0 0 0 ppp1 194.186.36.179 0.0.0.0 255.255.255.255 UH 0 0 0 ppp1 217.9.151.18 0.0.0.0 255.255.255.255 UH 0 0 0 ppp1 89.108.90.130 0.0.0.0 255.255.255.255 UH 0 0 0 ppp1 217.174.98.2 0.0.0.0 255.255.255.255 UH 0 0 0 ppp1 194.186.36.178 0.0.0.0 255.255.255.255 UH 0 0 0 ppp1 217.174.98.9 0.0.0.0 255.255.255.255 UH 0 0 0 ppp1 80.95.32.115 0.0.0.0 255.255.255.255 UH 0 0 0 ppp1
Если у Вас все так же, то осталось добавить это в автозапуск.
Реализация в качестве демона
Создаем скрипт и делаем его исполняемым.
touch /etc/rc.d/p2 chmod 755 /etc/rc.d/p2
Вот его содержимое:
#! /bin/bash
# Description: Fos and Inet
#
. /etc/rc.conf
. /etc/rc.d/functions
NAME=`basename $0`
FOS_NAME="fos"
INET_NAME="inet"
FOS_IFACE="ppp1"
INET_IFACE="ppp0"
FOS_LIST="/etc/ppp/fos.list"
case "$1" in
start)
stat_busy "Starting FOS+INET Connection"
netstat -rn | grep 88.147.128.0 &> /dev/null
case $? in
0)
stat_bkgd "Already UP"
exit 1
;;
esac
/usr/bin/pon $FOS_NAME &> /dev/null
/usr/bin/pon $INET_NAME &> /dev/null
sleep 10 &&
ifconfig | grep $FOS_IFACE &> /dev/null && ifconfig | grep $INET_IFACE &> /dev/null
case $? in
1)
#Проверка, что поднялось. Исключительно для красивой надписи done:)
stat_fail
exit 2
;;
esac
add_daemon p2
stat_done
;;
stop)
stat_busy "Stopping FOS+INET Connection"
killall pppd
rm_daemon p2
stat_done
;;
restart)
$0 stop
sleep 5 &&
$0 start
;;
*)
echo "Usage: $0 start|stop|restart"
exit 3
;;
esac
exit 0
Теперь все это дело можно стартовать и останавливать вот так:
/etc/rc.d/p2 start /etc/rc.d/p2 stop
Ну и для полного счастья добавте его (p2) в список демонов в файл /etc/rc.conf Это позволит автоматом поднимать инет и ФОС при запуске системы.