
私は ncat (Windows 用の nmap ディストリビューションから) を使用して、単純に UDP ストリームを転送しようとしています。
例: ビデオ ストリームはポート 5444 で受信できます。そのストリームをポート 5555 上の別のマシン (たとえば 192.168.10.10) に転送したいとします。
TCP接続(つまり、
netsh インターフェイス portproxy 追加 v4tov4 listenport=5444 listenaddress=192.168.10.9 connectport=80 connectaddress=192.168.10.10
) ですが、UDP の場合はどうすればよいかわかりません。
Linux では Socat が明らかな解決策ですが、Windows を使用する必要があります。
私はこれを試しました:
5444 のコマンド192.168.10.10 5555 のコマンドを実行します。
しかし、パフォーマンスがひどくて使えません。ncat については間違ったことを言っているように思います。
これは簡単なはずですが、iptables などに関しては初心者です (答えはそこにあると思います)。何かアドバイスがあれば、ぜひお願いします。
答え1
サードパーティに依存しない「簡単な」Windowsベースのソリューションを見つけました。それは、Windows Server OSでRRAS NATを有効にすることです。
netsh ルーティング ip nat ポートマッピング "イーサネット" udp 0.0.0.0 5444 192.168.10.10 5555 を追加します
ここで、「Ethernet」は、ルーティングとリモート アシスタンスで NAT が有効になっている「パブリック インターフェイス」である NIC の名前です。
適切に構成されている場合、次のコマンドを実行すると、次のような出力が生成されます。
>netsh routing ip nat show interface
NAT Ethernet Configuration
---------------------------
Mode : Private Interface
NAT Static Port Mapping Configuration
-------------------------------------
Protocol : UDP
Public address : 0.0.0.0
Public port : 5444
Private address : 192.168.10.10
Private port : 5555
harrymc の sudpproxy の提案も良い回答でしたが、私のアプリケーションでは、ネイティブ Windows アプローチの追加オーバーヘッドは、サードパーティ ツールへの依存よりも欠点としては小さくなります。