PPPoE + routes в Debian

Linux, безопасность, сети и все что с этим связано
Feel the Power
Заглянувший
Сообщения: 5
Зарегистрирован: 10 июн 2010, 20:30

PPPoE + routes в Debian

Сообщение Feel the Power »

Здравствуйте.
У меня проблема в создании PPPoE подключения на debian lenny.
Описываю всё по порядку.

Имеем: модем в режиме роутера с настроенным одним подключением PPPoE провайдера byfly - внешка, компьютер в сети с модемом с debian lenny на борту, в шлюзе прописан модем и у нас есть инет через модем на компьютере.
192.168.0.1 - компьютер
192.168.0.5 - модем
eth1 - лан с модемом
ppp0 - будущее гостевое PPPoE подключение

Что нужно получить: внешка(byfly) на модеме и гость(byfly) на компьютере, внешний трафик должен идти через модем(192.168.0.5), а всё что может по гостю - через гость (ppp0).

Мои шаги:
1. ставлю нужные пакеты
sudo apt-get install pppoe iproute
2. добавляю интерфейс
sudo nano /etc/network/interfaces
выглядит он у меня так

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

# The loopback network interface
auto lo
iface lo inet loopback
address 127.0.0.1
netmask 255.0.0.0

# The primary network interface
allow-hotplug eth1
iface eth1 inet static
        address 192.168.0.1
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.5
        dns-nameservers 82.209.240.241 82.209.243.241
iface ppp0 inet ppp
        provider ppp0
3. настраиваем параметры самого интерфейса
sudo touch /etc/ppp/peers/ppp0
sudo nano /etc/ppp/peers/ppp0

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

noipdefault
defaultroute
replacedefaultroute
unit 0
hide-password
lcp-echo-interval 20
lcp-echo-failure 3
connect /bin/true
noauth
persist
mtu 1492
noaccomp
default-asyncmap
plugin rp-pppoe.so eth1
user "xxxxxxxxx@guest"
4. прописываем пароль для соединения
sudo nano /etc/ppp/chap-secrets

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

# Secrets for authentication using CHAP
# client     server  secret                  IP addresses
"xxxxxxxxx@guest" * "pass"
5. добавляем роуты, чтобы направить весь "гостевой" трафик через гостевое соединение (ppp0).
Чтобы роуты добавлялись при запуске PPPoE-подключения, суём в /etc/ppp/ip-up.d routes.sh с нашими роутами:
sudo touch /etc/ppp/ip-up.d/routes.sh

routes.sh

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

#!/bin/sh
route add -net 86.57.151.0 netmask 255.255.255.224 gw 192.168.0.1 dev ppp0
route add -net 86.57.251.28 netmask 255.255.255.255 gw 192.168.0.1 dev ppp0
route add -net 86.57.253.1 netmask 255.255.255.255 gw 192.168.0.1 dev ppp0
route add -net 193.232.248.79 netmask 255.255.255.255 gw 192.168.0.1 dev ppp0
route add -net 193.232.248.80 netmask 255.255.255.255 gw 192.168.0.1 dev ppp0
route add -net 82.209.245.151 netmask 255.255.255.255 gw 192.168.0.1 dev ppp0
route add -net 194.158.206.240 netmask 255.255.255.255 gw 192.168.0.1 dev ppp0
route add -net 194.158.206.241 netmask 255.255.255.255 gw 192.168.0.1 dev ppp0
route add -net 194.158.206.246 netmask 255.255.255.255 gw 192.168.0.1 dev ppp0
route add -net 194.158.202.59 netmask 255.255.255.255 gw 192.168.0.1 dev ppp0
route add -net 82.209.195.15 netmask 255.255.255.255 gw 192.168.0.1 dev ppp0
route add -net 86.57.250.0 netmask 255.255.254.0 gw 192.168.0.1 dev ppp0
route add -net 86.57.246.0 netmask 255.255.255.0 gw 192.168.0.1 dev ppp0
route add -net 93.84.112.0 netmask 255.255.248.0 gw 192.168.0.1 dev ppp0
route add -net 178.124.128.0 netmask 255.255.248.0 gw 192.168.0.1 dev ppp0
route add -net 91.149.189.0 netmask 255.255.255.128 gw 192.168.0.1 dev ppp0
route add -net 91.149.189.128 netmask 255.255.255.192 gw 192.168.0.1 dev ppp0
route add -net 93.125.53.0 netmask 255.255.255.0 gw 192.168.0.1 dev ppp0
route add -net 91.149.157.0 netmask 255.255.255.128 gw 192.168.0.1 dev ppp0
route add -net 91.149.157.192 netmask 255.255.255.192 gw 192.168.0.1 dev ppp0
route add -net 194.158.199.177 netmask 255.255.255к.255 gw 192.168.0.1 dev ppp0
route add -net 82.209.240.241 netmask 255.255.255.255 gw 192.168.0.1 dev ppp0
route add -net 82.209.243.241 netmask 255.255.255.255 gw 192.168.0.1 dev ppp0
Плюс ко всему дописываем, чтобы у нас весь остальной трафик шёл через внешку, так как обычно при подключении PPPoE соединения прописывается основной шлюз на это соединение.

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

