Главная > Freebsd > Интернет через pppoe на Freebsd

Интернет через pppoe на Freebsd

3 184

Интернет серверу от провайдера предоставляется посредством pppoe. Что ж, поднимем штатный демон

[sourcecode language=»js»]
#cat /etc/rc.conf | grep ppp

ppp_enable="YES"
ppp_mode="ddial"
ppp_nat="YES"
ppp_profile="pppoe0"
[/sourcecode]

[sourcecode language=»js»]
#cat /etc/ppp/ppp.conf

#################################################################
# PPP Sample Configuration File
# Originally written by Toshiharu OHNO
# Simplified 5/14/1999 by wself@cdrom.com
#
# See /usr/share/examples/ppp/ for some examples
#
# $FreeBSD: src/etc/ppp/ppp.conf,v 1.11.2.2.4.1 2010/12/21 17:09:25 kensmith Exp $
#################################################################

default:
set log Phase Chat LCP IPCP CCP tun command
ident user-ppp VERSION

# Ensure that "device" references the correct serial port
# for your modem. (cuau0 = COM1, cuau1 = COM2)
#
set device /dev/cuau1

set speed 115200
set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \
\"\" AT OK-AT-OK ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT"
set timeout 180 # 3 minute idle timer (the default)
enable dns # request DNS info (for resolv.conf)

papchap:
#
# edit the next three lines and replace the items in caps with
# the values which have been assigned by your ISP.
#

set phone PHONE_NUM
set authname имя_пользователя
set authkey Пароль

set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0
add default HISADDR # Add a (sticky) default route

pppoe0:
set device PPPoE:re0
set authname имя_пользователя
set authkey пароль
set dial
set login
add default HISADDR
[/sourcecode]

Существует такая проблема, когда при пропадании инета, pppoe со стороны клиента падает,а со стороны сервера сессия продолжает жить. Баг неприятный, т.к потом клиент дозванивается до сервера провайдера, соединяется,но остается без инета. Лечится костылем в виде скрипта, проверяющего доступность инета на любом внешнем хосте. И если инета нет, разорывает соединение и создает его снова.

[sourcecode language=»js»]
#cat /etc/test_pppoe.sh

#!/usr/local/bin/bash
pings="0";
a=5;
pings=`/sbin/ping -c $a 8.8.8.8 | grep -c "ttl"`
if [ "$pings" = "$a" ]; then
echo "OK" >> /var/log/ppp_restart.log
else

/usr/bin/killall ppp
/bin/kill -9 `cat /var/run/tun0.pid`
/sbin/ifconfig tun0 destroy

sleep 5

/usr/sbin/ppp -quiet -ddial -nat pppoe0
# INSATCOM название провайдера в /etc/ppp/ppp.conf

date >> /var/log/ppp_restart.log
fi
[/sourcecode]

Добавляем скрипт в крон каждую минуту:

[sourcecode language=»js»]
#ee /etc/crontab

*/1 * * * * root /usr/local/bin/bash /etc/test_pppoe.sh
[/sourcecode]

Все, теперь забываем про этот сервер, на нем всегда будет и инет по pppoe от провайдера, и vpn до центрального офиса..

Categories: Freebsd Tags: , , ,
  1. Пока что нет комментариев.
  1. Пока что нет уведомлений.

.