Настройка в ArchLinux одновременной работы Интернета и бесплатной сети от провайдера на примере ВолгаТелеком (pppoe pppd iptables iproute linux archlinux)
Ключевые слова:pppoe, pppd, iptables, iproute, linux, archlinux, (найти похожие документы)
From: Сайков Валентин (XliN) <admin@saikov.org.ru.>
Newsgroups: email
Date: Mon, 10 Aug 2009 14:31:37 +0000 (UTC)
Subject: Настройка в ArchLinux одновременной работы Интернета и бесплатной сети от провайдера на примере ВолгаТелеком
За основу была взята статья с linuxdoc.vfose.ru, но там пример приводится на
основе Ubuntu Мы же будем настраивать под Archlinux
Для начала проверим что у нас все стоит из нужного програмного обеспечения.
Нам нужен pppd и ip ( он входит в пакет iproute2).
pacman -Q iproute2 && pacman -Q ppp
iproute2 2.6.28-1
ppp 2.4.4-9
Отлично, все стоит. Следующим шагом настройте свои подключения для инета и
фоса. У меня они лежат, как и у вас, в /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
И сделаем его выполняемым
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
....
Если у Вас все так же, то осталось добавить это в автозапуск.
Создаем скрипт и делаем его исполняемым.
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 Это позволит автоматом поднимать инет и ФОС при запуске
системы.