查看我当前的 VPN 设置。我将相应地将服务器命名为“王子”、“城堡”、“龙”
________ prince is a ________ dragon is a client ________
| | client of castle | | of prince | |
| castle |<--------------------| prince |<------------------------| dragon |
|________| vpn subnet is |________| ifconfig 172.16.0.61 |________|
| 10.10.160.0/24 is a vpn gateway |
| on dragon |
some lan X some lan Y
10.10.150.0/24 10.0.6.0/24
我想要实现的是能够从龙访问城堡的子网(X)10.10.150.0。
因此,例如如果城堡局域网 (X) 中有一台机器,其地址为 10.10.150.65,我应该能够从龙(和局域网 Y 中的机器)访问它。
城堡(服务器)配置:
port 5010
proto udp
dev tap10
#(ca,cert,key,dh here)#
cipher AES-256-CBC
server 10.10.160.0 255.255.255.0
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
route 10.10.150.0 255.255.255.0
route 10.10.160.0 255.255.255.0
push "route 10.10.150.0 255.255.255.0"
push "route 10.10.160.0 255.255.255.0"
keepalive 10 120
comp-lzo
duplicate-cn
user nobody
group nogroup
persist-key
persist-tun
log-append /var/log/openvpn/tap10_server.log
verb 3
Prince(客户端)配置:
client
port 5010
remote 88.99.x.x #(public ip of castle)
#(ca,cert,key,dh here)#
cipher AES-256-CBC
dev tap10
proto udp
nobind
auth-nocache
persist-key
persist-tun
key-direction 1
comp-lzo
verb 3
log-append /var/log/openvpn/tap10_client.log
Prince(服务器)配置:
port 5002
dev tap2
ifconfig 172.16.0.61 255.255.255.252
tls-server
#(pkcs12 and dh here)#
cipher AES-256-CBC
max-clients 3
user nobody
group nogroup
comp-lzo
ping 5
ping-restart 15
ping-timer-rem
persist-tun
persist-key
push "route-gateway 172.16.0.61"
push "route 10.10.150.0 255.255.255.0 vpn_gateway"
verb 3
log-append /var/log/openvpn/tap2.log
Dragon(客户端)配置:
client
port 5002
remote 66.77.x.x #(public address of prince)
dev tap0
ifconfig 172.16.0.62 255.255.255.252
#(pkcs12 here)
cipher AES-256-CBC
user nobody
group nogroup
comp-lzo
ping 15
ping-restart 45
ping-timer-rem
persist-tun
persist-key
verb 3
log-append /var/log/openvpn/tap0_client.log
所以目前我可以从 prince 访问 castle 的 lan (X),但不能从 dragon 访问。我应该如何设置路由才能使其正常工作?
希望我的解释不会太混乱。干杯!
答案1
除非您明确指示,否则 OpenVPN 不会修改客户端网络之外的子网的服务器路由。
在你的图表中,不清楚机器城堡有路线龙通过王子。
您需要告知 Castle 如何到达网络 10.0.6.0/24 (龙LAN )是通过王子客户端连接。
如果你只有一个 OpenVPN 客户端,那么你可以直接在城堡conf(即王子是以下公司的客户:
route 10.0.6.0 255.255.255.0
如果有多个客户端连接到该服务器,这还不够,服务器不知道将路由分配给哪个客户端。在这种情况下,您需要进行特定于客户端的配置。
client-config-dir client-configs
这将指示 OpenVPN 服务器在子目录(服务器上的 conf 目录)中查找client-configs
与客户端用于连接的证书上的客户端 CN 名称匹配的文件。因此城堡会查找一个文件client-configs/prince
,并在客户端使用匹配的证书连接时使用这些配置指令prince
(您需要确保证书上的 CN 与文件名匹配,OpenVPN 并不关心什么你呼叫机器)。
在该客户端配置文件中client-configs\prince
,王子具体部分:
iroute 10.0.6.0 255.255.255.0 [...]
该iroute
语句告诉 OpenVPN 服务器通过客户端路由该子网的流量,前面的route 10.0.6.0 255.255.255.0
语句告诉内核castle
让 OpenVPN 管理该网络的路由。
更多详情请访问OpenVPN 操作指南在下面 ”使用路由 VPN(dev tun)时在客户端包含多台机器“。
机器王子如果尚未转发 IP 流量,则还需要转发 IP 流量,因为您在该配置中将其用作路由器。