我有一个 OpenVPN 服务器和两个客户端,
我可以相互 ping 客户端,但是当我这样做时,我在使用 tcpdump 的服务器上看不到任何数据包
服务器
在 192.168.0.1 上运行
我尝试使用捕获流量tcpdump -i tun0 icmp --immediate-mode -l -n
客户
在 192.168.0.2 上运行
我可以ping client2 ping 192.168.0.3
,它可以很好地解决:
PING 192.168.0.3 (192.168.0.3) 56(84) bytes of data.
64 bytes from 192.168.0.3: icmp_seq=1 ttl=128 time=32.4 ms
TCP 转储
但我从 tcpdump 看不到任何东西:
0 packets captured
0 packets received by filter
0 packets dropped by kernel
虽然如果我直接 ping openvpn 服务器ping 192.168.0.1
,我可以看到在那里捕获的数据包:
18:05:04.022747 IP 192.168.0.2 > 192.168.0.1: ICMP echo request, id 5, seq 5, length 64
18:05:04.022801 IP 192.168.0.1 > 192.168.0.2: ICMP echo reply, id 5, seq 5, length 64
如何在服务器上捕获客户端间的通信数据包?
如果使用
client-to-client
选项,则无法通过 tcpdump 看到它。在这种情况下,OpenVPN 不会将任何流量转发到内核。它接收一个数据包,处理它并发送到另一个客户端,但由于它不是发往服务器系统,也不是通过它路由的,因此不需要将它发送到tun
设备。您可以使用管理控制台和高详细级别 (6) 查看流量是否在 OpenVPN 内部:
在服务器配置文件中:
利用:
(在这种情况下,我不得不盲目地写“注销”,因为实时日志完全干扰了输出。我在繁忙的服务器上完成了这个。但它仍然有效。)
详情请参阅
man openvpn
。请注意,如果使用,所有内容也会到达服务器日志文件,并且对于大量流量,日志会非常大。AFAIK 你甚至可以让它以十六进制形式记录数据包数据。