Routing

OpenVPN UDP 連接超時

  • December 25, 2016

所以我在亞馬遜上設置了一個虛擬伺服器,我稱之為 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 埠​​來執行了。

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