route del -net 0.0.0.0
route add -net 0.0.0.0 netmask 0.0.0.0 gw 192.168.0.5 dev eth1
Добавляем права на выполнение:
sudo chmod +x /etc/ppp/ip-up.d/routes.sh
6. Проверяем нашу работу.
Запускаем PPPoE-соединение:
sudo /sbin/ifup ppp0

гостевой ресурс: ping tut.by -c 3

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

PING tut.by (86.57.250.18) 56(84) bytes of data.
64 bytes from focus.tutby.com (86.57.250.18): icmp_seq=1 ttl=59 time=17.7 ms
64 bytes from focus.tutby.com (86.57.250.18): icmp_seq=2 ttl=59 time=19.3 ms
64 bytes from focus.tutby.com (86.57.250.18): icmp_seq=3 ttl=59 time=18.0 ms
внешний ресурс: ping mail.ru -c 3

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

PING mail.ru (217.69.128.45) 56(84) bytes of data.
--- mail.ru ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2000ms
смотрим роуты: sudo route

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

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
pppoe-router16. *               255.255.255.255 UH    0      0        0 ppp0
localnet        *               255.255.255.0   U     0      0        0 eth1
default         *               0.0.0.0         U     0      0        0 ppp0
Вывод: соединение установилось, но роуты не прописались.
Пытаемся применить роуты вручную:
sudo /etc/ppp/ip-up.d/routes.sh

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

bash: /etc/ppp/ip-up.d/routes.sh: /bin/sh^M: плохой интерпретатор: Нет такого файла или каталога
попробуем интерпретатор sh:
sh
sudo /etc/ppp/ip-up.d/routes.sh

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

sh: /etc/ppp/ip-up.d/routes.sh: /bin/sh^M: плохой интерпретатор: Нет такого файла или каталога
Ок! Проверяем наличие созданного ранее файла и заодно права:
sudo /etc/ppp/ip-up.d/
ls -l

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

-rwxr-xr-x 1 root root 1884 Июн 10 18:14 routes.sh
В чём может быть проблема?

Аватара пользователя
IceMan
Неотъемлемая часть форума
Сообщения: 377
Зарегистрирован: 22 июл 2007, 10:12
Откуда: Минск
Контактная информация:

Re: PPPoE + routes в Debian

Сообщение IceMan »

Проблема в окончании строки #!/bin/sh^M, убери этот ^M или преобразуй файл в формат UNIX.

Feel the Power
Заглянувший
Сообщения: 5
Зарегистрирован: 10 июн 2010, 20:30

Re: PPPoE + routes в Debian

Сообщение Feel the Power »

routes.sh
Код:
#!/bin/sh
route add -net 86.57.151.0 netmask 255.255.255.224 gw 192.168.0.1 dev ppp0
route add -net 86.57.251.28 netmask 255.255.255.255 gw 192.168.0.1 dev ppp0
route add -net 86.57.253.1 netmask 255.255.255.255 gw 192.168.0.1 dev ppp0
А где здесь ^M?

add:

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

sudo apt-get install tofrodos
dos2unix /etc/ppp/ip-up.d/routes.sh
сейчас проверим...
Не понятно как такое могло получиться, ведь писалось всё это на той же системе, но ладно.

Теперь проблема в том, что при старте подключения роуты не добавляются, приходится добавлять их вручную, хотя лежат в
/etc/ppp/ip-up.d/

Вот plog:

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

