OpenVPN路由的lans

设置说明:

  • 一个名为vpn1的VPN服务器
  • 一个名为vpn2的VPN客户端
  • vpn1后面的一个networking,IP地址为10.0.0.0/24
  • vpn2后面的一个networking,IP地址为10.0.2.0/24
  • 为了简单起见,VPN盒是LAN中机器的默认网关

服务器configuration:vpn1

mode server tls-server dev tun local PUBLIC-IP-HERE port 1194 proto udp persist-key persist-tun # Certificates and encryption 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 tls-auth /etc/openvpn/easy-rsa/keys/ta.key 0 cipher BF-CBC comp-lzo push "route 10.0.0.0 255.255.255.0" push "route 10.0.2.0 255.255.255.0" push "route 10.255.254.0 255.255.255.0" route 10.0.2.0 255.255.255.0 client-to-client max-clients 30 user nobody group nogroup keepalive 10 120 status /var/log/openvpn-status.log verb 3 ifconfig-pool-persist ipp.txt client-config-dir ccd server 10.255.254.0 255.255.255.0 push "explicit-exit-notify 3" 

在ccd / client中我有:

 iroute 10.0.2.0 255.255.255.0 ifconfig-push 10.255.254.9 10.255.254.10 

如何“IP A”看起来像:

 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 inet 10.0.0.1/24 brd 10.0.0.255 scope global eth1 172: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 100 link/none inet 10.255.254.1 peer 10.255.254.2/32 scope global tun0 

如何“ip r”看起来像(我删除了默认路由,因为它不应该是重要的):

 10.0.0.0/24 dev eth1 proto kernel scope link src 10.0.0.1 10.0.2.0/24 via 10.255.254.2 dev tun0 10.255.254.0/24 via 10.255.254.2 dev tun0 10.255.254.2 dev tun0 proto kernel scope link src 10.255.254.1 

客户端configuration:vpn2

 client dev tun remote PUBLIC-IP-HERE 1194 nobind persist-key persist-tun proto udp ca /etc/openvpn/easy-rsa/keys/client/ca.crt cert /etc/openvpn/easy-rsa/keys/client/client.crt key /etc/openvpn/easy-rsa/keys/client/client.key tls-auth /etc/openvpn/easy-rsa/keys/client/ta.key 1 cipher BF-CBC comp-lzo ns-cert-type server verb 3 

如何“IP A”看起来像:

 7: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP inet 10.0.2.1/24 brd 10.0.2.255 scope global br0 8: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 100 link/none inet 10.255.254.9 peer 10.255.254.10/32 scope global tun0 

如何“ip r”看起来像(我删除了默认网关和相关):

 10.0.0.0/24 via 10.255.254.10 dev tun0 10.0.2.0/24 dev br0 proto kernel scope link src 10.0.2.1 10.255.254.0/24 via 10.255.254.10 dev tun0 10.255.254.10 dev tun0 proto kernel scope link src 10.255.254.9 

一般configuration:

  • iptables的政策是允许的一切
  • IP转发已启用
  • RP滤波器被禁用

什么工作:

  • 从lan1中的任何主机ping到vpn2(10.0.0.11 – > 10.255.254.9)
  • 从lan2中的任何主机ping到vpn1(10.0.2.11 – > 10.255.254.1)
  • 从vpn1 ping到lan2(10.255.254.1 – > lan2 10.0.2.0/24中的任何主机)
  • 从vpn2 ping到lan1(10.255.254.9 – > lan2 10.0.0.0/24中的任何主机)

什么不行:

  • 从lan1中的任何主机ping到lan2
  • 从lan2中的任何主机ping到lan1

通过NAT,我能够:

  • 从lan1中的任何主机ping到lan2
  • 但不是从lan2中的任何主机到lan1而是从lan2中的任何主机到lan1

我应该能够从LAN1 ping LAN2中的任何主机而不用NAT,反之亦然。 这里有什么问题? 有东西在逃避我,我无法弄清楚什么。

这是一个路由问题。

我怀疑你的iroute指令没有生效。 您命名为“ccd / client”的文件实际上必须具有与客户端证书的主题名称对应的文件名。 因此,如果客户端证书的DN是C=CA,O=Foo Ltd,CN=Example ,则文件应该是“ccd / Example”。

除此之外,您的configuration看起来正确。