OpenVPN で TCP のみを使用するにはどうすればよいでしょうか?

OpenVPN で TCP のみを使用するにはどうすればよいでしょうか?

私は、DDoS 保護用の VPN として OVH VPS を使用しています。クライアント > サーバー トンネルに UDP を使用してテストしているときに、攻撃によって OVH の VAC 緩和 (無効にできない) がトリガーされると、サーバーとクライアント間のトラフィックが中断されることに気付きました。つまり、OVH の VAC システムは、クライアントの UDP トラフィックを攻撃者として扱い、ブロックしていたのです。OVH Web サイトで別の OVH 顧客からの投稿があったため、これが問題であることが分かりました。

それを念頭に置いて、トンネルを TCP に切り替えました。しかし、クライアントがゲームに接続すると、実際のゲームへの接続に UDP が使用されていることがわかります。予想どおり、サーバー上で負荷テスト (シミュレートされた DDoS 攻撃) を開始すると、クライアントはゲームから切断されましたが、実際の VPN サーバーからは切断されませんでした。

TL;DR: OpenVPN サーバーがゲーム接続に TCP のみを使用するようにする必要があります。DNS は問題ないようです。クライアントのトンネルは TCP で確立されていますが、サーバーは UDP 経由でゲームに接続します。サーバーがゲーム接続に TCP のみを使用するようにするにはどうすればよいですか?

編集: 転送された UDP トラフィックを拒否したり、TCP を推奨したりする iptables ルールでしょうか?

答え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 を必要とする場合、まったく動作しません。

関連情報