Jun 10 22:06:36 localhost pppd[4713]: PPP session is 5540
Jun 10 22:06:36 localhost pppd[4713]: Using interface ppp0
Jun 10 22:06:36 localhost pppd[4713]: Connect: ppp0 <--> eth1
Jun 10 22:06:37 localhost pppd[4713]: CHAP authentication succeeded
Jun 10 22:06:37 localhost pppd[4713]: CHAP authentication succeeded
Jun 10 22:06:37 localhost pppd[4713]: peer from calling number 00:59:1A:AC:61:76 authorized
Jun 10 22:06:37 localhost pppd[4713]: replacing old default route to eth1 [192.168.0.5]
Jun 10 22:06:37 localhost pppd[4713]: Cannot determine ethernet address for proxy ARP
Jun 10 22:06:37 localhost pppd[4713]: local  IP address 1.8.88.88
Jun 10 22:06:37 localhost pppd[4713]: remote IP address 93.84.81.66

Аватара пользователя
IceMan
Неотъемлемая часть форума
Сообщения: 377
Зарегистрирован: 22 июл 2007, 10:12
Откуда: Минск
Контактная информация:

Re: PPPoE + routes в Debian

Сообщение IceMan »

Проблема в $PATH, который "минимален" в контексте вызова ip-up.d/*. Пропиши полный путь к route, /sbin/route add бла-бла и возьми за правило, либо определять нужный тебе PATH в начале скрипта, либо пользуй абсолютные пути. И тебе нужно проверять имя интерфейса, который поднимается перед добавлением маршрутов.

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

#!/bin/sh

PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

if [ "$IFNAME" == "ppp0" ]; then
  route add -net 86.57.151.0 netmask 255.255.255.224 gw 192.168.0.1 dev ppp0
  route add -host 86.57.251.28 gw 192.168.0.1 dev ppp0
  route add -host 86.57.253.1 gw 192.168.0.1 dev ppp0
fi

exit 0

Feel the Power
Заглянувший
Сообщения: 5
Зарегистрирован: 10 июн 2010, 20:30

Re: PPPoE + routes в Debian

Сообщение Feel the Power »

IceMan писал(а):Проблема в $PATH, который "минимален" в контексте вызова ip-up.d/*. Пропиши полный путь к route, /sbin/route add бла-бла и возьми за правило, либо определять нужный тебе PATH в начале скрипта, либо пользуй абсолютные пути. И тебе нужно проверять имя интерфейса, который поднимается перед добавлением маршрутов.

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

#!/bin/sh

PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

if [ "$IFNAME" == "ppp0" ]; then
  route add -net 86.57.151.0 netmask 255.255.255.224 gw 192.168.0.1 dev ppp0
  route add -host 86.57.251.28 gw 192.168.0.1 dev ppp0
  route add -host 86.57.253.1 gw 192.168.0.1 dev ppp0
fi

exit 0
Добавил путь - ноль изменений.
Добавил путь и проверку на имя интерфейса - ноль изменений.
Прописал везде полный путь (/sbin/route ...) - ноль изменений.
:(

Аватара пользователя
IceMan
Неотъемлемая часть форума
Сообщения: 377
Зарегистрирован: 22 июл 2007, 10:12
Откуда: Минск
Контактная информация:

Re: PPPoE + routes в Debian

Сообщение IceMan »

chmod +x /etc/ppp/ip-up.d/routes.sh

Если вызвать его IFNAME=ppp0 /etc/ppp/ip-up.d/routes.sh что пишет?

Feel the Power
Заглянувший
Сообщения: 5
Зарегистрирован: 10 июн 2010, 20:30

Re: PPPoE + routes в Debian

Сообщение Feel the Power »

IceMan писал(а):chmod +x /etc/ppp/ip-up.d/routes.sh
Ещё в первом посте написал, что права на выполнения стоят.
IceMan писал(а): Если вызвать его IFNAME=ppp0 /etc/ppp/ip-up.d/routes.sh что пишет?
При выключенном соединении - интерфейс не найден, при включенном прописываются роуты.

Feel the Power
Заглянувший
Сообщения: 5
Зарегистрирован: 10 июн 2010, 20:30

Re: PPPoE + routes в Debian

Сообщение Feel the Power »

Проблема решена.
Решение:
Зрабі man run-parts, асабліва на абзац "If neither the --lsbsysinit option nor the --regex option is given then the names must consist entirely of upper and lower case letters, digits, underscores, and hyphens." А ў тваёй назве ёсьць кропка. Пераназаві ў проста routes і ўсё будзе файна.
Спасибо Иван Миколаевич'у с torrents.by за помощь в решении проблемы.

Ответить