看看我目前的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。
所以,例如,如果城堡lan(X)中有一台地址为10.10.150.65的机器,我应该可以从dragon(和lan Y中的机器)访问它。
城堡(服务器)configuration:
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
王子(客户)configuration:
client port 5010 remote 88.99.xx #(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
王子(服务器)configuration:
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
龙(客户端)configuration:
client port 5002 remote 66.77.xx #(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
所以现在我可以从王子那里进入城堡的兰(X),而不是龙。 我应该如何设置路线才能使其工作?
我希望我的解释不是太乱。 干杯!
OpenVPN不会修改客户端networking以外的子网的服务器路由,除非你明确告诉它。
在你的图中,还不清楚机器城堡是否有通往王子的 龙的路线。
您需要通知城堡到达networking10.0.6.0/24( 龙 LAN)的方式是通过王子客户端连接。
如果你只有一个OpenVPN客户端,你可以在城堡 conf中添加一个路由( 王子是客户端):
route 10.0.6.0 255.255.255.0
如果您有多个客户端连接到该服务器,这是不够的,服务器将不知道哪个客户端分配路由。 在这种情况下,您需要执行特定于客户端的configuration。
client-config-dir client-configs
这将指示OpenVPN服务器在客户端用于连接的证书上匹配客户端CN名称的文件的子目录client-configs
(服务器上的conf目录)中查找客户端特定的configuration文件。 所以castle会寻找一个文件client-configs/prince
并在客户端连接一个与prince
相匹配的证书时使用这些configuration指令(你需要确保证书上的CN与文件名匹配,OpenVPN不关心你所说的机)。
在那个客户端configuration文件client-configs\prince
, 王子的具体部分是:
iroute 10.0.6.0 255.255.255.0 [...]
iroute
语句告诉OpenVPN服务器通过客户端为该子网路由stream量,较早的route 10.0.6.0 255.255.255.0
语句告诉内核在castle
上让OpenVPNpipe理该networking的路由。
在OpenVPN HOWTO的 “ 使用路由VPN(dev tun)时在客户端包含多台机器 ”的更多细节。
如果还没有,那么机器王子也需要转发IPstream量,因为你在这个configuration中使用它作为路由器。