JunkWire
Função: Melhorar a usabilidade de redes ruins.
UDP se disfarça de TCP: reduz a QoS após se disfarçar de TCP
Vários servidores podem ser configurados, desconexão automática, reconexão e mudança de servidor, sem reconhecimento da camada superior: detecção de pulsação, envio de 5 pacotes de pulsação por segundo. Se todos os cinco pacotes de pulsação forem perdidos, mude para o próximo servidor. Pode ser concluído em 2 segundos.
Correção de erros de encaminhamento FEC opcional: 20 pacotes originais mais 10 pacotes de correção de erros podem reduzir a taxa de perda de pacotes para um décimo milésimo.
Codificação de intercalação: pode distribuir uniformemente a perda de pacotes concentrada em um curto período de tempo para evitar que os pacotes originais e os pacotes de correção de erros sejam perdidos.
Método de configuração
O Junkwire usa dispositivos tun para transmissão de dados, portanto, primeiro certifique-se de que o ambiente operacional oferece suporte a dispositivos tun. Após a execução, um dispositivo tun chamado faketcp será criado. O endereço IP deste dispositivo pode ser configurado através do arquivo de configuração. Geralmente, pode ser escrito como 10.1.1.1, desde que não entre em conflito com o ambiente de rede local. Após a execução, um dispositivo de rede 10.1.1.2 será virtualizado.
Configuração do servidor
Primeiro, configure o servidor DNAT para encaminhar os pacotes da porta correspondente para junkwire para processamento.
Primeiro habilite o encaminhamento ipv4, adicione net.ipv4.ip_forward=1 ao arquivo /etc/sysctl.conf e então execute sysctl -p para que ele tenha efeito.
Adicionar regras de iptables iptables -t nat -A PREROUTING -i nome da placa de rede -d placa de rede IP -p tcp --dport 17021 (porta de conexão do cliente) -j DNAT --to-destination 10.1.1.2:17021
Exemplo de configuração do Wireguard, mude de acordo com a situação real
[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
Exemplo de arquivo de configuração de junkwire do lado do servidor
{
"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
}
}
Inicie o arquivo de configuração junkwire ./junkwire -c
Inicie o wireguard wg-quick up wg0
Configuração do cliente
O cliente precisa permitir que os dados do dispositivo virtual 10.1.1.2 sejam enviados sem problemas, e o snat é necessário.
iptables -t nat -A POSTROUTING -s 10.1.1.2 -p tcp -o eth0 -j SNAT --to-source ip da placa de rede local
Configuração de roteamento para evitar que o IP de exportação seja transferido para o wireguard
rota ip adicionar servidor ip/32 via gateway local dev eth0
configuração de proteção de arame
[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
exemplo de configuração de 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
}
}
Inicie o arquivo de configuração junkwire ./junkwire -c
Inicie o wireguard wg-quick up wg0