目前,我有一个openvpn服务器和客户端设置与舍入(而不是桥接)。
当我试图从我的客户端切换到服务器ip地址时,它工作得很好。但是,当我试图在openvpn服务器后面的其他子网主机上进行ping时,它不起作用。有人能发现我的设置中有什么明显的错误吗。(openvpn服务器位于10.10.145.181,主机位于10.10.146.8 ip地址。它们位于两个独立的子网中。我可以把10.10.146.8从10.10.145.181直接跳到那个主机上。只有当我通过VPN时,它才不起作用。)
据我所知,ping流量通过tun0接口发送到vpn服务器,但是vpn服务器并没有通过eth0将其转发到适当的主机,因此点播主机没有看到任何流量和数据包被丢弃。但是什么导致了这一切?openvpn中是否有将流量从tun0转发到eth0的设置?
这是我观察到的..。
openvpn客户端主机上的
> ping 10.10.146.8
PING 10.10.146.8 (10.10.146.8) 56(84) bytes of data.
<no further output>openvpn服务器主机上的
> sudo tcpdump -i tun0 'icmp[icmptype] = icmp-echo or icmp[icmptype] = icmp-echoreply'
00:34:32.624639 IP 10.10.0.6 > 10.10.146.8: ICMP echo request, id 1644, seq 1863, length 64
00:34:33.634564 IP 10.10.0.6 > 10.10.146.8: ICMP echo request, id 1644, seq 1864, length 64
00:34:34.640753 IP 10.10.0.6 > 10.10.146.8: ICMP echo request, id 1644, seq 1865, length 64
00:34:35.648922 IP 10.10.0.6 > 10.10.146.8: ICMP echo request, id 1644, seq 1866, length 64
00:34:36.659062 IP 10.10.0.6 > 10.10.146.8: ICMP echo request, id 1644, seq 1867, length 64
00:34:37.665402 IP 10.10.0.6 > 10.10.146.8: ICMP echo request, id 1644, seq 1868, length 64
00:34:38.673295 IP 10.10.0.6 > 10.10.146.8: ICMP echo request, id 1644, seq 1869, length 64
00:34:39.685336 IP 10.10.0.6 > 10.10.146.8: ICMP echo request, id 1644, seq 1870, length 64
00:34:40.687703 IP 10.10.0.6 > 10.10.146.8: ICMP echo request, id 1644, seq 1871, length 64
00:34:41.695766 IP 10.10.0.6 > 10.10.146.8: ICMP echo request, id 1644, seq 1872, length 64
> sudo tcpdump -i eth0 'icmp[icmptype] = icmp-echo or icmp[icmptype] = icmp-echoreply'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
04:14:48.583673 IP 10.10.0.6 > 10.10.146.8: ICMP echo request, id 4807, seq 442, length 64
04:14:49.592908 IP 10.10.0.6 > 10.10.146.8: ICMP echo request, id 4807, seq 443, length 64
04:14:50.600010 IP 10.10.0.6 > 10.10.146.8: ICMP echo request, id 4807, seq 444, length 64
04:14:51.616401 IP 10.10.0.6 > 10.10.146.8: ICMP echo request, id 4807, seq 445, length 64> sudo tcpdump -i eth0 'icmp[icmptype] = icmp-echo or icmp[icmptype] = icmp-echoreply'
sudo: unable to resolve host ip-10-10-146-8
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
<no further output>Jul 8 00:36:25 ip-10-10-145-181 ovpn-server[1513]: xyz/<ip_address>:35315 UDPv4 READ [133] from [AF_INET]<ip_address>:35315: P_DATA_V1 kid=0 DATA len=132
Jul 8 00:36:25 ip-10-10-145-181 ovpn-server[1513]: xyz/<ip_address>:35315 TUN WRITE [84]openvpn客户机上的
10.10.0.1 10.10.0.5 255.255.255.255 UGH 0 0 0 tun0
10.10.0.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
10.10.146.0 10.10.0.5 255.255.255.0 UG 0 0 0 tun0openvpn服务器上的
10.10.0.0 10.10.0.2 255.255.255.0 UG 0 0 0 tun0
10.10.0.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
10.10.145.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0我在openvpn服务器配置中有一条语句用于从客户端路由通信量&我确实看到了这种情况。
push "route 10.10.146.0 255.255.255.0"安德鲁问题的补充资料
> echo "sysctl -a | grep 'forwarding = 1'" | sudo -s
error: permission denied on key 'vm.compact_memory'
error: permission denied on key 'net.ipv4.route.flush'
net.ipv4.conf.all.forwarding = 1
net.ipv4.conf.default.forwarding = 1
net.ipv4.conf.lo.forwarding = 1
net.ipv4.conf.eth0.forwarding = 1
net.ipv4.conf.tun0.forwarding = 1
error: permission denied on key 'net.ipv6.route.flush'
> sudo iptables -L INPUT
Chain INPUT (policy ACCEPT)
target prot opt source destination
> sudo iptables -L FORWARD
Chain FORWARD (policy ACCEPT)
target prot opt source destination 更新:实际上,现在我在服务器上看到了eth0上的流量,但是这些流量并没有到达网络并被其他主机接收。我认为这是亚马逊VPC的问题。
发布于 2013-07-13 19:10:23
好吧,经过几个小时的调查我才发现的。
问题在于转发设置。转发到eth0端口的数据包不具有网络中主机的正确源ip地址。来自VPN的ip地址。
05:07:43.991961 IP 10.8.0.6 > 10.10.146.8: ICMP echo request, id 3497, seq 499, length 64您可以通过在linux操作系统中启用相当于NAT的NAT(在路由器上)来切换它:
iptables -t nat -A POSTROUTING -o <eth0 or whatever else> -j MASQUERADE这个解决了我的问题。
发布于 2015-09-01 19:50:53
当局域网上的主机的默认网关不是OpenVPN服务器时,可能会发生此问题。在这种情况下,主机需要对VPN地址进行静态路由,这样回复就会转到VPN服务器而不是默认网关。
在局域网主机上,检查路由(route print用于Windows,route -n用于Linux,ǹetstat -rn用于Mac)。
发布于 2018-09-18 14:13:35
我通过google找到了这个帖子,谢谢这个信息是有用的。我也有同样的问题,这个信息部分解决了这个问题。
伪装一下就成功了。但就我的目的而言,这还不够好,也不是解决办法,也不是我的最终答案,我仍然试图不伪装地把它转发出去。就我而言,单独建立联系是不够的。因为我需要用于日志记录识别和访问控制的源IP。伪装使它联系起来但却盲目地被接受。连接总是显示来自一个错误的IP地址。
我得到了一个SQL服务器,在通过VPN后,它必须根据源IP地址接受/拒绝连接。还倾向于保持访问IP的日志记录,以帮助跟踪错误或防止黑客入侵。
仍然想知道为什么在VPN的这个端点将不会发生除非伪装。怀疑存在本地防火墙或安全问题。
请分享一些经验或建议,因为你冲浪到这条线。谢谢。
https://serverfault.com/questions/521482
复制相似问题