古いゲームの放送を正しく設定する方法を学びたいです。私は特にローカルネットワーク上で動作し、192.168.0.0/16サブネットのゲームだけを検索するWarcraft 3ゲームに興味があります。
私の使命は、ローカルネットワークにあるように、LinuxとWindowsシステムでゲームを実行させることです。
初期データ:
- ローカルインタフェース:eth0
- ローカルアドレス:192.168.20.75
- VPN インターフェイス: tun0
- VPNアドレス:192.168.55.1
- ゲームポート:6112
今、奇妙に見える動作する解決策がありました。
- Warcraft 3を起動してローカルゲームを作成しましたが、0.0.0.0:6112まで上がりました。
- ルーティングルールの開発
ip route add 255.255.255.255 dev tun0
- 放送ソースを変えるルールを作っています。
iptables -tnat -A POSTROUTING -p udp -m udp --dport 6112 -j SNAT --to-source 192.168.55.1
チャジャン、ゲームはクライアントのローカルネットワークに表示されます
この状況では、より信頼性が高く、あまり「奇妙な」解決策はありますか?私を混乱させるのは、すべての255.255.255.255を対応するtun0
インターフェースにリダイレクトする必要があるということです。
答え1
私はiptablesで私の問題に対する解決策を見つけましたが、それが私に役立つことができないことがわかりました。オンラインチャットでnfttablesを調べるように指示され、数時間後にこのソリューションが見つかりました。
MANGLEチェーンのINPUTとOUTPUT用の2つのテーブルを作成する
nft 'add chain ip mangle OUTPUT { type filter hook output priority 150; policy accept; }'
nft 'add chain ip mangle INPUT { type filter hook input priority 150; policy accept; }'`
トラフィックを別のインターフェイスにコピー
nft add rule mangle INPUT iifname eth0 ip daddr 255.255.255.255 udp dport 6112 meta mark set 2 dup to 255.255.255.255 device tun0
ローカルネットワークインターフェイス(eth0)からトラフィックを取得し、受信アドレスがブロードキャスト(255.255.255.255)から来ていることを確認し、ポート6112に進みます。条件が true の場合は「2」と表示し、ポート 6112 に送信します。アドレス 255.255.255.255、VPN(tun0) インターフェイスのみ。
この段階では、VPNのデバイスで必要なトラフィックの確認を開始し、送信元アドレスのみがローカルネットワークの送信元と同じです。それでは、この問題を解決してみましょう。
nft add rule mangle OUTPUT oifname tun0 meta mark 2 counter ip saddr set 192.168.55.5
ここでは、ラベルが "2" の tun0 インターフェイスから着信トラフィックの送信元アドレスが VPN ネットワークのアドレスに置き換えられていることを確認します。それ以外の場合、ブロードキャスト経由でアクセスすると、トラフィックはローカルネットワークアドレスに流れます。