JunkWire
Funktion: Verbessern Sie die Benutzerfreundlichkeit fehlerhafter Netzwerke.
UDP tarnt sich als TCP: Reduziert QoS nach der Tarnung als TCP
Es können mehrere Server konfiguriert werden, automatische Trennung, erneute Verbindung und Serverwechsel, keine Kenntnis der oberen Schicht: Heartbeat-Erkennung, Senden von 5 Heartbeat-Paketen pro Sekunde. Wenn alle fünf Heartbeat-Pakete verloren gehen, wechseln Sie zum nächsten Server. Es kann in 2 Sekunden abgeschlossen werden.
Optionale FEC-Forward-Fehlerkorrektur: 20 Originalpakete plus 10 Fehlerkorrekturpakete können die Paketverlustrate auf ein Zehntausendstel reduzieren.
Interleaving-Codierung: Kann den Paketverlust in einem kurzen Zeitraum gleichmäßig verteilen, um zu verhindern, dass sowohl Originalpakete als auch Fehlerkorrekturpakete verloren gehen.
Konfigurationsmethode
Junkwire verwendet Tun-Geräte für die Datenübertragung. Stellen Sie daher zunächst sicher, dass die Betriebsumgebung Tun-Geräte unterstützt. Nach dem Ausführen wird ein Tun-Gerät namens faketcp erstellt. Die IP-Adresse dieses Geräts kann über die Konfigurationsdatei konfiguriert werden. Im Allgemeinen kann es als 10.1.1.1 geschrieben werden, solange es keinen Konflikt mit Ihrer lokalen Netzwerkumgebung verursacht. Nach der Ausführung wird ein Netzwerkgerät 10.1.1.2 virtualisiert.
Serverkonfiguration
Konfigurieren Sie zunächst den Server-DNAT so, dass die Pakete des entsprechenden Ports zur Verarbeitung an Junkwire weitergeleitet werden.
Aktivieren Sie zunächst die IPv4-Weiterleitung, fügen Sie net.ipv4.ip_forward=1 zur Datei /etc/sysctl.conf hinzu und führen Sie dann sysctl -p aus, damit es wirksam wird.
Iptables-Regeln hinzufügen iptables -t nat -A PREROUTING -i Netzwerkkartenname -d Netzwerkkarten-IP -p tcp --dport 17021 (Client-Verbindungsport) -j DNAT --to-destination 10.1.1.2:17021
Beispiel für die Wireguard-Konfiguration, je nach tatsächlicher Situation ändern
[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
Beispiel für eine serverseitige Junkwire-Konfigurationsdatei
{
"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
}
}
Starten Sie die Junkwire-Konfigurationsdatei ./junkwire -c
Starten Sie Wireguard WG-Quick Up WG0
Client-Konfiguration
Der Client muss zulassen, dass die Daten des virtuellen Geräts 10.1.1.2 reibungslos gesendet werden, und Snat ist erforderlich.
iptables -t nat -A POSTROUTING -s 10.1.1.2 -p tcp -o eth0 -j SNAT --to-source lokale Netzwerkkarten-IP
Routing-Konfiguration, um zu verhindern, dass Export-IP in Wireguard übernommen wird
IP-Route Server-IP/32 über lokales Gateway dev eth0 hinzufügen
Wireguard-Konfiguration
[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
Beispiel für eine Junkwire-Konfiguration
{
"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
}
}
Starten Sie die Junkwire-Konfigurationsdatei ./junkwire -c
Starten Sie Wireguard WG-Quick Up WG0