:: MENU ::
Главная
Looking Glass list
Online Nettools
Online IP Subnet Calculator
Online BGP tools
Основы маршрутизации
BGP протокол
OSPF протокол
Рук-во Quagga
Cisco команды
Ваш IP и провайдер
Файлы
Книги
Полезные ссылки
Советы
Unix ToolBox
IPv4 address space
IPv6 address space
CIDR IPv4
IPv6 prefixes
PPTP / PPPoE
Измерение скорости
Форум / Forum
Статьи (блог)
Контакты
Братья по разуму
github
Настройка PPPoE под FreeBSD :: Настройка PPTP под FreeBSD
Статья: Настраиваем PPPoE сервер на FreeBSD используя порт MPD5 |
Статья: PPPoE сервер на встроенном в FreeBSD демоне pppoed |
Пример конфигурационых файлов для поднятия серверов PPTP и PPPoE ( + Radius ) на FreeBSD (MPD)
Пример конфигурационых файлов для клиентской части PPPoE:
(Linux, FreeBSD, OpenBSD, Mac OS X Leopard (10.5), Mac OS X Tiger (10.4), OS/2)
Пример конфигурационых файлов для клиентской части PPTP на FreeBSDПример поднятия роутинга при коннекте
сервер PPPoE
Сервер: /usr/libexec/pppoed Запуск: /usr/libexec/pppoed -a HOSTNAME -p PROVIDER_NAME -l pppoe IFACE_NAME File /etc/ppp/ppp.conf pppoe: set timeout 0 set log Phase tun Chat Command Warning Error Alert Connect lcp ipcp set mtu 1450 set mru 1450 set speed sync set server /var/tmp/pppuser%d "" 0177 allow mode direct disable acfcomp protocomp deflate pred1 pap deny acfcomp protocomp deflate pred1 pap enable chap chap81 mppe lqr set dns 1.1.1.1 2.2.2.2 accept dns File /etc/ppp/ppp.secret login password 10.0.0.36 * * guest guest 10.255.255.2-10.255.255.254 * *
сервер PPPoE + Radius
Сервер pppoe: /usr/libexec/pppoed Radius: /usr/ports/net/freeradius File /etc/ppp/ppp.conf default: pppoe: set timeout 0 set log Phase tun Chat Command Warning Error Alert Connect lcp ipcp set mtu 1450 set mru 1450 set speed sync set server /var/tmp/pppuser%d "" 0177 allow mode direct disable acfcomp protocomp deny acfcomp disable deflate pred1 deny deflate pred1 disable pap enable chap enable chap81 enable MSCHAPv2 set dns 1.1.1.1 2.2.2.2 accept dns enable lqr set radius /etc/radius.conf File /etc/radius.conf auth RADIUS_SERVER_IP password acct RADIUS_SERVER_IP password File /usr/local/etc/raddb/clients.conf client localhost { secret = testtest shortname = localhost } File /usr/local/etc/raddb/radiusd.conf prefix = /usr/local exec_prefix = ${prefix} sysconfdir = ${prefix}/etc localstatedir = /var sbindir = ${exec_prefix}/sbin logdir = /var/log raddbdir = ${sysconfdir}/raddb radacctdir = ${logdir}/radacct # Location of config and logfiles. confdir = ${raddbdir} run_dir = ${localstatedir}/run/radiusd log_file = ${logdir}/radius.log libdir = ${exec_prefix}/lib pidfile = ${run_dir}/radiusd.pid user = nobody group = nobody max_request_time = 30 delete_blocked_requests = no cleanup_delay = 5 max_requests = 1024 bind_address = * #bind_address = 127.0.01 port = 0 #listen { # ipaddr = * # port = 0 # type = auth #} hostname_lookups = no allow_core_dumps = no regular_expressions = yes extended_expressions = yes log_stripped_names = no log_auth = yes log_auth_badpass = yes log_auth_goodpass = no usercollide = no lower_user = no lower_pass = no nospace_user = no nospace_pass = no # The program to execute to do concurrency checks. checkrad = ${sbindir}/checkrad # SECURITY CONFIGURATION security { max_attributes = 200 reject_delay = 1 status_server = no } # PROXY CONFIGURATION proxy_requests = no #$INCLUDE ${confdir}/proxy.conf # CLIENTS CONFIGURATION $INCLUDE ${confdir}/clients.conf # SNMP CONFIGURATION snmp = no #$INCLUDE ${confdir}/snmp.conf # THREAD POOL CONFIGURATION thread pool { start_servers = 5 max_servers = 32 min_spare_servers = 3 max_spare_servers = 10 max_requests_per_server = 0 } # MODULE CONFIGURATION modules { pap { encryption_scheme = crypt } chap { authtype = CHAP } mschap { authtype = MS-CHAP #use_mppe = no #require_encryption = yes #require_strong = yes #with_ntdomain_hack = no } acct_unique { key = "User-Name, Acct-Session-Id, NAS-IP-Address, Client-IP-Address, NAS-Port" } $INCLUDE ${confdir}/sql.conf radutmp { filename = ${logdir}/radutmp username = %{User-Name} case_sensitive = yes check_with_nas = yes # ?? callerid = "yes" } radutmp sradutmp { filename = ${logdir}/sradutmp perm = 0644 callerid = "no" } attr_filter { attrsfile = ${confdir}/attrs } always fail { rcode = fail } always reject { rcode = reject } always ok { rcode = ok simulcount = 0 mpp = no } expr { } digest { } } instantiate { } authorize { chap mschap sql } authenticate { Auth-Type PAP { pap } Auth-Type CHAP { chap } Auth-Type MS-CHAP { mschap } } preacct { } accounting { sql } session { sql } post-auth { } File /usr/local/etc/raddb/sql.conf sql { driver = "rlm_sql_mysql" server = "localhost" login = "root" password = "" radius_db = "radius" acct_table1 = "acc" acct_table2 = "acc" deletestalesessions = yes # Print all SQL statements when in debug mode (-x) sqltrace = yes sqltracefile = ${logdir}/sqltrace.sql num_sql_socks = 5 connect_failure_retry_delay = 60 #safe-characters = "@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-_: /" # ------------------------------ requests ----------------------------------- sql_user_name = "%{User-Name}" default_user_profile = "DEFAULT" query_on_not_found = no authorize_check_query = "SELECT id,name,'User-Password',password,'==' FROM users WHERE name = '%{SQL-User-Name}' ORDER BY id" authorize_reply_query = "SELECT id,name,'Framed-IP-Address',ip_addr,'=' FROM users WHERE name = '%{SQL-User-Name}' ORDER BY id" accounting_onoff_query = "UPDATE ${acct_table1} SET AcctStopTime='%S' WHERE AcctStopTime=0 AND FromNAS= '%{NAS-Identifier}' AND AcctStartTime <= '%S'" accounting_update_query = "UPDATE ${acct_table1} \ SET FramedIPAddress = '%{Framed-IP-Address}', \ WHERE AcctSessionId = '%{Acct-Session-Id}' \ AND UserName = '%{SQL-User-Name}' \ AND FromNAS= '%{NAS-Identifier}'" accounting_update_query_alt = "INSERT into ${acct_table1} \ (AcctSessionId, UserName, FromNAS, AcctStartTime, FramedIPAddress) values \ ('%{Acct-Session-Id}', '%{SQL-User-Name}', '%{NAS-Identifier}', \ DATE_SUB('%S',INTERVAL (%{Acct-Session-Time:-0} + %{Acct-Delay-Time:-0}) SECOND),%{Framed-IP-Address}')" accounting_start_query = "INSERT into ${acct_table1} \ (AcctSessionId, UserName, FromNAS, AcctStartTime, AcctStopTime, FramedIPAddress) values \ ('%{Acct-Session-Id}', '%{SQL-User-Name}', '%{NAS-Identifier}','%S',0,'%{Framed-IP-Address}')" accounting_start_query_alt = "UPDATE ${acct_table1} SET \ AcctStartTime = '%S' WHERE AcctSessionId = '%{Acct-Session-Id}' AND UserName = '%{SQL-User-Name}' AND FromNAS = '%{NAS-Identifier}'" accounting_stop_query = "UPDATE ${acct_table2} SET \ AcctStopTime = '%S' WHERE AcctSessionId = '%{Acct-Session-Id}' AND UserName = '%{SQL-User-Name}' AND FromNAS = '%{NAS-Identifier}'" accounting_stop_query_alt = "INSERT into ${acct_table2} \ (AcctSessionId, UserName, FromNAS, AcctStartTime, AcctStopTime, FramedIPAddress) values\ ('%{Acct-Session-Id}', '%{SQL-User-Name}', '%{NAS-Identifier}', DATE_SUB('%S', INTERVAL (%{Acct-Session-Time:-0} + %{Acct-Delay-Time:-0}) SECOND), '%S', '%{Framed-IP-Address}')" simul_count_query = "SELECT COUNT(*) FROM ${acct_table1} WHERE UserName='%{SQL-User-Name}' AND AcctStopTime = 0" simul_verify_query = "SELECT id, AcctSessionId, UserName, FromNAS, FramedIPAddress FROM ${acct_table1} WHERE UserName='%{SQL-User-Name}' AND AcctStopTime = 0" # group_membership_query = "SELECT GroupName FROM ${usergroup_table} WHERE UserName='%{SQL-User-Name}'" # postauth_query = "INSERT into ${postauth_table} (id, user, pass, reply, date) values ('', '%{User-Name}', '%{User-Password:-Chap-Password}', '%{reply:Packet-Type}', NOW())" # # Set to 'yes' to read radius clients from the database ('nas' table) #readclients = yes } ADD to file /etc/rc.conf radiusd_enable="YES" File rad.sql # Database : `radius` # # Table structure for table `acc` # CREATE TABLE `acc` ( `id` bigint(20) NOT NULL auto_increment, `UserName` varchar(64) NOT NULL default '', `AcctStartTime` datetime NOT NULL default '0000-00-00 00:00:00', `AcctStopTime` datetime NOT NULL default '0000-00-00 00:00:00', `FramedIPAddress` varchar(15) NOT NULL default '', `FromNAS` varchar(32) NOT NULL default '', `AcctSessionId` varchar(32) NOT NULL default '', PRIMARY KEY (`id`) ) TYPE=MyISAM AUTO_INCREMENT=3 ; # -------------------------------------------------------- # # Table structure for table `users` # CREATE TABLE `users` ( `id` int(11) unsigned NOT NULL auto_increment, `name` varchar(32) NOT NULL default '', `password` varchar(32) NOT NULL default '', `ip_addr` varchar(32) NOT NULL default '', PRIMARY KEY (`id`), KEY `name` (`name`) ) TYPE=MyISAM; # # Table structure for table `ppp_reply` # CREATE TABLE `ppp_reply` ( `id` int(11) unsigned NOT NULL auto_increment, `UserName` varchar(64) NOT NULL default '', `Attribute` varchar(32) NOT NULL default '', `op` char(2) NOT NULL default '=', `Value` varchar(253) NOT NULL default '', PRIMARY KEY (`id`), KEY `UserName` (`UserName`(32)) ) TYPE=MyISAM; # # Dump for table `ppp_reply` # INSERT INTO `ppp_reply` (`id`, `UserName`, `Attribute`, `op`, `Value`) VALUES (1, '', 'Framed-IP-Netmask', '=', '255.255.255.255'), (2, '', 'Framed-Protocol', '=', 'PPP'), (3, '', 'Service-Type', '=', 'Framed-User'), (4, '', 'Framed-MTU', '=', '1492');
PPPoE + PPTP on MPD + Radius
Сервер: /usr/ports/net/mpd Ядро: options NETGRAPH #netgraph(4) system options NETGRAPH_ASYNC options NETGRAPH_BPF options NETGRAPH_ECHO options NETGRAPH_ETHER options NETGRAPH_HOLE options NETGRAPH_IFACE options NETGRAPH_KSOCKET options NETGRAPH_L2TP options NETGRAPH_LMI # MPPC compression requires proprietary files (not included) #options NETGRAPH_MPPC_COMPRESSION options NETGRAPH_MPPC_ENCRYPTION options NETGRAPH_ONE2MANY options NETGRAPH_PPP options NETGRAPH_PPTPGRE options NETGRAPH_RFC1490 options NETGRAPH_SOCKET options NETGRAPH_TEE options NETGRAPH_TTY options NETGRAPH_UI options NETGRAPH_VJC File /usr/local/etc/mpd/mpd.conf default: load ppoe00 load ppoe01 load ppoe02 load pptp00 load pptp01 ppoe00: new -i ng0 ppoe0 ppoe0 set pppoe iface fxp0 load ppoe_def ppoe01: new -i ng1 ppoe1 ppoe1 set pppoe iface fxp1 load ppoe_def ppoe02: new -i ng2 ppoe2 ppoe2 set pppoe iface fxp2 load ppoe_def pptp00: new -i ng300 pptp0 pptp0 load pptp_def pptp01: new -i ng301 pptp1 pptp1 load pptp_def pptp_def: set bundle enable multilink set link type pptp set link no acfcomp protocomp set link no pap set link yes chap-msv1 set link yes chap-msv2 set link yes chap-md5 set ipcp no vjcomp set ccp no mppc set ccp no mpp-e40 set ccp no mpp-e56 set ccp no mpp-e128 set ccp yes mpp-stateless set pptp self 10.11.50.1 set pptp enable incoming set pptp disable originate load common ppoe_def: set pppoe enable incoming set pppoe disable originate set pppoe service "*" set iface idle 1800 set iface mtu 1500 set iface enable tcpmssfix set bundle disable multilink set link yes acfcomp protocomp set link disable pap chap set link enable chap set link mtu 1492 set link mru 1492 set link max-redial -1 set link enable magicnum set link enable check-magic set ipcp enable vjcomp load common common: set iface disable on-demand set ipcp ranges 192.168.1.1/32 10.11.50.0/24 set iface disable on-demand set iface disable proxy-arp set link keep-alive 60 180 set bundle max-logins 1 set bundle disable compression load radius set ipcp dns 1.1.1.1 radius: set radius config /etc/radius.conf set radius retries 3 # set radius timeout 30 set radius me NAME_FROM_HOSTS set radius acct-update 30 set bundle enable radius-auth set bundle enable radius-acct set iface enable radius-session set ipcp enable radius-ip File /usr/local/etc/mpd/mpd.links # # For our PPTP server # pptp00: set link type pptp set pptp enable incoming set pptp disable originate pptp01: set link type pptp set pptp enable incoming set pptp disable originate # # For our PPoE server # ppoe0: set link type pppoe set pppoe enable incoming set pppoe disable originate ppoe1: set link type pppoe set pppoe enable incoming set pppoe disable originate ppoe2: set link type pppoe set pppoe enable incoming set pppoe disable originate
Для того, что бы к MPD могли конектиться Windows 2000 клиенты нужно: создаем файлик /usr/ports/net/mpd/files/patch-bb следующего содержания: --- src/lcp.c.orig Wed Jul 14 18:02:12 2004 +++ src/lcp.c Wed Jul 14 18:02:13 2004 @@ -564,8 +564,10 @@ if (!LCP_PEER_REJECTED(lcp, TY_ACCMAP)) cp = FsmConfValue(cp, TY_ACCMAP, -4, &lcp->want_accmap); } +/* if (!LCP_PEER_REJECTED(lcp, TY_MRU)) cp = FsmConfValue(cp, TY_MRU, -2, &lcp->want_mru); +*/ if (lcp->want_magic && !LCP_PEER_REJECTED(lcp, TY_MAGICNUM)) cp = FsmConfValue(cp, TY_MAGICNUM, -4, &lcp->want_magic); if (lcp->want_callback && !LCP_PEER_REJECTED(lcp, TY_CALLBACK)) { Далее пересобираем MPD, но патч может и не прокатить и выдать ошибку, для этого идем в диру work и папку src, ищем файлик lcp.c и коментируем в нем две строчки (выделены в патче) затем собираем и инсталим MPD
Запуск: /usr/local/sbin/mpd -b Radius настраивается как в предыдущем примере Проверка Radius: Проверка FreeRadius Для проверки - с локальной машины (надеюсь, ее в clients.conf вписали) выполняем radtest user password < IP-адрес radius-сервера > 1812 < пароль к radius-серверу > , например, radtest testuser testpassword 10.1.1.1 1812 test2 Конечно, testuser и testpassword должны быть прописаны в базе пользователей. В итоге получим: Sending Access-Request of id 148 to 10.1.1.1:1812 User-Name = "testuser" User-Password = "W\202$Y\374x\251p^\302M\376\202U\212\031" NAS-IP-Address = host.domain NAS-Port = 1812 rad_recv: Access-Accept packet from host 10.1.1.1:1812, id=41, length=32 Framed-IP-Address = 10.1.5.2 Framed-IP-Netmask = 255.255.255.255 То-есть, радиус-сервер проверил правильность пароля для этого пользователя и выдал IP-адрес. В случае, если пароль не прошел, то получим rad_recv: Access-Reject packet from host 10.1.1.1:1812, id=148, length=20
сервер PPTP на PopTop
Сервер: /usr/ports/net/poptop/ File /etc/ppp/ppp.conf: loop: set timeout 0 set log phase chat connect lcp ipcp command set device localhost:pptp set dial set login set server /tmp/loop "" 0177 loop-in: set timeout 0 set log phase lcp ipcp command allow mode direct pptp: debug load loop # enable PAP # enable MSCHAP enable MSCHAPv2 # enable CHAP disable deflate pred1 deny deflate pred1 disable pap # proxyarp # set mppe * * disable ipv6cp #enable mppc accept dns set dns 1.1.1.1 2.2.2.2 # set nbns 10.11.50.3 set device !/etc/ppp/secure File /etc/ppp/secure: #!/bin/sh exec /usr/sbin/ppp -direct loop-in File /etc/ppp/pptpd.conf option /etc/ppp/ppp.conf speed 115200 proxyarp pidfile /var/run/pptpd.pid File /etc/ppp/ppp.linkdown pptp: ! sh -c "/usr/local/sbin/vpn_down.pl USER HISADDR INTERFACE UPTIME" File /etc/ppp/ppp.linkup pptp: ! sh -c "/usr/local/sbin/vpn_up.pl USER HISADDR INTERFACE" ! sh -c "/usr/local/sbin/vpn_up_log.pl USER HISADDR" File /usr/local/sbin/vpn_down.pl #!/usr/bin/perl use Mysql; $host="HOST"; $database="DATABASE"; $user="LOGIN"; $pass="PASSWORD"; $dbh = Mysql->Connect($host,$database,$user,$pass) or print $Mysql::db_errstr; $dbh->SelectDB($database) or print $Mysql::db_errstr; $action="linkdown"; $x=scalar(@ARGV); $user=@ARGV[0]; $ext_ip=@ARGV[1]; $uptime=@ARGV[3]; $date=`/bin/date`; @out=split(' ',$date); $form_date="@out[1] @out[2] @out[3]"; #print "$uptime\n"; $sth=$dbh->Query("select * from vpn where login='$user'"); @arr=$sth->FetchRow; while(! ($sth=$dbh->Query("INSERT into vpn_all_log (ownid, login,ext_ip, int_ip, date, up_down, uptime) VALUES ('@arr[4]' ,'$user','@arr[2]','@arr[1]','$form_date','$action','$uptime')"))) { print "\nretrying ($Mysql:db_errstr)\n"; sleep 3; } while(! ($sth=$dbh->Query("DELETE from vpn where login='$user'"))) { print "\nretrying ($Mysql:db_errstr)\n"; sleep 3; } File /usr/local/sbin/vpn_up.pl #!/usr/bin/perl use Mysql; $host=""; $database=""; $user=""; $pass=""; $dbh = Mysql->Connect($host,$database,$user,$pass) or print $Mysql::db_errstr; $dbh->SelectDB($database) or print $Mysql::db_errstr; $x=scalar(@ARGV); $user=@ARGV[0]; $ext_ip=@ARGV[1]; @out=`cat /var/log/ppp.log | grep $user`; $x=scalar(@out); @out=split('\[',@out[$x-1]); @out1=split(' ',@out[0]); @out=split('\]',@out[1]); $pid=@out[0]; $out=`ps -ax | grep pptp`; @out=split('\n',$out); $x=scalar(@out); for ($i=0;$i<$x;$i++){ @out2=split(' ',@out[$i]); if (@out2[0] eq $pid){$o=$i;$i=$x;$pr++;} } #open (F,">>/root/vpn_guest.txt"); if ($pr){ @out=split(' ',@out[$o-1]); @out=`sockstat | grep @out[0]`; @out=split(' ',@out[0]); @out=split(':',@out[6]); $date=sprintf ("%s %s %s",@out1[0],@out1[1],@out1[2]); $int_ip=@out[0]; @chk_local=split('\.',$int_ip); $ip=sprintf("10.10.%s.%s",@chk_local[2],@chk_local[3]); $sth=$dbh->Query("select ownid from ip where ip='$ip'"); @arr1=$sth->FetchRow; $sth=$dbh->Query("select * from ip where ownid='@arr1[0]'"); $pr=0; while (@arr2=$sth->fetchrow){ if (@arr2[1] eq $ext_ip){$pr++;} # print F "@arr2[1] eq $ext_ip\n"; @guest=split('\.',$ext_ip); $gue="@guest[0].@guest[1].@guest[2]"; if ($gue eq "10.10.255"){$pr++;} # print F "$gue eq 10.10.255\n"; } if (!$pr){ print "Fucking Hacker!!!\n"; while(! ($sth=$dbh->Query("INSERT into vpn_unleg (login,ext_ip, int_ip, date, pid) VALUES ('$user','$ext_ip','$int_ip','$date','$pid')"))) { print "\nretrying ($Mysql:db_errstr)\n"; sleep 3; } } while(! ($sth=$dbh->Query("INSERT into vpn (login,ext_ip, int_ip, date, pid) VALUES ('$user','$ext_ip','$int_ip','$date','$pid')"))) { print "\nretrying ($Mysql:db_errstr)\n"; sleep 3; } while(! ($sth=$dbh->Query("DELETE from vpn where int_ip=''"))) { print "\nretrying ($Mysql:db_errstr)\n"; sleep 3; } } #close (F); File /usr/local/sbin/vpn_up_log.pl #!/usr/bin/perl use Mysql; $host=""; $database=""; $user=""; $pass=""; $dbh = Mysql->Connect($host,$database,$user,$pass) or print $Mysql::db_errstr; $dbh->SelectDB($database) or print $Mysql::db_errstr; $action="linkup"; $x=scalar(@ARGV); $user=@ARGV[0]; $assip=@ARGV[1]; open (F,">>/usr/local/www/info/clvpn.html"); @out=`/bin/cat /var/log/ppp.log | grep $user`; $x=scalar(@out); @out=split('\[',@out[$x-1]); @out1=split(' ',@out[0]); @out=split('\]',@out[1]); $pid=@out[0]; `/bin/sleep 1`; $out=`/bin/ps -ax | /usr/bin/grep pptp`; @out=split('\n',$out); $x=scalar(@out); for ($i=0;$i<$x;$i++){ @out2=split(' ',@out[$i]); if (@out2[0] eq $pid){$o=$i;$i=$x;$pr++;} } if ($pr){ print "PID: $pid @out[$o-1]\n"; @out=split(' ',@out[$o-1]); @out=`sockstat | grep @out[0]`; @out=split(' ',@out[0]); @out=split(':',@out[6]); $int_ip="@out[0]"; $date="@out1[0] @out1[1] @out1[2]"; $sth=$dbh->Query("INSERT into vpn_all_log (login, ownid,ext_ip, int_ip, date, up_down) VALUES ('$user','$pid','$assip','$int_ip','$date', '$action')"); print F "@out1[0] @out1[1] @out1[2]: "; print F "Login: $user, Local IP: $int_ip, VPN IP: $assip
\n"; print "Login: $user, Local IP: $int_ip, VPN IP: $assip
\n"; }else{ print F "No such process found!\n"; } close (F); File /etc/ppp/ppp.secret login password 10.0.0.36 *
Настройка клиентской части на *nix PPPoE
Внимание! Дефолтного роутинга не должно бытьPPPoE клиент Linux
Установить pppd
Установить пакет PPPoE - Roaring Penguin
Убедиться, что в ядре включена поддержка ррр или поддержка доступна в виде модуля. Если не включена, то пересоберите ядро с поддержкой ррр ppp должен быть с патчем для MS-CHAP V2 Добавить в /etc/ppp/chap-secrets: Login * Password * (где Login и Password - Ваши логин и пароль для входа в VPN) Добавить в /etc/ppp/options:
require-mschap-v2 файл /etc/ppp/pppoe.conf должен выглядеть так: ETH='eth0' #(eth0 - имя Вашего интерфейса) USER='login' #(login - Ваш логин) DEMAND=no DNSTYPE=NOCHANGE PEERDNS=no DNS1= DNS2= DEFAULTROUTE=yes CONNECT_TIMEOUT=30 CONNECT_POLL=2 ACNAME= SERVICENAME=SERVICE_NAME #(SERVICE_NAME - имя сервис нейма выданного провайдером) PING="." CF_BASE=`basename $CONFIG` PIDFILE="/var/run/$CF_BASE-pppoe.pid" SYNCHRONOUS=no CLAMPMSS=1412 LCP_INTERVAL=20 LCP_FAILURE=3 PPPOE_TIMEOUT=80 FIREWALL=NONE LINUX_PLUGIN= PPPOE_EXTRA="" PPPD_EXTRA="" Запуск VPN вручную: pppoe-start Остановка VPN вручную: pppoe-stop Для удаления дефолтного роутинга при загрузке следует закомментировать строки в Mandrake: /etc/sysconfig/network #GATEWAY=XXX.XXX.XXX.XXX
PPPoE клиент FreeBSD:
Включить следующее в /etc/ppp/ppp.conf: pppoe: set log Phase Chat LCP IPCP CCP tun command set device PPPoE:iface:srvname #Заменить iface на Ваш интерфейс (например, rl0), а srvname заменить на service-name вашего провайдера set authname login #Заменить login на Ваш логин set authkey password #Заменить password на Ваш пароль enable lqr set dial set login set ifaddr 0.0.0.0/0 0.0.0.0/0 add default HISADDR Примечание: Строки после метки (рррое:) должны начинаться с пробела! Запуск VPN вручную: ppp -ddial pppoe Остановка VPN вручную: killall -9 ppp ifconfig delete tun0 Запуск VPN при загрузке: Включить следующее в /etc/rc.conf: ppp_enable="YES" ppp_mode="ddial" ppp_profile="pppoe" ppp_nat="NO" ppp_user="root"
PPPoE клиент OpenBSD:
Включить следующее в /etc/ppp/ppp.conf:default: set log Phase Chat LCP IPCP CCP tun command set redial 15 0 set reconnect 15 10000 pppoe: set device "!/usr/sbin/pppoe -n starnet -i sk0" # Вместо sk0 подставить имя вашего интерфейса set mtu max 1492 set speed sync disable acfcomp protocomp deny acfcomp enable lqr set dial set login set timeout 0 set authname MyName # Логин, без кавычек set authkey MyPass # Пароль без кавычек add! default HISADDR enable dns enable mssfixup Запуск VPN вручную: ppp -ddial pppoe Остановка VPN вручную: kill -9 ppp-pid #ppp-pid - номер процесса ppp демона ifconfig delete tun0 Запуск VPN при загрузке: Включить следующее в /etc/rc.local: ppp -ddial pppoe
PPPoE клиент Mac OS X Leopard (10.5)
1. Перейдите в "System Preferences"
Сделайте клик по "Network" (Скриншот №1)
Скриншот №1
2. Выберите слева в колонке интерфейс "Ethernet:"
Выберите в строке "Configure:" пункт "Manually"
В поле "IP Address:" введите ваш IP-адрес
В поле "Subnet Mask:" нужно указать маску подсети, например "255.255.255.0" (Скриншот №2)
Слева в колонке нажмите кнопку "+" (плюс)
Нажмите "Apply"
Скриншот №2
3. Выберите в строке "Interface:" пункт "PPPoE"
Выберите в строке "Ethernet:" пункт "Ethernet"
В поле "Service Name:" вписываем "PPPoE" (Скриншот №3)
Нажмите "Create"
Скриншот №3
4. В поле "Service Name:" вписываем сервис-нейм выданный провайдером, например starnet
Далее Вам нужно заполнить поля "Account Name" и "Password" (Скриншот №4)
"Account Name" = "Пользователь"
"Password" = "Пароль"
Нажмите "Advanced"
Скриншот №4
5. Выберите вкладку "TCP/IP"
Выберите в строке "Configure IPv4:" пункт "Using PPP"
Выберите в строке "Configure IPv6:" пункт "Off" (Скриншот №5)
Скриншот №5
6. Выберите вкладку "PPP"
Отметьте пункт "Send PPP echo packets"
Отметьте пункт "Use verbose logging" (Скриншот №6)
Нажмите "OK"
Когда окно закроется, нажмите кнопку "Connect"
Скриншот №6
PPPoE клиент Mac OS X Tiger (10.4)
1. Перейдите в "System Preferences"
Сделайте клик по "Network" (Скриншот №1)
Скриншот №1
2. Выберите в строке "Show:" пункт "Built-in Ethernet"
Выберите вкладку "TCP/IP"
Выберите в строке "Configure IPv4:" пункт "Manually"
В поле "IP Address:" введите ваш IP-адрес
В поле "Subnet Mask:" ввести маску подсети, например"255.255.255.0" (Скриншот №2)
Выберите в строке "Show:" выберите "Network Port Configurations" и нажмите "New"
Нажмите "Apply"
Скриншот №2
3. В поле "Name:" введите "PPPoE"
Выберите в строке "Port:" пункт "Built-in Ethernet" (Скриншот №3)
Нажмите "OK"
Скриншот №3
4. Выберите вкладку "PPPoE"
Отметьте пункт "Connect using PPPoE"
Отметьте пункт "Show PPPoE status in menu bar"
Далее Вам нужно заполнить поля "Account Name" и "Password" (Скриншот №4)
"Account Name" = "Пользователь"
"Password" = "Пароль" –
В поле "PPPoE Service Name:" вписываем сервис-нейм выданный провайдером, например starnet
Нажмите "PPPoE Options"
Скриншот №4
5. Отметьте пункт "Send PPP echo packets"
Отметьте пункт "Use verbose logging" (Скриншот №5)
Скриншот №5
6. Выберите в "menu bar" иконку "PPPoE"
Выберите пункт "Connect" (Скриншот №6)
Скриншот №6
PPPoE клиент OS/2
Клиент:SafeFire PPP/Links (SFL)
сайт разработчика: http://www.lgs.kiev.ua
файл для скачивания: http://www.lgs.kiev.ua/beta/sf11-12.zip
Установка:
Разархивировать sf11-12.zip во временный каталог
Запустить install.cmd и инсталлировать SFL.
Инсталлятор попросит указать каталог для установки и разрешение на изменение файла CONFIG.SYS
Указать полный путь и разрешить модификацию.
Настройка:
Определим что:
%LGSDIR% - полный путь к каталогу, в который производилась установка SFL;
%BOOTDRV% - буква диска, с которого загружалась OS/2.
Подключить SFL к сетевому интерфейсу, следуя указаниям из документации %LGSDIR%\doc\eng\pppoe.htm
Процесс описан детально, включая скриншоты окон.
Перед выполнением данной настройки настоятельно рекомендуется сделать копию файлов %BOOTDRV%:\CONFIG.SYS и %BOOTDRV%:\IBMCOM\PROTOCOL.INI
В каталоге %LGSDIR%\config находим файл OE_MEDIUM.CFG
Это текстовой файл, который можно редактировать в любом текстовом редакторе.
В этом файле находим секцию [ppp]
По умолчанию она выглядит следующим образом:
-----------
[ppp] @include "oe_ppp" auth.client.clientname=ENTER YOUR USER NAME HERE auth.client.clientpass=ENTER YOUR PASSWORD HERE-----------
Заменяем:
ENTER YOUR USER NAME HERE на "Пользователь"
ENTER YOUR PASSWORD HERE на "Пароль" –
Так-же в данную секцию дописываем следующими строками:
-----------------------------
;установка параметров авторизации auth.server.chap.enabled=1 auth.server.chap.servername=starnet ;динамически назначать адреса ip.address=0 ip.peeraddress=0-----------------------------
В итоге секция выглядит следующим образом (пример):
-----------------------------
[ppp] @include "oe_ppp"-----------------------------
auth.client.clientname=12345-1 auth.client.clientpass=123456 auth.server.chap.enabled=1 auth.server.chap.servername=starnet ip.address=0 ip.peeraddress=0
Сохраняем файл.
В том-же каталоге, где расположен файл oe_medium.cfg,
находим файл DEFAULT.CFG и открываем его для редактирования.
Находим секцию [oe_ppp]:
-----------------------------
[oe_ppp] load=pl_ppp:pppoe bind=ethernet:ether.io lcp.recv.mru=1492 lcp.send.mtu=1492-----------------------------
В эту секцию необходимо добавить одну строку:
-----------------------------
pppoe.servicename=starnet-----------------------------
Строчки:
-----------------------------
"lcp.recv.mru=1492" "lcp.send.mtu=1492"-----------------------------
можно закомментировать.
В итоге секция выглядит следующим образом (пример):
-----------------------------
[oe_ppp] load=pl_ppp:pppoe bind=ethernet:ether.io ;lcp.recv.mru=1492 ;lcp.send.mtu=1492 pppoe.servicename=starnet-----------------------------
Сохраняем файл.
Теперь необходимо добавить автоматическую загрузку SFL при старте системы.
Для этого в каталоге %LGSDIR%\bin создаём коммандный файл RUNPPPOE.CMD следующего содержания:
-----------------------------
SETLOCAL CD %LGSDIR%\bin DETACH sfppp -Coe_medium.cfg ENDLOCAL-----------------------------
Наиболее оптимальным, на мой взгляд, является вызов данного коммандного файла сразу после инициализации сетевых интерфейсов.
Для этого в файл %BOOTDRV%:\MPTN\BIN\setup.cmd добавляем строку:
-----------------------------
call %LGSDIR%\bin\RUNPPPOE.CMD-----------------------------
Примерный вид файла %BOOTDRV%:\MPTN\BIN\setup.cmd
-----------------------------
route -fh-----------------------------
arp -f
ifconfig lo 127.0.0.1 ifconfig lan0 192.168.XX.YY netmask 255.255.255.0 metric 0 mtu 1492 REM ifconfig lan1 nil metric 1 mtu 1500 REM ifconfig lan2 nil metric 1 mtu 1500 REM ifconfig lan3 nil metric 1 mtu 1500 REM ifconfig lan4 metric 1 mtu 1500 REM ifconfig lan5 metric 1 mtu 1500 REM ifconfig lan6 metric 1 mtu 1500 REM ifconfig lan7 metric 1 mtu 1500 REM ifconfig sl0 route add default 192.168.XX.ZZ -hopcount 1 ipgate on call %LGSDIR%\bin\RUNPPPOE.CMD detach fssd cfgfilt -u -i -d
Перезагружаем систему.
Проверено на OS/2 Warp 4.0 with fix16 + postfix (kernel: 14.091a)
inetver:
Version numbers of TCP/IP protocol drivers:
SOCKETS.SYS: 6.3100
AFOS2.SYS: 6.3100
AFINET.SYS: 6.3100
Настройка клиентской части PPTP на FreeBSD
Установить: /usr/ports/net/pptpclientДобавляем запуск при загрузке компа File: /usr/local/etc/rc.d/vpn.sh
#!/bin/sh /etc/ppp/vpn_up.sh &
Делаем файл с бесконечным циклом:
File /etc/ppp/vpn_up.sh
#!/bin/sh while [ 1 ] do /usr/local/sbin/pptp PPTP_SERVER_IP mypptp sleep 5 doneЗамените PPTP_SERVER_IP на IP-адрес сервера вашего провайдера
File /etc/ppp/ppp.conf
#Название соединения mypptp: set authname USERNAME set authkey PASSWORD set timeout 0 set ifaddr 0 0 add default HISADDRВнимание ! Все строки после mypptp начинаются с пробела, это обязательно !
Делаем файлы исполняемыми:
chmod a+x /usr/local/etc/rc.d/vpn.sh chmod a+x /etc/ppp/vpn_up.sh
Запускаем /usr/local/etc/rc.d/vpn.sh
Итог: Если соединение разорвется, то оно само восстановится из-за бесконечного цикла.
Поднятие роутинга
Сервер: MPD Описание: к 1-му серверу по PPTP цепляются несколько клиентов Клиенты нумеруются по номеру (последний октет IP-адреса): 2,3,4,5 и т.д. После входа в PPTP каждому клиенту выдается IP 192.168.10.ХХ, где ХХ номер клиента. Задача: нужно при коннекте определенного клиента добавлять роутинг до какой либо сети через этого клиента например: /sbin/route add 192.168.12.0/24 192.168.100.2 /sbin/route add 192.168.11.0/24 192.168.100.3 /sbin/route add 192.168.14.0/24 192.168.100.4 /sbin/route add 192.168.16.0/24 192.168.100.5 Решение: File mpd.conf: pptp00: new -i ng0 pptp0 pptp0 set iface up-script /usr/local/etc/mpd/lup.pl set iface down-script /usr/local/etc/mpd/link-down load pptp_def File lup.pl: #!/usr/bin/perl @net=("","",12,11,14,16); open (F,">>/usr/local/etc/mpd/liup.log"); $date=`date`; if ($ARGV[3]=~/^\d{1,3}\.\d{1,3}\.\d{1,3}\.(\d{1,3})$/){ $cmd=sprintf ("/sbin/route add 192.168.%s.0/24 -iface %s",$net[$1],$ARGV[0]); printf F ("Date: %s > addr: %s [%s]\n\n",$date,$ARGV[3],$cmd); `$cmd`; }else{ printf F ("Date: %s > Fuckup in address: %s\n\n",$date,$ARGV[3]); } close (F); где $1 возникает из регекспа, $1 это (\d{1,3}), т.е. то что заключено в скобки массив @ARGV это то что передает MPD при коннекте клиента посмотреть что отдает MPD можно так: создать файл ну например link-up и в нем: echo $1 >>/usr/local/etc/mpd/param echo $2 >>/usr/local/etc/mpd/param echo $3 >>/usr/local/etc/mpd/param echo $4 >>/usr/local/etc/mpd/param echo $5 >>/usr/local/etc/mpd/param echo $6 >>/usr/local/etc/mpd/param далее прописать его в mpd.conf как скрипт линкапа set iface up-script /usr/local/etc/mpd/link-up