我们有一个openvpn服务器(我相信我们的路由器),以及移动客户端,它们可以从很远的地方连接到Internet,但有时也可以从我们办公室内部连接到Internet。这些系统没有头,因此在连接到办公室网络之前对它们进行不同的配置是没有必要的-我们希望通过它们的avahi主机名通过SSH进入它们,而不管它们的物理位置。
当它们连接到我们网络之外的Internet时,我们可以ping和SSH。当它们从我们的局域网内部连接时,有时hostname.local
解析为192.168.10.3
(并且ping和SSH不起作用),有时解析为192.168.1.211
(并且ping和ssh起作用)。 / p>
在移动客户端上监视wireshark时,会出现对192.168.10.3地址的ping请求,但没有得到答复。
我们如何配置客户端,以便从网络内部进行连接时可以访问它们?
ifconfig
在客户端上的输出(通过我们的办公室LAN连接到VPN)
eth0 Link encap:Ethernet HWaddr 00:04:4b:a7:fa:e5
inet addr:192.168.1.223 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::7a45:f5b1:1b87:c6f0/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:8964 errors:0 dropped:0 overruns:0 frame:0
TX packets:771 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1847719 (1.8 MB) TX bytes:160760 (160.7 KB)
Interrupt:42
tap0 Link encap:Ethernet HWaddr ce:d4:a6:18:48:21
inet addr:192.168.10.3 Bcast:192.168.10.255 Mask:255.255.255.0
inet6 addr: fe80::ccd4:a6ff:fe18:4821/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1381 errors:0 dropped:0 overruns:0 frame:0
TX packets:58 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:214474 (214.4 KB) TX bytes:7149 (7.1 KB)
route
在客户端上的输出(通过我们的办公室LAN连接到VPN)
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
default 192.168.10.1 0.0.0.0 UG 50 0 0 tap0
default 192.168.1.1 0.0.0.0 UG 100 0 0 eth0
link-local * 255.255.0.0 U 1000 0 0 eth1
192.168.1.0 * 255.255.255.0 U 100 0 0 eth0
192.168.2.0 * 255.255.255.0 U 0 0 0 eth1
192.168.10.0 * 255.255.255.0 U 50 0 0 tap0
从同一LAN上的另一台计算机到我们的移动客户端的连续ping操作。无论出于何种原因,.local
名称都无法预测地解析为VPN IP或其他IP。无论如何,对VPN IP(第二个)的ping会挂起:
[15:51:25]~$ ping liber0.local
PING liber0.local (192.168.1.223) 56(84) bytes of data.
64 bytes from 192.168.1.223: icmp_seq=1 ttl=64 time=4.00 ms
64 bytes from 192.168.1.223: icmp_seq=2 ttl=64 time=6.09 ms
64 bytes from 192.168.1.223: icmp_seq=3 ttl=64 time=38.8 ms
^C
--- liber0.local ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 4.003/16.302/38.805/15.935 ms
[15:51:29]~$ ping liber0.local
PING liber0.local (192.168.10.3) 56(84) bytes of data.
^C
--- liber0.local ping statistics ---
27 packets transmitted, 0 received, 100% packet loss, time 26629ms
OpenVPN配置文件:
client
dev tap
proto udp
remote <redacted>
float
resolv-retry infinite
nobind
persist-key
persist-tun
verb 3
ca <redacted>.pem
cert <redacted>.pem
key <redacted>.key
cipher AES-256-CBC
auth SHA256
答案 0 :(得分:0)
关键提示是ICMP数据包到达了VPN连接的客户端,但未得到答复。事实证明,默认的rp_filter(反向路径过滤器)是严格检查和丢弃数据包的方法。将net.ipv4.conf.default.rp_filter = 2
添加到/etc/sysctl.conf
会将rp_filter设置为松散的反向路径检查,一切正常。