Настройка VPN-подключения по pptp/l2tp
(на примере Корбины).

Ставим mpd4
cd /usr/ports/net/mpd4 ; make install clean BATCH=yes

(если речь идет о русской сборке PC-BSD-RU 1.4.X, то там уже есть и mpd4 и скрипты в комплекте).

Также понадобятся следующие строчки в ядре (возможно не все):

options         NETGRAPH
options         NETGRAPH_ETHER
options         NETGRAPH_NETFLOW
options         NETGRAPH_SOCKET
options         NETGRAPH_TEE
#options         NETGRAPH_MPPC_ENCRYPTION
#options         NETGRAPH_MPPC_COMPRESSION
options         NETGRAPH_BPF
options         NETGRAPH_IFACE
options         NETGRAPH_KSOCKET
options         NETGRAPH_PPP
options         NETGRAPH_PPTPGRE
options         NETGRAPH_TCPMSS
options         NETGRAPH_VJC
options         NETGRAPH_ONE2MANY
options         NETGRAPH_RFC1490
options         NETGRAPH_TTY
options         NETGRAPH_UI


Либо можно то же самое подгрузить модулями.
Для этого добавляем в /boot/loader.conf строчки:

netgraph_load="YES"
ng_ether_load="YES"
ng_netflow_load="YES"
ng_socket_load="YES"
ng_tee_load="YES"
ng_bpf_load="YES"
ng_iface_load="YES"
ng_ksocket_load="YES"
ng_ppp_load="YES"
ng_pptpgre_load="YES"
ng_tcpmss_load="YES"
ng_vjc_load="YES"
ng_one2many_load="YES"
ng_rfc1490_load="YES"
ng_tty_load="YES"
ng_UI_load="YES"


Во-первых надо выянить - какой у Вас шлюз:

> netstat -rn
Routing tables

Internet:
Destination        Gateway           Flags   Refs      Use  Netif Expire
default            10.27.24.1        UGS         0  3425048    nfe0
...


Вот этот 10.27.24.1 рядом со словом default он и есть

Добавляем в файл /etc/rc.conf строчки:

static_routes="dns1 dns2 vpn l2tp corbina"
route_dns1="-host 213.234.192.8 ТВОЙ_ШЛЮЗ"
route_dns2="-host 85.21.192.3 ТВОЙ_ШЛЮЗ"
route_vpn="-net 85.21.0.0/24 ТВОЙ_ШЛЮЗ"
route_l2tp="-net 85.21.17.0/24 ТВОЙ_ШЛЮЗ"
route_corbina="-net 10.0.0.0/8 ТВОЙ_ШЛЮЗ"

mpd_enable="YES"
mpd_flags="-b"


То есть были заданы статические маршруты для днс и впн серверов (pptp/l2tp) и внутренней сети Корбины.

Файл /usr/local/etc/mpd4/mpd.conf

default:
    #load vpn
    load l2tp

vpn:
    new -i ng0 vpn vpn
    set auth authname "ТВОЙ_ЛОГИН"
    set auth password "ТВОЙ_ПАРОЛЬ"
    set bundle disable multilink
    set iface up-script /usr/local/etc/mpd4/io-up.sh
    set iface down-script /usr/local/etc/mpd4/io-down.sh
    set link no pap acfcomp protocomp
    set link disable chap
    set link accept chap
    set link keep-alive 30 10
    set ipcp no vjcomp
    set iface disable on-demand
    set iface idle 0
    open

l2tp:
    new -i ng0 l2tp l2tp
    set iface idle 0
    set auth authname "ТВОЙ_ЛОГИН"
    set auth password "ТВОЙ_ПАРОЛЬ"
    set bundle disable multilink
    set iface up-script /usr/local/etc/mpd4/io-up.sh
    set iface down-script /usr/local/etc/mpd4/io-down.sh
    set link no pap
    set link accept chap
    set ipcp no vjcomp
    set link keep-alive 60 180
    set link max-redial 0
    set bundle disable noretry
    set iface enable tcpmssfix
    open


Файл /usr/local/etc/mpd4/mpd.links
vpn:
    set link type pptp
    set pptp peer vpn.corbina.ru
    set pptp enable originate incoming outcall
    set pptp disable windowing
