정크와이어
기능: 불량 네트워크의 유용성을 향상시킵니다.
UDP는 TCP로 위장: TCP로 가장한 후 QoS를 줄입니다.
여러 서버를 구성할 수 있으며 자동 연결 해제, 재연결 및 서버 변경, 상위 계층 인식 없음: 하트비트 감지, 초당 5개의 하트비트 패킷 전송. 5개의 하트비트 패킷이 모두 손실되면 다음 서버로 전환합니다. 2초 안에 완료할 수 있습니다.
FEC 전달 오류 수정 옵션: 원래 패킷 20개와 오류 수정 패킷 10개를 추가하면 패킷 손실률을 10,000분의 1로 줄일 수 있습니다.
인터리빙 코딩: 짧은 시간에 집중된 패킷 손실을 균등하게 분산시켜 원본 패킷과 오류 정정 패킷이 모두 손실되는 것을 방지할 수 있습니다.
구성 방법
Junkwire는 데이터 전송을 위해 tun 장치를 사용하므로 먼저 운영 환경이 tun 장치를 지원하는지 확인하십시오. 실행 후, faketcp라는 tun 장치가 생성됩니다. 이 장치의 IP 주소는 구성 파일을 통해 구성할 수 있습니다. 일반적으로 로컬 네트워크 환경과 충돌하지 않는 한 10.1.1.1로 작성할 수 있습니다. 실행 후 네트워크 장치 10.1.1.2가 가상화됩니다.
서버 구성
먼저, 해당 포트의 패킷을 정크와이어(junkwire)로 전달하여 처리하도록 서버 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
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 구성 파일 시작
와이어가드 시작 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 --소스 로컬 네트워크 카드 IP
내보내기 IP가 Wireguard로 가져오는 것을 방지하는 라우팅 구성
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-quick up wg0