ネットワークインターフェースからゼロ層インターフェースへのトラフィックの転送

ネットワークインターフェースからゼロ層インターフェースへのトラフィックの転送

環境

  • Ubuntu 18.04.3 LTS
  • ZeroTier 1.4.6 (最新の安定パッケージ)
  • Wine 4.17 (最新の開発パッケージ)

私は自分のシステムで Red Alert 3 LAN セッション (wine を使用) をホストしようとしており、CGNAT セットアップの背後にあるため、zerotier を使用したいと考えています。

Zerotier は、同じ (zerotier) ネットワーク上の他のシステムとの接続に関しては完璧に動作します。しかし、ネットワーク ロビーで他のプレイヤーを表示できません。Wireshark を使用して、RA3 が正常に動作するために必要な UDP パケットが LAN インターフェイスでのみ送信され、zerotier ネットワーク インターフェイスにはまったく転送されていないことを発見しました。

次に私が試みたのは、ツールを使用して Wine にゼロ層インターフェースの使用を強制することでした。

  1. LD_PRELOAD を使用してロードできる C の小さなバインド プログラム
  2. スクリプトを使用して名前空間を作成し、それにインターフェースをバインドする
  3. ファイアージェイルの使用

    これらが同じ順序で失敗した理由:

  4. UDPをサポートしていなかったため

  5. これは最初はうまくいきました。しかし、安定しておらず、一貫性もありませんでした。ロビーで他のプレイヤーが私を見るのに、私が彼らを見ることができないことがありました。また、その逆もありました。また、これをルートとして実行する必要がありましたが、これは Wine を使用するときには好ましくありません。したがって、このオプションは役に立ちませんでしたが、いくつかのことを理解するのに役立ちました。
  6. そのインターフェースにバインドすることはできましたが、残念ながら同じ IP を使用することができず (同じサブネット上に別の IP が生成されます)、オプション 2 を使用したときのような出力が得られませんでした。UI からゼロ層ネットワーク インターフェースに IP アドレスを追加しようとしましたが、my.zerotier.com役に立ちませんでした。

これ以外にも、iptables の設定をいろいろ試してみましたが、効果はありませんでした。sysctl 経由で ipv4 転送も有効にしました。それでも、iptables 経由で解決できると思います。これこれは私がこれまでに試した最新の試みです(bashスクリプトの形式)

関連情報