Com*_*fox 5 networking dhcp vpn openvpn openwrt
我有一个桥接的 OpenVPN 设置。这是我的服务器配置:
port 1194
proto udp
dev tap0
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key
dh /etc/openvpn/easy-rsa/keys/dh2048.pem
# brtctl upscript
script-security 2
up /etc/openvpn/up.sh
tls-server
server-bridge
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 3
Run Code Online (Sandbox Code Playgroud)
服务器在运行在网络 A 中的 Debian 机器上运行,客户端在网络 B 中的 OpenWRT 路由器上运行。在网络 A 上,tap0 接口与本地网络桥接,包含一个 DHCP 服务器和一个互联网网关。在网络 B 上,tap0 接口与一个单独的网络桥接,没有 DHCP 服务器或互联网访问。这个想法是 OpenVPN 隧道为网络 B 提供互联网访问。
在此设置中,OpenVPN 服务器不分配供客户端使用的 IP 地址。相反,它只是让本地网络中的 DHCP 服务器处理它。这是有效的,因为这是桥接 (TAP) 而不是路由 (TUN) 设置。
因此,DHCP 确实在隧道上工作。网络 B 侧的客户端直接从网络 A 侧的 DHCP 服务器获取其 IP 地址。问题是看起来默认网关从 DHCP 回复中被剥离了,因为它在网络 B 上的机器上是空的。
例如,这是我在连接到网络 B 的 Windows 客户端上得到的:
Ethernet adapter Ethernet:
DHCP Enabled. . . . . . . . . . . : Yes
Autoconfiguration Enabled . . . . : Yes
IPv4 Address. . . . . . . . . . . : 192.168.2.123(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Lease Obtained. . . . . . . . . . : vrijdag 25 juli 2014 22:49:38
Lease Expires . . . . . . . . . . : zaterdag 26 juli 2014 10:49:38
Default Gateway . . . . . . . . . :
DHCP Server . . . . . . . . . . . : 192.168.2.1
DNS Servers . . . . . . . . . . . : 8.8.8.8
NetBIOS over Tcpip. . . . . . . . : Enabled
Run Code Online (Sandbox Code Playgroud)
我发现了这个:https : //community.openvpn.net/openvpn/ticket/312#comment:3
这表明这是记录在案的行为,但我不知道如何禁用它。我尝试route-nopull在客户端使用该指令,但它似乎没有任何效果。
另外,我不能使用redirect-gateway指令,因为我需要在与 OpenVPN 客户端的 tap0 适配器桥接的机器上获得网关,而不是在 OpenVPN 客户端本身上。
我的客户端配置如下:
config openvpn sample_client
option enabled 1
option client 1
option dev tap
option proto udp
list remote "server.com 1194"
option resolv_retry infinite
option nobind 1
option persist_key 1
option persist_tun 1
option ca /etc/openvpn/ca.crt
option cert /etc/openvpn/client.crt
option key /etc/openvpn/client.key
option ns_cert_type server
option comp_lzo yes
option verb 3
option route-nopull 1
Run Code Online (Sandbox Code Playgroud)
请记住,这是 OpenWRT 的 UCI 格式。
编辑:
刚刚在日志中发现了这个:
daemon.notice openvpn(sample_client)[5062]: Extracted DHCP router address: 192.168.2.1
Run Code Online (Sandbox Code Playgroud)
这正是我想要禁用的行为。
还发现了这个:
如果不带任何参数使用 --server-bridge,它将启用 DHCP 代理模式,在这种模式下,连接 OpenVPN 客户端将从运行在 OpenVPN 服务器端 LAN 上的 DHCP 服务器接收其 TAP 适配器的 IP 地址。请注意,只有支持 DHCP 客户端与 TAP 适配器绑定的客户端(如 Windows)才能支持此模式。可选的 nogw 标志(高级)表示不应将网关信息推送到客户端。
有趣的。我并没有设置nogw。可能是隐式设置还是什么?我可以明确地“取消”它吗?
编辑:发现这个:https:
//forums.openvpn.net/topic13494.html 有同样问题的人,一年前的帖子。没有答案。
将其用于 OpenVPN 上的 DHCP(在 server.conf 中):
server-bridge 172.18.100.100 255.255.0.0 172.18.100.105 172.18.100.250
Run Code Online (Sandbox Code Playgroud)
在哪里:
您还需要在 OpenVPN (server.conf) 上使用此内容:
push "route 172.18.0.0 255.255.0.0"
Run Code Online (Sandbox Code Playgroud)
就是这样。之后,如果您想从专用网络(在客户端上)出去,则只需通过一个网关(服务器的IP)转发所有流量即可。
| 归档时间: |
|
| 查看次数: |
6622 次 |
| 最近记录: |