Столкнулся , на первый взгляд, с заезженной проблемой маршрутизации при построении VPN на mpd5.
Дано :
сетка 172.16.0.0/16
FreeBSD 11, mpd5
Интерфейс на FreeBSD : 172.16.86.10
При подключении по vpn нужно получить доступ к серверам в этой сети, при этом не добавляя руками каких-либо маршрутов на подключающейся машине. Тоесть человек подключается, попадает в сеть 172.16.0.0/16 и, соответственно, получает доступ к серверам из этой подсети.
mpd.conf :
Код: Выделить всё
startup:
# configure mpd users
set user pupkin blablabla
# configure the console
set console self 127.0.0.1 5005
set console open
# configure the web server
set web self 0.0.0.0 5006
set web open
default:
#load dialup
load pptp_server
# Define dynamic IP address pool.
set ippool add pool1 172.16.255.20 172.16.255.50
# Create clonable bundle template named B
create bundle template B
set iface enable proxy-arp
set iface idle 1800
set iface enable tcpmssfix
set ipcp yes vjcomp
# Specify IP address pool for dynamic assigment.
set ipcp ranges 172.16.255.1/32 ippool pool1
# set ipcp dns 172.31.0.2
# set ipcp nbns 172.31.0.2
# The five lines below enable Microsoft Point-to-Point encryption
# (MPPE) using the ng_mppc(8) netgraph node type.
set bundle enable compression
set ccp yes mppc
set mppc yes e40
set mppc yes e128
set mppc yes stateless
# Create clonable link template named L
create link template L pptp
# Set bundle template to use
set link action bundle B
# Multilink adds some overhead, but gives full 1500 MTU.
set link enable multilink
set link yes acfcomp protocomp
set link no pap chap eap
set link enable chap
# We can use use RADIUS authentication/accounting by including
# another config section with label 'radius'.
# load radius
set link keep-alive 10 60
# We reducing link mtu to avoid GRE packet fragmentation.
# set link mtu 1460
# Configure PPTP
set pptp self 172.16.86.10
# Allow to accept calls
Код: Выделить всё
IPv4-адрес. . . . . . . . . . . . : 172.16.255.20
Маска подсети . . . . . . . . . . : 255.255.255.255
Маршрут в сетку :
172.16.0.0 255.255.0.0 172.16.255.1 172.16.255.20 26
Код: Выделить всё
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1396
inet 0.0.0.0 --> 255.255.255.255 netmask 0xff000000
inet 172.16.255.1 --> 172.16.255.20 netmask 0xffffffff
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
Код: Выделить всё
sysctl net.inet.ip.forwarding=1
Код: Выделить всё
Ответ от 172.16.255.1: число байт=32 время=33мс TTL=64
Ответ от 172.16.255.1: число байт=32 время=32мс TTL=64
Ответ от 172.16.255.1: число байт=32 время=32мс TTL=64
Ответ от 172.16.86.10: число байт=32 время=34мс TTL=64
Ответ от 172.16.86.10: число байт=32 время=33мс TTL=64
Ответ от 172.16.86.10: число байт=32 время=32мс TTL=64
Код: Выделить всё
listening on ng0, link-type NULL (BSD loopback), capture size 262144 bytes
12:38:21.541252 IP 172.16.255.20 > 172.16.56.137: ICMP echo request, id 1, seq 8, length 40
12:38:26.069083 IP 172.16.255.20 > 172.16.56.137: ICMP echo request, id 1, seq 9, length 40
12:38:31.067891 IP 172.16.255.20 > 172.16.56.137: ICMP echo request, id 1, seq 10, length 40
Код: Выделить всё
PING 172.16.56.137 (172.16.56.137): 56 data bytes
64 bytes from 172.16.56.137: icmp_seq=0 ttl=64 time=0.150 ms
64 bytes from 172.16.56.137: icmp_seq=1 ttl=64 time=0.169 ms