以下是我的openVPNnetworking拓扑。 这是openvpn食谱中的一个例子。
这里是我的服务器configuration文件(Fedora服务器):
proto udp port 1194 dev tun server 192.168.200.0 255.255.255.0 ca /etc/openvpn/cookbook/ca.crt cert /etc/openvpn/cookbook/openvpnserver.crt key /etc/openvpn/cookbook/openvpnserver.key dh /etc/openvpn/cookbook/dh2048.pem tls-auth /etc/openvpn/cookbook/ta.key 0 keepalive 10 60 push "route 192.168.4.0 255.255.255.0" topology subnet daemon log-append /home/mazimi/Desktop/openvpn.log client-config-dir /etc/openvpn/cookbook/clients route 192.168.2.0 255.255.255.0 192.168.200.1
这里是/etc/openvpn/cookbook/clients文件:
iroute 192.168.2.0 255.255.255.0
这是我的openvpn客户端(Ubuntu的):
client proto udp remote 192.168.3.1 port 1194 dev tun ca /etc/openvpn/cookbook/ca.crt cert /etc/openvpn/cookbook/client1.crt key /etc/openvpn/cookbook/client1.key tls-auth /etc/openvpn/cookbook/ta.key 1 daemon log-append /root/openvpn.log ns-cert-type server
这个configuration工作正常。 但为什么下一跳设置为192.168.200.1?(它是一个本地接口不下一跳)。 难道不是192.168.200.2? 我把它改为192.168.200.2。 唯一的区别是:
有人可以解释吗?
我相信192.168.200。* IP是OpenVPN隧道如何工作的工件。 这个configuration中的OpenVPN本质上是点对点的,每个点都有自己的IP地址。 当你穿过隧道时,你必须指定隧道的近端。 将这些IP视为OpenVPN的内部工作方式(为了我自己的澄清,我分配了一个完全不同的非可路由块,例如10.0.0.0/8,如果我的networking是192.168.0.0/16; 10.0.0.0 / 8 IP只存在于OpenVPN的据我所知)。
相比之下,在TAP界面上,您实际上可以获得要分配给OpenVPN的LAN的IP。
我确定这是常见问题解答中的某个地方,但我一眼就看不到它。
我相信你需要使用client-to-client指令,并且你缺less路由推送192.168.3.0和192.168.4.0
这实际上是我自己的OpenVPN实现的一个缩减版本。 您并没有在您的详细信息中详细说明它,但是您可能需要在/etc/sysctl.conf或者在您的Fedora 16服务器和Ubuntu 11.10客户端上的/etc/sysctl.conf下包含以下内容,以便将stream量通过他们作为一个门户。
net.ipv4.ip_forward = 1
在input行之后运行sysctl -a之后,您应该准备好使用OpenVPNconfiguration。 我会build议尝试以下为您的服务器configuration:
proto udp port 1194 dev tun ca /etc/openvpn/cookbook/ca.crt cert /etc/openvpn/cookbook/openvpnserver.crt key /etc/openvpn/cookbook/openvpnserver.key dh /etc/openvpn/cookbook/dh2048.pem tls-auth /etc/openvpn/cookbook/ta.key 0 server 192.168.200.0 255.255.255.0 topology subnet client-config-dir /etc/openvpn/cookbook client-to-client route 192.168.2.0 255.255.255.0 192.168.200.2 route 192.168.4.0 255.255.255.0 192.168.200.1 keepalive 10 60 push "route 192.168.4.0 255.255.255.0" topology subnet daemon log-append /home/mazimi/Desktop/openvpn.log
接下来,假设您的Ubuntu客户端证书CN是客户端,请将以下内容添加到/etc/openvpn/cookbook/client1 :
ifconfig-push 192.168.200.2 255.255.255.0 iroute 192.168.2.0 255.255.255.0
最后,为你的Ubuntu客户端configuration文件:
client proto udp remote 192.168.3.1 1194 dev tun persist-key persist-tun ca /etc/openvpn/cookbook/ca.crt cert /etc/openvpn/cookbook/client1.crt key /etc/openvpn/cookbook/client1.key tls-auth /etc/openvpn/cookbook/ta.key 1 daemon log-append /root/openvpn.log ns-cert-type server
正如我所说,这是我使用的一个缩减版本。 我的configuration有比你更多的选项,但它们的默认值应该足够了。 对我来说,我的client1有两个子网(192.168.1.0/24和172.16.20.0/24)。 我的公司OpenVPN服务器在10.20.30.0/24上运行,我的客户端OpenVPN服务器在10.8.0.0/24上运行,客户端连接到它。 corp ovpn服务器分配10.20.30.1, 客户端ovpn服务器接收10.20.30.2, client1接收10.20.30.3连接到corp ovpn服务器 。
所以我的公司服务器configuration包括以下内容:
route 172.16.20.0 255.255.255.0 10.20.30.3 route 192.168.1.0 255.255.255.0 10.20.30.3 route 10.8.0.0 255.255.255.0 10.20.30.2
而client1的CCD文件包含以下内容:
ifconfig-push 10.20.30.3 255.255.255.0 iroute 172.16.20.0 255.255.255.0 iroute 192.168.1.0 255.255.255.0 push "route 10.8.0.0 255.255.255.0"
而客户端ovpn服务器的CCD文件包含以下内容:
ifconfig-push 10.20.30.2 255.255.255.0 iroute 10.8.0.0 255.255.255.0 push "route 192.168.1.0 255.255.255.0" push "route 172.16.20.0 255.255.255.0" push "route 10.20.30.0 255.255.255.0"
这说…从我的无线接收IP 192.168.1.140我的笔记本电脑,如果我跟踪到我的客户端连接到客户端ovpn服务器为10.8.0.30我得到以下几点:
traceroute to 10.8.0.30 (10.8.0.30), 30 hops max, 60 byte packets 1 192.168.1.1 2.108 ms 2.078 ms 2.460 ms 2 192.168.1.2 3.370 ms 3.340 ms 3.671 ms 3 10.20.30.2 20.250 ms 20.220 ms 20.518 ms 4 10.8.0.30 33.505 ms 34.326 ms 34.809 ms
您可以忽略第一跳(192.168.1.1),因为这是将静态路由configuration为10.0.0.0/8和172.16.0.0/12路由到192.168.1.2 client1的IP地址的AP /路由器。 为了完整起见,这里是客户的返回路线(10.8.0.30)。
traceroute to 192.168.1.140 (192.168.1.140), 64 hops max, 52 byte packets 1 10.8.0.1 8 ms 8 ms 8 ms 2 10.20.30.3 21 ms 22 ms 24 ms 3 192.168.1.140 24 ms 24 ms 23 ms