Напоминаю, что PPPoE-релей является своего рода шлюзом между PPPoE-сервером и PPPoE-клиентом, находящихся в разных Ethernet-сетях. PPPoE-релей устанавливается на компьютер, подключенный к обеим Ethernet-сетям. Для Ethernet-сети с клиентами он выглядит как сервер, а для Ethernet-сети с серверами выглядит как клиент.
И так, одной из проблем, которая мне мешала попытаться настроить PPPoE-релей было отсутствие третьего компьютера. Эту проблему я тогда наметил обойти с помощью эмуляции необходимого количества компьютеров с помощью какой-нибудь виртуальной машины. В одной из прошлых заметок я остановился на эмуляторе QEmu.
Для начала настроим PPPoE-сервер в соответствии с прошлыми статьями: Настройка PPPoE-сервера в Debian и deb-пакет и сценарии для запуска PPPoE сервера.
С настройкой PPPoE-клиента на этот раз я решил соригинальничать. У меня есть готовый образ диска QEmu, с установленной на него NetBSD 5.0. В NetBSD имеется PPPoE-клиент, работающий на уровне ядра. Его и настроим. В файл /etc/ifconfig.pppoe0 пропишем следующее:
create !/sbin/ifconfig ne2 up !/sbin/pppoectl -e ne2 $int !/sbin/pppoectl $int myauthproto=chap 'myauthname=test' 'myauthsecret=testpasswd' hisauthproto=none max-auth-failure=1 0.0.0.0 0.0.0.1 upБолее подробно настройка QEmu и сети в QEmu описаны в двух моих статьях: Эмуляторы VirtualBox и QEmu в Debian и QEmu и настройка сети. О начальной настройке NetBSD можно почитать вот тут: Раскручиваем свежеустановленную NetBSD
Теперь нужно заняться настройкой PPPoE-релея. Во-первых, создадим на компьютере, выполняющем роль релея, tap-интерфейс, который будет использоваться для связи с виртуальной машиной-клиентом в QEmu. Для этого в файл /etc/network/interfaces добавляем следующие строчки:
auto tap1 iface tap1 inet manual up ifconfig tap1 up down ifconfig tap1 down tunctl_user stupinГде stupin - это тот пользователь, под которым вы работаете и от имени которого запускаете QEmu.
Теперь, устанавливаем пакет pppoe_3.8-3_i386.deb, сборка которого рассмотрена мной в статье deb-пакет и сценарии для запуска PPPoE сервера:
# wget http://stupin.su/files/pppoe_3.8-3_i386.deb # dpkg -i pppoe_3.8-3_i386.debИ зафиксируем установленный пакет, чтобы он не был замещён версией из репозитория при следующем обновлении:
# aptitude hold pppoeСоздадим сценарий для запуска PPPoE-релея, создав файл /etc/init.d/pppoe-relay:
#!/bin/sh ### BEGIN INIT INFO # Provides: pppoe-relay # Required-Start: $network $syslog # Required-Stop: $network $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Roaring Peguin PPPoE relay # Description: Roaring Peguin PPPoE relay ### END INIT INFO CONFIG=/etc/default/pppoe-relay if test -f $CONFIG then . $CONFIG else echo "PPPoE relay: No config-file!" fi if test x$RUN = xno then echo "PPPoE relay: disabled." exit fi if test x"$OPTIONS" = x then echo "PPPoE relay: no options defined!" exit fi if test x$PIDFILE = x then PIDFILE=/var/run/pppoe-relay.pid fi case $1 in start) echo -n "Starting PPPoE relay: " /usr/sbin/pppoe-relay -F $OPTIONS & echo $! > $PIDFILE echo "pppoe-relay." ;; stop) echo -n "Stopping PPPoE relay: " kill `cat $PIDFILE` rm $PIDFILE echo "pppoe-relay." ;; restart) $0 stop $0 start ;; *) echo "Usage: $0 start|stop|restart" ;; esacСделаем его исполняемым:
# chmod +x /etc/init.d/pppoe-relayИ добавим на уровни запуска по умолчанию:
# update-rc.d pppoe-relay defaultsТеперь создадим файл настроек PPPoE-релея /etc/default/pppoe-relay:
# Run pppoe-relay at startup RUN="yes" # Options, that provided to pppoe-relay OPTIONS="-S br0 -C tap1" # File with PID of pppoe-relay PIDFILE="/var/run/pppoe-relay.pid"Как видно из файла настроек, сеть с PPPoE-сервером подключена к интерфейсу br0, а сеть с PPPoE-клиентом - к интерфейсу tap1.
Запускаем pppoe-relay:
# invoke-rc.d pppoe-relay startИли по-старинке:
# /etc/init.d/pppoe-relay startТеперь пришло время запустить настроенную QEmu. Запускать её нужно с помощью следующей командной строки (она у меня прописана в сценарии netbsd.sh):
$ qemu -M pc -m 128 -no-kqemu -no-acpi -hda /home/stupin/netbsd-disk.bin -net nic,vlan=0 -net tap,vlan=0,ifname=tap1 -boot cСмотрим на клиенте (в NetBSD под QEmu) список интерфейсов:
$ ifconfig -aЕсли в списке появился интерфейс pppoe0 с адресами 192.168.0.2 и 192.168.0.1, значит PPPoE-подключение установлено. Если не появился - пробуем перезапустить сетевую подсистему:
# /etc/rc.d/network restartНа сервере проверить установку связи можно по появившемуся интерфейсу с именем ppp0 (или ppp1 или ppp2) с адресами 192.168.0.1 и 192.168.0.2.
Для более-менее окончательного завершения разбора RP-PPPoE в Debain осталось:
- переписать сценарии запуска на использование start-stop-daemon,
- добавить в deb-пакет сценарии pppoe-server и pppoe-relay,
- добавить в deb-пакет post-install-сценарии вызывающие update-rc.d для добавления в систему сценариев pppoe-server и pppoe-relay,
- добавить в deb-пакет файлы настроек pppoe-server, pppoe-relay, pppoe-server-options,
- отправить мэнтейнеру пакета pppoe все эти скрипты и файлы настроек,
- написать на основе этой и предыдущих статей подробное руководство по настройке PPPoE-клиента, сервера и релея.
Комментариев нет:
Отправить комментарий