Як відомо, pptp не вміє базово передавати маршрути при підключенні до VPN серверу. Але, можна піти хитріше і спробувати деякі опції з DHCP протоколу, а саме
option ms-classless-routes code 249 = array of unsigned integer 8;
option rfc3442-classless-routes code 121 = array of unsigned integer 8;
Чому треба передавати обидві опції? Бо microsoft заміть 121 (яка і була для цього зроблена згідно RFC) використовувала (до Windows XP/2003 включно; всі новіші вже розуміють 121, але перевагу віддають 249) свою, власну – 249.
А тепер, власне, налаштування.
accel-ppp.conf
[modules] log_syslog pptp l2tp auth_mschap_v2 ippool sigchld chap-secrets logwtmp [core] log-error=/var/log/accel-ppp/core.log thread-count=4 [ppp] verbose=1 min-mtu=1280 mtu=1400 mru=1400 check-ip=1 single-session=replace mppe=require ipv4=require ipv6=deny ipv6-intf-id=0:0:0:1 ipv6-peer-intf-id=0:0:0:2 ipv6-accept-peer-intf-id=1 [lcp] lcp-echo-interval=30 lcp-echo-failure=3 [auth] #any-login=0 #noauth=0 [pptp] echo-interval=30 echo-failure=3 verbose=1 [l2tp] host-name=access-vpn verbose=1 [dns] dns1=192.168.70.251 dns2=192.168.70.252 [client-ip-range] disable [ip-pool] gw-ip-address=192.168.99.254 192.168.99.1-253 [log] log-file=/var/log/accel-ppp/accel-ppp.log log-emerg=/var/log/accel-ppp/emerg.log log-fail-file=/var/log/accel-ppp/auth-fail.log log-debug=/var/log/accel-ppp/debug.log copy=1 level=3 [chap-secrets] gw-ip-address=192.168.99.254 chap-secrets=/etc/ppp/chap-secrets [cli] telnet=127.0.0.1:2000 tcp=127.0.0.1:2001
dnsmasq.conf
dhcp-range=192.168.82.254,static dhcp-option=option:router dhcp-option=121,192.168.70.0/24,192.168.99.254,192.168.75.0/24,192.168.99.254,10.0.0.0/24,192.168.99.254 dhcp-option=249,192.168.70.0/24,192.168.99.254,192.168.75.0/24,192.168.99.254,10.0.0.0/24,192.168.99.254 dhcp-option=vendor:MSFT,2,1i
А ось так виглядає передача маршрутів, якщо дивитися через tcpdump:
[root@vpn ~]# tcpdump -nnv -i any port 67 or port 68 tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes 19:54:46.715522 IP (tos 0x0, ttl 128, id 5523, offset 0, flags [none], proto UDP (17), length 328) 192.168.99.153.68 > 255.255.255.255.67: BOOTP/DHCP, Request, length 300, htype 8, hlen 6, xid 0xa27cfc5f, secs 1536, Flags [none] Client-IP 192.168.99.153 Vendor-rfc1048 Extensions Magic Cookie 0x63825363 DHCP-Message Option 53, length 1: Inform Client-ID Option 61, length 7: hardware-type 8, 00:53:45:00:00:00 Hostname Option 12, length 8: "intruder" Vendor-Class Option 60, length 8: "MSFT 5.0" Parameter-Request Option 55, length 6: Domain-Name-Server, Netbios-Name-Server, Vendor-Option, Subnet-Mask Classless-Static-Route-Microsoft, Domain-Name Vendor-Option Option 43, length 3: 220.1.0 19:54:46.716113 IP (tos 0x0, ttl 64, id 10142, offset 0, flags [none], proto UDP (17), length 333) 192.168.99.254.67 > 192.168.99.153.68: BOOTP/DHCP, Reply, length 305, htype 8, hlen 6, xid 0xa27cfc5f, secs 1536, Flags [none] Client-IP 192.168.99.153 Vendor-rfc1048 Extensions Magic Cookie 0x63825363 DHCP-Message Option 53, length 1: ACK Server-ID Option 54, length 4: 192.168.99.254 Domain-Name Option 15, length 18: "vpn.server.tld" Classless-Static-Route-Microsoft Option 249, length 24: (192.168.70.0/24:192.168.99.254),(192.168.75.0/24:192.168.99.254),(10.0.0.0/24:192.168.99.254) Vendor-Option Option 43, length 7: 2.4.0.0.0.1.255 19:54:47.325798 IP (tos 0x0, ttl 128, id 50260, offset 0, flags [DF], proto UDP (17), length 306) 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:1a:64:20:3a:c1, length 278, xid 0x64203adb, Flags [Broadcast] Client-Ethernet-Address 00:1a:64:20:3a:c1 Vendor-rfc1048 Extensions Magic Cookie 0x63825363 DHCP-Message Option 53, length 1: Discover Lease-Time Option 51, length 4: 4294967295 Hostname Option 12, length 8: "64203AC1" Parameter-Request Option 55, length 3: Subnet-Mask, Default-Gateway, Domain-Name-Server ^C 3 packets captured 3 packets received by filter 0 packets dropped by kernel
PS. Стаття не моя, знайшов у мережі інтернет.