JunkWire
功能:提高爛網的可用性。
UDP偽裝TCP:偽裝為TCP之後減少QoS
可設定多伺服器,自動斷線重連換服,上層無感知:心跳偵測,每秒發送5個心跳包。如果5個心跳包都遺失的話就切換到下一個伺服器。 2秒即可完成。
可選FEC前向糾錯:20個原始包加10個糾錯包,就能將丟包率降低到萬分之一。
交織編碼:可以將短時間集中的丟包均勻開,防止原始包和糾錯包都丟掉。
配置方法
junkwire使用tun設備進行資料傳送,所以先確定運行環境支援tun設備。運作後會建立一個tun設備叫faketcp,這個設備ip位址可以透過設定檔設定。一般寫成10.1.1.1即可,只要不跟自己本地網路環境衝突就好。運作後會虛擬一個網路設備10.1.1.2。
服務端配置
先配置服務端DNAT,把對應埠的包轉給junkwire處理。
首先開啟ipv4轉發,在/etc/sysctl.conf 檔案中加入net.ipv4.ip_forward=1 然後執行sysctl -p使其生效。
新增iptables規則iptables -t nat -A PREROUTING -i 網路卡名稱-d 網路卡IP -p tcp --dport 17021(客戶端連的連接埠) -j DNAT --to-destination 10.1.1.2:17021
wireguard配置舉例,依實際情況改動
[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
服務端junkwire設定檔舉例
{
"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 設定文件
啟動wireguard wg-quick up 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也被帶進了wireguard
ip route add 服務端ip/32 via 本機閘道dev eth0
wireguard配置
[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
junkwire設定舉例
{
"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 設定文件
啟動wireguard wg-quick up wg0