如何讓 OpenVPN 只使用 TCP?

如何讓 OpenVPN 只使用 TCP?

我使用 OVH VPS 作為 VPN 進行 DDoS 防護。在對客戶端 > 伺服器隧道使用 UDP 進行測試時,我注意到當攻擊觸發 OVH 的 VAC 緩解措施(無法停用)時,伺服器和用戶端之間的流量會中斷。這意味著 OVH 的 VAC 系統將我客戶端的 UDP 流量視為攻擊者並阻止它。我知道這是問題所在,因為 OVH 網站上的另一位 OVH 客戶發了貼文。

考慮到這一點,我將隧道切換到 TCP。但現在,當客戶端連接到遊戲時,我看到他正在使用 UDP 連接到實際的遊戲。正如預測的那樣,在伺服器上啟動負載測試(模擬 DDoS 攻擊),女巫斷開了我的客戶端與遊戲的連接,但沒有斷開實際的 VPN 伺服器的連接。

TL;DR:需要讓我的 OpenVPN 伺服器僅使用 TCP 進行遊戲連接,DNS 似乎沒問題。雖然我的客戶端隧道是透過 TCP 建立的,但伺服器透過 UDP 連接到遊戲。如何讓伺服器在遊戲連線中僅使用 TCP?

編輯:也許 iptables 規則拒絕轉送的 UDP 流量或鼓勵 TCP?

答案1

您可以在命令列上嘗試:

openvpn --proto tcp-client client.ovpn


或者,您可以將協定設為 ,tcp-client並將協定設定為設定檔中每個路由的 tcp(如果有) 在下面的範例中,您將確保 存在proto tcp-client,然後將其變更remote 1.2.3.4 1194 udpremote 1.2.3.4 1194 tcp

client
dev tun
proto tcp-client
remote examplevpn.net 443
remote 1.2.3.4 1194 udp
remote 1.2.3.4 443 tcp

auth-user-pass

resolv-retry infinite
nobind
persist-tun
persist-key
persist-remote-ip

cipher AES-256-CBC
tls-cipher TLS-DHE-RSA-WITH-AES-256-CBC-SHA:TLS-DHE-DSS-WITH-AES-256-CBC-SHA:TLS-RSA-WITH-AES-256-CBC-SHA
remote-cert-tls server
verify-x509-name us-il name-prefix
key-direction 1
comp-lzo no
verb 3

;ca ca.crt

答案2

您的標題與您的問題不符;您的 OpenVPN 隧道已經使用 TCP,但隧道資料本身是不受 OpenVPN 控制甚至超出你的控制範圍。

如果遊戲已編寫為使用 UDP,則將要使用UDP,更重要的是,遊戲伺服器期望客戶端使用 UDP。因此,如果您在封包離開 VPN 伺服器之前將其轉換為 TCP,遊戲伺服器將不知道如何處理它們。

一般來說,您唯一的選擇是完全阻止 UDP。如果遊戲支援 TCP 作為選擇,它別無選擇,只能使用它。如果遊戲需要UDP,則根本無法運作。

相關內容