ジャンクワイヤー
機能: 不良ネットワークの使いやすさを向上させます。
UDP が TCP を装う: TCP を装った後に QoS が低下する
複数のサーバーを構成でき、自動切断、再接続、サーバー変更、上位層の認識なし: ハートビート検出、1 秒あたり 5 つのハートビート パケットの送信。 5 つのハートビート パケットがすべて失われた場合は、次のサーバーに切り替えます。 2秒で完了できます。
オプションの FEC 前方誤り訂正: 20 個の元のパケットと 10 個の誤り訂正パケットにより、パケット損失率を 10,000 分の 1 に減らすことができます。
インターリーブ符号化:短時間に集中したパケット損失を均等に分散させ、元のパケットと誤り訂正パケットの両方の損失を防ぎます。
設定方法
Junkwire はデータ送信に tun デバイスを使用するため、まず動作環境が tun デバイスをサポートしていることを確認してください。実行後、faketcp という名前の tun デバイスが作成されます。このデバイスの IP アドレスは、構成ファイルを通じて構成できます。通常、ローカル ネットワーク環境と競合しない限り、10.1.1.1 として記述できます。実行後、ネットワーク デバイス 10.1.1.2 が仮想化されます。
サーバー構成
まず、対応するポートのパケットを処理のためにジャンクワイヤーに転送するようにサーバー DNAT を構成します。
まず ipv4 転送を有効にし、net.ipv4.ip_forward=1 を /etc/sysctl.conf ファイルに追加してから、sysctl -p を実行して有効にします。
iptables ルールを追加します iptables -t nat -A PREROUTING -i ネットワーク カード名 -d ネットワーク カード IP -p tcp --dport 17021 (クライアント接続ポート) -j DNAT --to-destination 10.1.1.2:17021
ワイヤーガード構成例、実際の状況に応じて変更
[Interface]
Address = 10.200.201.1/24
ListenPort = 21007
#ListenPort = 12273
PrivateKey = xxx
MTU = 1340
[Peer]
PublicKey = xxx
AllowedIPs = 10.200.201.2/32
PersistentKeepalive = 25
サーバー側ジャンクワイヤー構成ファイルの例
{
"mode": "server",
"queue":500,
"server": {
"tun": {
"deviceIP": "10.1.1.1",
"port": "17021",
"srcIP": "10.1.1.2"
},
"socket": {
"dstIP": "127.0.0.1",
"dstPort": "21007"
}
},
"fec": {
"enable":false, //是否启用fec
"seg": 20, //几个数据包
"parity": 20, //几个纠错包
"duration":0, //交织编码的时长
"stageTimeout":8, //桶没装满的话最长等多久
"cap":500,
"row":1000
}
}
Junkwire を開始します ./junkwire -c 設定ファイル
ワイヤーガード wg を開始します - wg0 をクイックアップします
クライアント構成
クライアントは仮想デバイス 10.1.1.2 のデータがスムーズに送信されるようにする必要があり、snat が必要です。
iptables -t nat -A POSTROUTING -s 10.1.1.2 -p tcp -o eth0 -j SNAT --to-source ローカル ネットワーク カード IP
エクスポート IP がワイヤーガードに持ち込まれるのを防ぐルーティング設定
ip ルートはローカル ゲートウェイ dev eth0 経由でサーバー ip/32 を追加します
ワイヤーガード構成
[Interface]
Address = 10.200.201.2/24
PrivateKey = yJAu/oI+Oo/Mhswqbm3I/3PWYi+WSxX7JpTQ8IoQqWU=
MTU = 1340
[Peer]
PublicKey = 5/SgVv3hc3f5Fa/XoLo4isBzyrwwATs5sfQv7oWhiTM=
Endpoint = 127.0.0.1:21007
AllowedIPs = 0.0.0.0/1,128.0.0.0/1
PersistentKeepalive = 25
ジャンクワイヤーの設定例
{
"mode": "client",
"queue":500,
"client": {
"tun": {
"deviceIP": "10.1.1.1",
"port": "8978",
"srcIP": "10.1.1.2",
"peers": [
{
"ip":"线路1",
"port":"50018"
},
{
"ip":"线路2",
"port":"17021"
},
{
"ip":"线路3",
"port":"17021"
}
]
},
"socket": {
"listenPort": "21007"
}
},
"fec": {
"enable":false,
"seg": 20,
"parity": 10,
"stageTimeout": 8,
"duration": 0,
"cap": 500,
"row": 1000
}
}
Junkwire を開始します ./junkwire -c 設定ファイル
ワイヤーガード wg を開始します - wg0 をクイックアップします