0

リモートからopenvpnサーバーに接続する必要があり、openvpnサーバーがNATの背後にあるため、リバースUDPトンネルをセットアップしたいと考えています。これには、socat と ssh を使用します。tcp トンネル コマンド:

socat exec:"ssh removeserver \"socat tcp-listen:10000,fork -\"" tcp-connect:localhost:22

正しく動作し、remoteserver:10000 への ssh 接続を確立できます。

しかし、udp で同じことをしたい場合:

socat exec:"ssh removeserver \"socat udp-listen:10000,fork -\"" udp-connect:localhost:1194

次に、openvpn 接続を構築しようとすると、次のエラーが表示されます。

2011/12/23 13:27:43 socat[28241] E read(3, 0x80c3b08, 8192): Connection refused

両方のログファイル (サーバーとクライアント) に接続試行のエントリがあるため、最初はトンネルが機能しているように見えます。しかし、接続を確立できません。

4

1 に答える 1

2

これを試したところ、トンネルの ssh 部分が UDP データグラム サイズを保持していないため、失敗したと考えられます。すなわち。14 バイトのデータグラムと 22 バイトのデータグラムは、もう一方の端で 26 バイトのデータグラムに結合されます。このシナリオでは、Openvpn は機能しません。

これと同様の構成で概念実証に成功しましたが、UDP データグラムを読み取り、それらを 16 ビット長のプレフィックスを持つ tcp ストリーム (つまり、長さ、バイト、長さ、バイトなど)、明らかにその逆も行います。

これで、 openvpn をトンネリングできました。

于 2014-05-30T17:06:28.480 に答える