l2tp:
  set link type l2tp
  set l2tp peer l2tp.corbina.net
  set l2tp enable originate


Файл /usr/local/etc/mpd4/mpd.secret

ТВОЙ_ЛОГИН       "ТВОЙ_ПАРОЛЬ"

Файл /usr/local/etc/mpd4/io-up.sh

#!/bin/sh

ip_def_gw=ТВОЙ_ШЛЮЗ

route delete $4
route add $4 $ip_def_gw
route delete default
route add default $4

#vpn.corbina.net
route add -net 85.21.0.0/24        $ip_def_gw
#l2tp.corbina.net
route add -net 85.21.17.0/24    $ip_def_gw

### Добавляем маршруты до внутренних серверов

route add -host 85.21.0.36         $ip_def_gw
route add -host 85.21.79.2        $ip_def_gw
route add -host 85.21.79.25        $ip_def_gw
route add -host 85.21.79.100       $ip_def_gw
route add -host 195.14.50.16       $ip_def_gw
route add -host 195.14.50.21       $ip_def_gw # ftp4.ru.freebsd.org, cvsup6.ru.freebsd.org
route add -host 195.14.50.26       $ip_def_gw
route add -host 195.14.50.93       $ip_def_gw
route add -host 85.21.88.130 $ip_def_gw #corbina.tv
route add -host 85.21.79.12 $ip_def_gw #irc.corbina.ru
route add -host 10.2.3.14 $ip_def_gw
route add -host 85.21.192.3 $ip_def_gw
route add -host 213.234.192.8 $ip_def_gw
route add -host 10.187.11.1 $ip_def_gw
route add -host 10.187.58.100 $ip_def_gw
# dc.corbina.net
route add -host 85.21.79.38 $ip_def_gw
route add -host 85.21.79.38 $ip_def_gw

echo $4 > /tmp/dr


Файл /usr/local/etc/mpd4/io-down.sh
#!/bin/sh

dr=`cat /tmp/dr`
route delete $dr
route delete default
route add default ТВОЙ_ШЛЮЗ
rm -f /var/dr


Если необходимо сделать NAT для локалки, то в io-up.sh в конец добавляется следующий код:

В скрипте - nfe0 - интерфейс, смотрящий на корбину, rl0 - в локалку
192.168.0.0/24 - внутренняя подсеть

## Поднимает НАТ
#Чистим. Можно только в io-down.sh
if [ -f /var/run/natd.pid ] ; then
kill `cat /var/run/natd.pid`
fi
if [ -f /var/run/natd2.pid ] ; then
kill `cat /var/run/natd2.pid`
fi

#Таблица к внутренним ресурсам
# оно же правило через который nat куда ходить

ipfw table 12 flush
ipfw table 12 add 195.14.0.0/16
ipfw table 12 add 85.21.79.0/24
ipfw table 12 add 10.1.0.0/16
ipfw table 12 add 10.2.0.0/15
ipfw table 12 add 10.4.0.0/14
ipfw table 12 add 10.8.0.0/13
ipfw table 12 add 10.16.0.0/12
ipfw table 12 add 10.32.0.0/11
ipfw table 12 add 10.64.0.0/10
ipfw table 12 add 10.128.0.0/9
ipfw table 12 add 83.102.232.0/24
ipfw table 12 add 85.21.90.0/24
ipfw table 12 add 85.21.52.0/24
ipfw table 12 add 83.102.0.0/24
ipfw table 12 add 78.107.69.98

ipfw delete 48
ipfw delete 49
ipfw delete 50
ipfw delete 51
ipfw delete 52


# первый Nat до локалки
ipfw add 48 divert 8667 ip from table\(12\) to 192.168.0.0/24 in via nfe0
ipfw add 49 divert 8667 ip from 192.168.0.0/24 to table\(12\) out via nfe0

# второй nat до инета
ipfw add 51 divert 8668 ip from any to 192.168.0.0/24 in via ng0
ipfw add 52 divert 8668 ip from 192.168.0.0/24 to not table\(12\) out via ng0

sleep 1
# Стартуем демоны первый и второй
/sbin/natd -n ng0
/sbin/natd -p 8667 -P /var/run/natd2.pid -n nfe0



На главную     |     Статьи     |     Обсудить в форуме

  eXTReMe Tracker