Routing
openvpn 伺服器未使用 tcpdump 顯示流量
我有一個 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 內部:
在伺服器配置文件中:
... management localhost 7505 ...
採用:
$ telnet localhost 7505 ... >INFO:OpenVPN Management Interface Version 1 -- type 'help' for more info log on SUCCESS: real-time log notification set to ON verb 6 SUCCESS: verb level changed >LOG:1612639797,D,XXXX/XXX.XXX.XXX.XXX:XXXXX UDPv4 READ [XXX] from [AF_INET]XXX.XXX.XXX.XXX:XXXXX (via [AF_INET]XXX.XXX.XXX.XXX%XXX): P_DATA_V2 kid=2 DATA len=XXX >LOG:1612639797,D,XXXX/XXX.XXX.XXX.XXX:XXXXX TUN WRITE [XXX] >LOG:1612639797,D,XXXX/XXX.XXX.XXX.XXX:XXXXX TUN READ [XXX] >LOG:1612639797,D,XXXX/XXX.XXX.XXX.XXX:XXXXX UDPv4 WRITE [XXX] to [AF_INET]XXX.XXX.XXX.XXX:XXXXX (via [AF_INET]XXX.XXX.XXX.XXX%XXX): P_DATA_V2 kid=2 DATA len=XXX ... log off SUCCESS: real-time log notification set to OFF verb 3 SUCCESS: verb level changed exit $
(在這種情況下,我不得不盲目地寫“註銷”,因為實時日誌完全乾擾了輸出。我在繁忙的伺服器上完成了這個。但它仍然有效。)
詳情請參閱
man openvpn
。請注意,如果使用,所有內容也會到達伺服器日誌文件,並且對於大量流量,日誌會非常大。AFAIK 你甚至可以讓它以十六進制形式記錄數據包數據。