我目前的设置涉及一个单一的networking接口的OpenVPN服务器和另一个networking上的客户端作为特定局域网的路由器。 我的目标是启用通过VPN转发LANstream量。
局域网的路由器是通过其公共接口连接到OpenVPN服务器的路由器。
火墙
*nat :PREROUTING ACCEPT [2:98] :POSTROUTING ACCEPT [0:0] :OUTPUT ACCEPT [5:327] -A POSTROUTING -s 10.8.1.0/24 -o em1 -j MASQUERADE COMMIT *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [186:19694] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p udp -m state --state NEW,ESTABLISHED -m udp --dport 1195 -j ACCEPT -A INPUT -i tun+ -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -i tun+ -j ACCEPT -A FORWARD -s 10.8.1.0/24 -o em1 -j ACCEPT -A FORWARD -i tun+ -o em1 -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -i em1 -o tun+ -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
OpenVPN服务器
port 1195 # 1194 is used by another OpenVPN proto udp dev tun ca /etc/openvpn/ca.crt cert /etc/openvpn/suzume.crt key /etc/openvpn/suzume.key server 10.8.1.0 255.255.255.0 ifconfig-pool-persist ipp.txt keepalive 10 120 comp-lzo client-config-dir ccd route 192.168.10.0 255.255.255.0 tls-auth /etc/openvpn/ta.key 0
OpenVPN客户端
客户端dev tun远程MY_SERVER_IP proto udp nobind resolv重试无限持久性键persist-tun ca ca.crt证书myhostname.crt密钥myhostname.key ns-cert-type服务器tls-auth ta.key 1 comp-lzo动词3 mtu-testing
现在我还没有推动默认网关:我正在做testing添加单个IP到路由表。 在客户端:
route add 69.192.17.215 gw 10.8.1.5 tun1
(再次,客户端实际上是LAN的路由器)
如果我在客户端上,我可以看到traceroute
数据包通过VPN。 但是,如果我试图从客户端访问相同的IP,什么也不通过。 服务器上的VPN接口上的tcpdump显示:
# tcpdump -n -i tun0 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on tun0, link-type RAW (Raw IP), capture size 65535 bytes 00:25:13.267823 IP MY_INTERNAL_IP > 69.192.17.215: ICMP echo request, id 3607, seq 11, length 64
什么都没有通过。
当我直接在客户端做东西时比较这个:
00:28:10.277901 IP OPENVPN_CLIENT_IP > 69.192.17.215: ICMP echo request, id 5243, seq 1, length 64 00:28:10.365054 IP 69.192.17.215 > OPENVPN_CLIENT_IP: ICMP echo reply, id 5243, seq 1, length 64
我也在客户端的ccd
目录中设置了iroute 192.168.10.0 255.255.255.0
。 但是我不能通过VPN路由来自局域网的stream量,可能是因为服务器不知道如何将数据发回给他们。
我错过了什么来执行这个? 我有充分的权限在服务器和客户端/路由器上。 服务器运行CentOS 6.5和客户端/路由器Debian Squeeze。
解决scheme是在客户端/路由器上执行
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o tun1 -j MASQUERADE
tun1
是VPN接口。 通过伪装内部IP,一切正常。