Routing

openvpn 伺服器未使用 tcpdump 顯示流量

  • February 6, 2021

我有一個 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 你甚至可以讓它以十六進制形式記錄數據包數據。

引用自:https://serverfault.com/questions/1052645