OpenVPN UDP 連接超時
所以我在亞馬遜上設置了一個虛擬伺服器,我稱之為 OSERV,在 3 個不同的埠上執行 openvpn。所有 OpenVPN 伺服器都充當路由網關。2 個通過 TCP 執行的伺服器執行良好,但我的 UDP 伺服器雖然能夠建立本地連接,但對於外部 IP 總是超時。我將其稱為 UDPSERV。
因此,當我通過 UDPSERV SSH 到 OSERV 時,它工作正常。但是,當我嘗試通過 UDPSERV 在其他任何地方進行 ssh(或執行任何其他類型的活動)時,連接超時。我將把我正在測試的外部伺服器稱為 EXSERV。我已經查看了詳細級別 6 的日誌,並且在嘗試連接到 EXSERV 時看到了正在發送和接收的數據包。所以我知道這行得通。我還在客戶端機器上執行了wireshark,並且在SSH到EXSERV時也看到它發送和接收數據包也很好。
ssh root@ESERV -o ConnectTimeout=60 Connection reset by ESERV port 22
雖然奇怪的是,當我通過 UDPSERV 到 OSERV 進行活動時查看日誌時,它似乎沒有顯示出來。
我已經確認 MTU 沒有問題。有趣的是,我實際上可以將 >4000 字節作為 MTU 推送。我確實嘗試過將其設置為 500。
所以我認為這就是我對這個問題的設置所能說的一切。如果有人可以幫助我弄清楚為什麼這不起作用,我將非常感激。下面是我所有的配置。
$$ Edit $$哦耶。我通過UDPSERV從我的客戶端到EXSERV做了一個netcat,它工作正常。 所有 3 個 openvpn 伺服器配置都具有以下相關設置:
dev tun ifconfig-pool-persist ipp.txt push "redirect-gateway def1 bypass-dhcp" keepalive 10 120 comp-lzo persist-key persist-tun
不同的設置:
Serv1:
port 80 proto tcp server 10.8.0.0 255.255.255.0
服務 2:
port 443 proto tcp server 10.8.1.0 255.255.255.0
UDPSERV:
port 123 proto udp server 10.8.2.0 255.255.255.0
亞馬遜安全設置有以下允許:
傳入接受:TCP22、TCP80、TCP443、UDP123
傳出接受:一切
以下是我的 iptables 設置:
#Clear everything out iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT iptables -F iptables -X iptables -t nat -F iptables -t nat -X iptables -t mangle -F iptables -t mangle -X iptables -t raw -F iptables -t raw -X #All connections iptables -I FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT #Serv1 iptables -I FORWARD -i tun0 -o eth0 -s 10.8.0.0/24 -m conntrack --ctstate NEW -j ACCEPT iptables -t nat -I POSTROUTING -o eth0 -s 10.8.0.0/24 -j MASQUERADE #Serv2 iptables -I FORWARD -i tun1 -o eth0 -s 10.8.1.0/24 -m conntrack --ctstate NEW -j ACCEPT iptables -t nat -I POSTROUTING -o eth0 -s 10.8.1.0/24 -j MASQUERADE #UDPSERV iptables -I FORWARD -i tun2 -o eth0 -s 10.8.2.0/24 -m conntrack --ctstate NEW -j ACCEPT iptables -t nat -I POSTROUTING -o eth0 -s 10.8.2.0/24 -j MASQUERADE
我還嘗試了 UDPSERV 的以下設置:
iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 123 -j ACCEPT iptables -I FORWARD -i tun2 -j ACCEPT iptables -I FORWARD -i tun2 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -t nat -I POSTROUTING -o eth0 -s 10.8.2.0/24 -j MASQUERADE
以下是詳細級別 6 的 openvpn 日誌。客戶端從 45.16.1.12 連接。然後我連接到 OSERV 的 ssh。然後我嘗試連接到 EXSERV SSH,它在 30 秒後超時。OpenVPN 日誌。如果您在下載文件時遇到問題,請告訴我,我會嘗試其他服務。
所以事實證明問題是我在 udp 埠 123(ntpd 埠)上執行。我猜那裡的某些路由器必須對該埠進行特殊編碼,以僅允許小數據包或其他東西。是時候找到一個不同的通用 udp 埠來執行了。