目前我有一个带有路由(非桥接)的 openvpn 服务器和客户端设置
当我尝试从我的客户端 ping 到服务器 IP 地址时,它工作正常。但是当我尝试 ping openvpn 服务器后面的其余子网主机时,它不起作用。有人可以在我的设置中发现明显错误的地方吗?(openvpn 服务器在 10.10.145.181 上,主机在 10.10.146.8 ip 地址上。它们在两个不同的子网中。我可以通过 ssh 直接从 10.10.145.181 ping 10.10.146.8 到那个主机。只有当我通过 VPN 时它才这样做不行。)
据我了解,ping 流量通过 tun0 接口到达 vpn 服务器,但是 vpn 服务器没有通过 eth0 将其转发到适当的主机,因此被 ping 的主机看不到任何流量和数据包被丢弃。但什么可能导致这种情况?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>
Run Code Online (Sandbox Code Playgroud)
在 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
Run Code Online (Sandbox Code Playgroud)
在我尝试 ping (10.10.146.8) 的子网中的主机上:
> 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>
Run Code Online (Sandbox Code Playgroud)
系统日志(openvpn 日志)说:
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]
Run Code Online (Sandbox Code Playgroud)
openvpn 客户端上的 netstat:
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 tun0
Run Code Online (Sandbox Code Playgroud)
openvpn 服务器上的 netstat:
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
Run Code Online (Sandbox Code Playgroud)
我在 openvpn 服务器配置中有一个声明来路由来自客户端的流量,我确实看到了这种情况。
push "route 10.10.146.0 255.255.255.0"
Run Code Online (Sandbox Code Playgroud)
安德鲁问题的其他信息
> 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
Run Code Online (Sandbox Code Playgroud)
更新:实际上现在我在服务器上的 eth0 上看到了流量,但是该流量没有进入网络并被其他主机接收。我认为这是 Amazon VPC 问题。
par*_*rth 15
好的,经过几个小时的调查,我发现了这一点。
问题在于转发设置。转发到 eth0 端口的数据包没有正确的网络内主机源 IP 地址。IP地址来自VPN。
05:07:43.991961 IP 10.8.0.6 > 10.10.146.8: ICMP echo request, id 3497, seq 499, length 64
Run Code Online (Sandbox Code Playgroud)
您可以通过在 linux 操作系统中启用等效的 NAT(在路由器上)来切换它:
iptables -t nat -A POSTROUTING -o <eth0 or whatever else> -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)
这为我解决了这个问题。
归档时间: |
|
查看次数: |
20348 次 |
最近记录: |