
環境
- 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 にゼロ層インターフェースの使用を強制することでした。
- LD_PRELOAD を使用してロードできる C の小さなバインド プログラム
- スクリプトを使用して名前空間を作成し、それにインターフェースをバインドする
-
これらが同じ順序で失敗した理由:
UDPをサポートしていなかったため
- これは最初はうまくいきました。しかし、安定しておらず、一貫性もありませんでした。ロビーで他のプレイヤーが私を見るのに、私が彼らを見ることができないことがありました。また、その逆もありました。また、これをルートとして実行する必要がありましたが、これは Wine を使用するときには好ましくありません。したがって、このオプションは役に立ちませんでしたが、いくつかのことを理解するのに役立ちました。
- そのインターフェースにバインドすることはできましたが、残念ながら同じ IP を使用することができず (同じサブネット上に別の IP が生成されます)、オプション 2 を使用したときのような出力が得られませんでした。UI からゼロ層ネットワーク インターフェースに IP アドレスを追加しようとしましたが、
my.zerotier.com
役に立ちませんでした。
これ以外にも、iptables の設定をいろいろ試してみましたが、効果はありませんでした。sysctl 経由で ipv4 転送も有効にしました。それでも、iptables 経由で解決できると思います。これこれは私がこれまでに試した最新の試みです(bashスクリプトの形式)