How*_*ard 17 linux vpn ipsec l2tp linux-networking
我们已经使用本教程设置了一个 L2TP VPN 服务器,一切都像魅力一样。
唯一的问题是
我们不希望客户端使用此 VPN 路由所有流量,仅路由特定子网,例如 10.0.0.0/20
在 Mac 上,我们需要使用命令手动设置路由,但对于移动设备,似乎没有办法这样做?
那么,是否可以为子网“10.0.0.0/20”自动配置客户端?
gal*_*axy 38
好的,这个问题在互联网上被一遍遍地问,大多数时候都有一个(半)不正确的答案,你不能做原始帖子中描述的事情。让我一劳永逸地澄清一下:)
简短的回答是 L2TP(和 PPTP)没有在协议内部进行路由推送的设施,但可以在协议外部实现。
由于 L2TP 是 Microsoft 的发明,因此最好的信息来源是他们的技术文档(顺便说一下,他们非常擅长)。我将在下面解释的技术说明可以在VPN 寻址和路由中找到。正确设置所有内容的关键字(如果您要自己研究的话)是:DHCPINFORM 和“无类静态路由”。
首先,它是如何工作的:
嗯,有一个警告:
我将描述使用 Linux box 作为 VPN 服务器的典型配置(您可以使用 Microsoft 文档的链接配置 MS 服务器)。
要在客户端上配置路由,我们需要以下成分:
以下是工作中的 accel-ppp 配置的转储。我提供了它的全部内容,否则很难解释哪里去了。如果你的 VPN 已经在工作,你可以跳过这个配置文件,专注于下面描述的 DHCP 配置。
[root@vpn ~]# cat /opt/accel-ppp/config/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
[root@vpn ~]#
===
Run Code Online (Sandbox Code Playgroud)
此时我们的客户端可以通过 L2TP(或 PPTP)连接并与 VPN 服务器通信。因此,唯一缺少的部分是 DHCP 服务器,它正在侦听创建的隧道并以必要的信息进行响应。以下是 dnsmasq 配置文件的摘录(我仅提供与 DHCP 相关的选项):
[root@vpn ~]# grep -E '^dhcp' /etc/dnsmasq.conf
dhcp-range=192.168.99.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
[root@vpn ~]#
Run Code Online (Sandbox Code Playgroud)
在上面的摘录中,我们通过 192.168.99.254(VPN 服务器)推送路由 192.168.70.0/24、192.168.75.0/24 和 10.0.0.0/24。
最后,如果您嗅探网络流量(例如在 VPN 服务器上),您将看到类似以下内容的 DHCPINFORM 消息响应:
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
Run Code Online (Sandbox Code Playgroud)
PS我差点忘了成功使用上述配置所需的一个必不可少的部分。嗯,它在我提到的 Microsoft 文档中有所描述,但是谁阅读了文档?:) 好的,应该在 VPN 连接上配置客户端而不使用“使用默认网关”(在 Windows 上,它位于连接的属性 -> 网络 -> Internet 协议版本 4 (TCP/IPv4) -> 属性 -> 高级 -> IP 设置)。在某些客户端上,还有一个称为“禁用基于类的路由添加”的选项 - 它必须取消设置,因为它明确禁用了我们试图实现的功能。
| 归档时间: |
|
| 查看次数: |
32551 次 |
| 最近记录: |