IPv6 á áá¯áá¬ážááááºá¡á¬áž áá»áœááºá¯ááºááá¯á· áá¬ááŒá±á¬ááááºážá
ááŸááºáá«áááºá ááá±á· áá»áœááºá¯ááºááá¯á·ááẠáá¯ááºááŸááºááŒááºážááá¯áá¬ážá¡á¬áž á¡áá¬ážáá°ááŒá±á¬áá«áááºá
á€ááœáẠáá»áœááºá¯ááºááá¯á·ááẠáá¯ááºááŸááºáá¬ážáá±á¬ IPv4 á¥áááºááá¯ááºáá±á«ááºážá¡ááŒá±á¬ááºážá ááá¯á·áá±á¬áº âáá®ážá¡áááºâ á¡ááŒá±á¬ááºážááá¯ááºáá² áá±ááºáá® âLEDâ áá
áºáá¯á¡ááŒá±á¬ááºáž ááœá±ážááœá±ážáá«áááºá ááá¯á·á¡ááŒáẠá€áá±áá¬ááœáẠá¡ááŒááºážáá»ááºážáá»ááºáá±á¬ááºáá±ááá·áº ááŒá±á
áœááºáá»á¬ážáááºáž ááŸááá±ááŒá®áž áá¯á¶ážá
áœá²áá°áá±áá¬ááŸá áááºáááºáá»á¬ážááŒáá·áº áá¯ááºáá±á¬ááºáá±áá«áááºá
á¡ááá¬ááŸáá·áº á¡áá±á¬ááºááá¯ááºážá¡ááœáẠN tunneling protocol áá»á¬áž ááŸááááº-
- á
ááá¯ááºááºáá»áá»á áááºááŸááºáá»áá»á áá°áááº
WireGuard - ááœááºáá¬ážáá»á¬ážá OpenVPN ááŸáá·áº SSH áá²á·ááá¯á· áááºá á¯á¶áá¯á¶ážááá¯ááºáááºá
- áá±á¬ááºážááŒá®áž ááá±á¬ááºážáá±á¬ GRE ááá¯ááºáá«á
- á¡ááá¯ážááŸááºážáá¯á¶ážá á¡ááŒááºáááºáá¯á¶ážá áá¯á¶ážáá¯á¶ážáá»á¬ážáá»á¬áž áá¯ááºááá¬ážáá±á¬ IPIP
- áááºáááºááŒáœááŒáœááœá¶á·ááŒáá¯ážáá²
áá»á®áá®áᬠ- á¡ááŒá¬ážáá»á¬ážá áœá¬á
áá«áá±ááá·áº áá»áœááºáá±á¬áºáᬠáááá¯ááááºáá¬áá áºáá±á¬ááºááŒá áºááá¯á· N ááᯠá¡ááá¯ááºážáá áºááá¯ááºážáá²á·áᬠááá¯ážááŒá®áž áááá·áº áááá¯ááá¯áá±á¬ááœá± ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááᯠKommersant developer ááœá±áá® áá¬ážááá¯ááºáá«á
ááá¯ááºáá²á ááá»áá¯áž
á¥áááºááŸáá¯ááºáá±á«ááºážáááá¯ááá¯áá±á¬ á¡áá»áá¯ážáá»áá¯ážááᯠáá¯áá±ááááŒá¯áá±á ááºááœááºá áá»áœááºá¯ááºá á¡ááœááºážááá¯ááºáž ááŒá®ážááŒáá·áºá á¯á¶áá°á á¡á¬áá¯á¶á á°ážá áá¯ááºááŸá¯ááᯠáááºážá áááá·áºáá«ážááŸá¯ááŒá±á¬áá·áº IPIP ááá¯á· áááºáá«áááºáá« ááœá²áá±á¬ááºáá²á·áá«áááºá áá«áá±ááá·áº áá»áœááºáá±á¬á·áºá¡áá¯ááºááœá±á¡ááœáẠáááá¬áááºááŸá¬ážáá²á· á¡á¬ážáááºážáá»ááºáá áºáá¯áá²á· áá áºáááºáá±á¬ááºááŸááá«áááº-
- ááŸá áºáááºá áá¯á¶ážááœáẠá¡áá»á¬ážáá°ááŸá¬ IP áá»á¬áž ááá¯á¡ááºáááºá
- ááá·áºá¡ááœáẠá á áºááŸááºááŒá±á¬ááºážá¡áá±á¬ááºá¡áá¬ážáááŸááá«á
ááá¯á·ááŒá±á¬áá·áº ááŒá®ážááŒáá·áºá á¯á¶áá±á¬ ááá¬ááŸááºááᯠáŠážáá±á«ááºážááœá¶á á¡ááŸá±á¬ááºáá±á¬áá·áºááá¯á· ááŒááºááá¯á·ááŒááºáž ááá¯á·ááá¯áẠáá°ááá¯ááºááá·áº áá±áá¬ááá¯ááºážááá¯á· ááŒááºááœá¬ážáá²á·áááºá
ááŒá®ážáá±á¬á· áá
áºáá±á·ááŸá¬ áá±á¬ááºážáá«ážááœá± áááºáá±áááºážáá²á·
âáá®ááŸá¬ ááœá±áá»ááºáááº! ááá¯ážááá¯áž IPIP á áá«á·á¡ááœáẠáá¯á¶áá±á¬ááºáááºá" - áá«á ááºážá á¬ážáááºá
ááááºáá±á¬á· áá»ááºáááºáᬠááœá±áá±á¬áẠáá¯á¶ážáááá¯ááºáá²á·áá«áá°ážá UDP ááœáẠEncapsulation ááẠáááááŒá¿áá¬ááᯠááŒá±ááŸááºážáá±ážááẠ- ááŒááºáá០NAT áá±á¬ááºááœááºááŸá áá±á¬ááºáááºáá»á¬ážááŸáá·áº áá»áááºáááºááá¯ááºáááºá ááá¯á·áá±á¬áº á€áá±áá¬ááœáẠIPIP ááá±á¬ááºáááºá¡á¬ážáááºážáá»ááºáá áºáááºááᯠá¡áááºážáá áºáá¯áá²ááœáẠááœáá·áºá á±ááẠ- áá¯áá¹ááááááœááºáááºá០áááºáá°áááᯠááŒááºááá¯ááºááá·áºáá±á¬ááºááœááºááœáẠáá¯ááºážáá±ááá¯ááºáá«áááºá á¡áá»á¬ážáá°ááŸá¬ IP ááŸáá·áº client ááááºáááºáž (Pure IPIP ááœáẠá€ááŒá¿áá¬áááŸááá«)á
á€áá
áºááŸá
áºááœá²ááŒá¿áá¬ááá¯ááŒá±ááŸááºážáááº, utility ááá¯ááœá±ážááœá¬ážáá²á·áááºá
ááá·áºáá¬ááºááœáŸááºážááᯠáá»áœááºá¯ááºááá¯á· áááá¯á¡ááºáá«á
á¡áá¯áá±á á¡áááºá áááºááẠclient á á¡áá»á¬ážáá°ááŸá¬ ááááºáááºážááŸáá·áº IP ááᯠââáááá«á (á¥ááá¬á áááºážááá±á¬ááºááœááºááŸááá°ááá¯ááºáž áááºááá·áºáá±áá¬á០áááœá¬ážáá«á NAT ááẠports 1-in-1 ááᯠááŒá±áá¯á¶ááœá²ááẠááŒáá¯ážá á¬ážáááº)á áááºááẠIPIP-over-FOU á¥áááºááá¯ááºáá±á«ááºážááᯠáááºáá®ážááá¯ááºáááºá áááºááá·áº scripts ááŸááá«áá² command áá»á¬ážááá¯ááá¯ááºáá¬áá«á
áá¬áá¬áá±á«áºááœááº-
# ÐПЎгÑÑзОÑÑ ÐŒÐŸÐŽÑÐ»Ñ ÑÐŽÑа FOU
modprobe fou
# СПзЎаÑÑ IPIP ÑÑÐœÐœÐµÐ»Ñ Ñ ÐžÐœÐºÐ°Ð¿ÑÑлÑÑОей в FOU.
# ÐПЎÑÐ»Ñ ipip пПЎгÑÑзОÑÑÑ Ð°Ð²ÑПЌаÑОÑеÑкО.
ip link add name ipipou0 type ipip
remote 198.51.100.2 local 203.0.113.1
encap fou encap-sport 10000 encap-dport 20001
mode ipip dev eth0
# ÐПбавОÑÑ Ð¿ÐŸÑÑ ÐœÐ° кПÑПÑПЌ бÑÐŽÐµÑ ÑлÑÑаÑÑ FOU ÐŽÐ»Ñ ÑÑПгП ÑÑММелÑ
ip fou add port 10000 ipproto 4 local 203.0.113.1 dev eth0
# ÐазМаÑОÑÑ IP аЎÑÐµÑ ÑÑММелÑ
ip address add 172.28.0.0 peer 172.28.0.1 dev ipipou0
# ÐПЎМÑÑÑ ÑÑММелÑ
ip link set ipipou0 up
áá±á¬ááºáááºá¡áá±á«áº-
modprobe fou
ip link add name ipipou1 type ipip
remote 203.0.113.1 local 192.168.0.2
encap fou encap-sport 10001 encap-dport 10000 encap-csum
mode ipip dev eth0
# ÐпÑОО local, peer, peer_port, dev ЌПгÑÑ ÐœÐµ пПЎЎеÑжОваÑÑÑÑ ÑÑаÑÑЌО ÑÐŽÑаЌО, ЌПжМП ОÑ
ПпÑÑÑОÑÑ.
# peer О peer_port ОÑпПлÑзÑÑÑÑÑ ÐŽÐ»Ñ ÑÐŸÐ·ÐŽÐ°ÐœÐžÑ ÑÐŸÐµÐŽÐžÐœÐµÐœÐžÑ ÑÑÐ°Ð·Ñ Ð¿ÑО ÑПзЎаМОО FOU-listener-а.
ip fou add port 10001 ipproto 4 local 192.168.0.2 peer 203.0.113.1 peer_port 10000 dev eth0
ip address add 172.28.0.1 peer 172.28.0.0 dev ipipou1
ip link set ipipou1 up
áááºááŸá¬
ipipou*
â áá±áááá¯ááºáᬠá¥áááºááá¯ááºáá±á«ááºáž ááœááºááẠá¡ááºáá¬áá±á·á áºá á¡áááº203.0.113.1
â á¡áá»á¬ážáá°ááŸá¬ IP áá¬áá¬198.51.100.2
- áá¯á¶ážá áœá²áá°á á¡áá»á¬ážáá°ááŸá¬ IP192.168.0.2
- ááŒá¬ážáᶠeth0 á¡ááœáẠáááºááŸááºáá¬ážáá±á¬ client IP10001
- FOU á¡ááœáẠááŒááºááœááºážáá±á¬ááºááẠááááºáááºáž20001
- FOU á¡ááœáẠá¡áá»á¬ážáá°ááŸá¬ á¡áá¯á¶ážááŒá¯áá° ááááºáááºáž10000
- FOU á¡ááœáẠá¡áá»á¬ážáá°ááŸá¬ áá¬áá¬ááááºáááºážencap-csum
â encapsulated UDP packetsáá»á¬ážááá¯á· UDP checksum ááá¯ááá·áºááẠááœá±ážáá»ááºááŸá¯á ááŒáá·áº á¡á á¬ážááá¯ážááá¯ááºáá«áááºánoencap-csum
ááŒá±á¬á áá¬áááá¯á ááá¯ááºáá¬ááŸá¯ááᯠááŒááºá encapsulation á¡ááœáŸá¬á ááááºážáá»á¯ááºáá¬ážááŒá®áž (á¡áá¯ááºááẠá¥áááºá¡ááœááºážá ááŸááá±á ááº)eth0
â ipip á¥áááºááá¯ááºáá±á«ááºážááᯠáá»ááºááŸá±á¬ááºááá·áº áá±áááá¯ááºáᬠá¡ááºáá¬áá±á·á áº172.28.0.1
â client tunnel interface á IP (áá®ážááá·áº)172.28.0.0
- IP á¥áááºááá¯ááºáá±á«ááºážáá¬áá¬á¡ááºáá¬áá±á·á Ạ(áá®ážááá·áº)
UDP áá»áááºáááºááŸá¯ á¡áááºááŸááºáá±áááœá±á· á¥áááºááá¯ááºáá±á«ááºážááẠáááºáááºáá±áááºááŒá áºááŒá®ážá ááá¯á·áá±á¬áº áá»ááºááœá¬ážáá«á áááºáá¶áá±á¬ááºážáááá·áºááẠ- client á IP- port ááẠáá°áá®áá±áá«áá áááºážááá¯á·ááẠááŒá±á¬ááºážáá²áá«áá áá»ááºááœá¬ážáááºááŒá áºáááºá
á¡áá¬á¡á¬ážáá¯á¶ážááᯠáá±á¬ááºááŒá±á¬ááºážááŒááºááŸáá·áºááẠá¡ááœááºáá°áá¯á¶ážáááºážáááºážááŸá¬ kernel modules áá»á¬ážááᯠunload áá¯ááºááŒááºážááŒá
áºááẠá modprobe -r fou ipip
á
á
áºááŸááºááŒá±á¬ááºážá¡áá±á¬ááºá¡áá¬ážááŒáááºáááá¯á¡ááºáá±á¬áºáááºážá áááá¯ááºážááá·áºáá¡áá»á¬ážááŒááºáá°ááá¯áẠIP ááŸáá·áº ááá¯á·ááºááᯠá¡ááŒá²áááááá² áááŒá¬ááááá·áºááŸááºážááááá¯ááºáá±á¬ ááá¯á·ááá¯áẠááŒá±á¬ááºážáá²ááá¯ááºáá±á¬ (NAT á¡áá»áá¯ážá¡á
á¬ážáá±á«áº áá°áááºá)á áá»ááºááŸááºáá¬ážáá»áŸáẠencap-dport
áá¬áá¬áááºááœááºá á¥áááºááá¯ááºáá±á«ááºážááẠá¡áá¯ááºááá¯ááºáá«á áá±ážáá¶áá±á«ááºáá®áá±á¬áá»áááºáááºááŸá¯ááááºáááºážááᯠáá°ááẠááá¯á¶áá±á¬ááºáá«á á€ááá
á¹á
ááœááºá ipipou áááºáááºáž áá°áá®ááá¯ááºáááºá ááá¯á·ááá¯áẠWireGuard ááŸáá·áº áááºážáá²á·ááá¯á·áá±á¬ á¡ááŒá¬ážáá°áá»á¬ážá ááá·áºá¡á¬áž áá°áá®ááá¯ááºáááºá
áááºááá¯á¡áá¯ááºáá¯ááºááá²
client (áá»á¬ážáá±á¬á¡á¬ážááŒáá·áº NAT ááá±á¬ááºááœááºááœááºááŸááá±á¬) ááẠá¥áááºááá¯ááºáá±á«ááºážáá
áºáᯠ(á¡áááºáá¯á¶á¥ááá¬ááœááºáá²á·ááá¯á·) ááá¯ááœáá·áºááŒá®áž áááºážááá±ážáááºááŸá á¥áááºááá¯ááºáá±á«ááºážááᯠconfigure áá¯ááºáááºá¡ááœáẠá¡áá±á¬ááºá¡áá¬ážá
áá
á
áºááŒááºážáááºáááºááᯠáá¬áá¬ááá¯á· áá±ážááá¯á·áááºá áááºáááºáá»á¬ážáá±á«áº áá°áááºá áááºážááẠá¡ááœáẠáááºáá±á·ááºá»áá
áºáᯠááŒá
áºááá¯ááºááẠ(áá¬áá¬ááẠá¡áá»á¬ážáá°ááŸá¬ IP-áá»áááºáááºááŸá¯ ááá¯á·ááºááᯠááŒááºááá¯ááºá
á±áááº) ááá¯á·ááá¯áẠáá¬áá¬á០áá¯á¶ážá
áœá²áá°ááᯠáá±á¬áºáá¯ááºááá¯ááºááá·áº áá±áá¬ááŒáá·áº ááŒá¯áá¯ááºááá¯ááºáááºá áá±áá¬ááẠááŸááºážááŸááºážáááºážáááºáž á
á¬áá¬ážááŒáá·áº ááá¯ážááŸááºážáá±á¬ á
áá¬ážááŸááºáá
áºáᯠááŒá
áºááá¯ááºááẠ( HTTP Basic Auth ááŸáá·áº ááŸááºááœá²áá¬ážáááºááᯠáááááááááº) ááá¯á·ááá¯áẠáá®ážááá·áºáá±á¬á·ááŒáá·áº áá±ážááá¯ážáá¬ážáá±á¬ á¡áá°ážáá®ááá¯ááºážáá±áᬠ( HTTP Digest Auth ááŸáá·áº áááºáá°áá±á¬ ááá¯á¡á¬ážáá±á¬ááºážááá·áº áá¯ááºáá±á¬ááºáá»ááºááᯠááŒáá·áºáá«á client_auth
áá¯ááºááœááº)á
áá¬áá¬ááœáẠ(á¡áá»á¬ážááŒááºáá° IP ááŸáá·áº áá áºáááºááŒááºáž) ipipou á áááºáá±á¬á¡áá«á áááºážááẠnfqueue áááºážá á®ááá¯ááºááœááºáá°á¡á¬áž áááºáá®ážááŒá®áž ááá¯á¡ááºáá±á¬ áááºáá±á·ááºá»áá»á¬ážááᯠáááºážááá¯á·ááŸáááá·áºááá·áºáá±áá¬ááá¯á· áá±ážááá¯á·ááá¯ááºááẠnfqueue áááºážá á®ááá¬ážááᯠáááºáá®ážáᬠnetfilter ááᯠá á®á ááºáá±ážáááº- packets áá»á¬ážááẠnfqueue áááºážá á®ááá¯á· áá»áááºáááºááŸá¯ááᯠá¡á ááŒá¯áá±áááºá ááŸáá·áº [áá®ážáá«áž] áá»ááºá¡á¬ážáá¯á¶ážááẠáá¬ážáá±á¬ááºáá° FOU áᶠááá¯ááºááá¯ááºááœá¬ážááŒáááºá
ááááá±ážáá°áá»á¬ážá¡ááœáẠnfqueue (ááá¯á·ááá¯áẠNetfilterQueue) ááẠnetfilter (nftables/iptables) ááᯠá¡áá¯á¶ážááŒá¯á á¡áá¯á¶ážááŒá¯áá°áá±áá¬ááá¯á· áááºážááŒá±á¬ááºážááŒá±á¬ááºážááŒá®áž áááºážááá¯á·ááᯠá¡áá¯á¶ážááŒá¯á áááºážááá¯á·ááᯠá á®áá¶áá±á¬ááºááœááºáá¬ááœáẠááœááºáááºáááºáá±á·ááºá»áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áá°áá±áá¬ááá¯á· áááºážááŒá±á¬ááºážááŒá±á¬ááºážáᬠáááºážááá¯á·ááᯠá¡áá¯á¶ážááŒá¯á áá¯ááºáá±á¬ááºááá¯ááºá á±ááá·áº á¡áá»á±á¬áºáááºáž kernel modules áá»á¬ážááᯠáááºááá¯á·áá¯ááºáá±á¬ááºááááºááᯠááááá°áá»á¬ážá¡ááœáẠá¡áá°ážá¡áá¬áá áºáá¯ááŒá áºáááºá primitive ááá¯áááºááŸá¬ áááºáá²ááœááºááŸááááº- ááŒááºáááºááẠ(áá»ááºááŸááºáá¬ážááá¯ááºáááº) ááŸáá·áº áááºážááᯠkernel ááá¯á· ááŒááºááá¯á·áá±ážáá«á ááá¯á·ááá¯áẠá áœáá·áºáá áºáá«á
á¡áá»áá¯á·áá±á¬ áááá¯ááááºážáááºážáá¬áá¬á
áá¬ážáá»á¬ážá¡ááœáẠnfqueue ááŸáá·áºá¡áá¯ááºáá¯ááºáááºá¡ááœáẠbinding áá»á¬ážááŸááááºá bash á¡ááœáẠáá
áºáá¯áá»áŸáááŸááá« (áá²á·á á¡á¶á·ááŒá
áá¬ááá¯ááºáá«) áá»áœááºáá±á¬áº python ááá¯áá¯á¶ážáá²á·ááááº- ipipou ááá¯á¡áá¯á¶ážááŒá¯áááº
á áœááºážáá±á¬ááºáááºááẠáá áá¯ážááááºááá«áá á€á¡áá¬á¡á¬áž á¡áá¯á¶ážááŒá¯ááŒááºážááŒáá·áº áááºááẠá¡áááºáááºáááá·áºáá±á¬á¡ááá·áºááœáẠpackets áá»á¬ážááŸáá·áº áá¯ááºáá±á¬ááºáááºá¡ááœáẠááá·áºááá¯ááºááá¯ááºáá¯áá¹ááááᯠáá»ááºááŒááºááœááºáá°á áœá¬ áá¯á¶áá±á¬áºááá¯ááºáááºá á¥ááá¬á á ááºážáááºáá±áá¬ááœáŸá²ááŒá±á¬ááºážááŒááºážáááá¯ááá¯áá±á¬áá»á¬ážááᯠáááºáá®ážáá«á ááá¯á·ááá¯áẠá á¶ááá¯ááºáá±á¬ á¡ááŒá¯á¡áá°ááŒáá·áº áá±áááœááºážááŸáá·áº á¡áá±ážááááºážáááºáá±á¬ááºááŸá¯áá»á¬ážááᯠááŸááºáááºááá¯ááºáá«á
Raw sockets áá»á¬ážááẠnfqueue ááŸáá·áº ááœá²áá¡áá¯ááºáá¯ááºáááºá á¥ááá¬á tunnel ááᯠconfigure ááŒá®ážááŒá®áž FOU ááẠááá¯áá»ááºáá±á¬ port ááœáẠáá¬ážáá±á¬ááºáá±ááá·áºá¡áá«á áá¯á¶ááŸááºáááºážá¡ááá¯ááºáž port áá áºáá¯áááºážá០packet áá áºáá¯ááᯠáá±ážááá¯á·ááá¯ááºááẠááá¯ááºáá« - á¡áá¯ááºáá»á¬ážáá±áá±á¬áºáááºážá ááá¯ááá¯á·áá±á¬ packet ááá¯áá¯ááºáá¯ááºáá¬ááœáẠá¡áááºážáááºááá¯á tinkering ááá¯á¡ááºáááºááŒá áºáá±á¬áºáááºáž raw socket ááá¯á¡áá¯á¶ážááŒá¯á áá»áááºážáá¯ááºáá¯ááºáá¬ážáá±á¬ packet ááᯠnetwork interface ááá¯á· ááá¯ááºááá¯ááºáá°á áá±ážááá¯á·ááá¯ááºáá«áááºá á€áááºááŸá¬ á á áºááŸááºááŒá±á¬ááºážá¡áá±á¬ááºá¡áá¬ážáá«áá±á¬ áááºáááºáá»á¬ážááᯠipipou ááœááºáááºáá®ážáá¯á¶ááŒá áºáááºá
ipipou ááẠáá»áááºáááºááŸá¯á០ááááá¯á¶áž packet áá»á¬ážááá¯áᬠáá¯ááºáá±á¬ááºááẠ(ááŸáá·áº connection ááá°áá±á¬ááºáá® áááºážá á®ááá¯á· áá±á«ááºááŒá¬ážááœá¬ážáá±á¬ áá á¹á ááºážáá»á¬áž) ááẠá áœááºážáá±á¬ááºááẠáá®ážáá«áž ááááá¯ááºáááºááá¯ááºáá«á
ipipou áá¬áá¬ááẠá á áºááŸááºáá±á¬ áááºáááºááᯠáááºáá¶áááŸááááºááŸáá·áº áááŒáá¯ááºáááºá á¥áááºáá áºáá¯á¡á¬áž áááºáá®ážááŒá®áž áá»áááºáááºááŸá¯ááŸá áá±á¬ááºáááºááœá² áááºáá±á·ááºá»á¡á¬ážáá¯á¶ážááᯠnfqueue ááá¯áá»á±á¬áºááŒááºáᬠkernel ááá¯áá»á±á¬áºááŒááºááŒááºážááŒáá·áº áá¯ááºáá±á¬ááºááŒá®ážááŒá áºáááºá áá»áááºáááºááŸá¯ áá»ááºááœááºáá«áá áááºážááẠá á áºááŸááºááŒá±á¬ááºážá¡áá±á¬ááºá¡áá¬ážááŒáá¬ážáá±á¬ áááºáá±á·ááºá»ááá¯ááºáá«áá áááºáááºáá»á¬ážáá±á«áº áá°áááºá áá±á¬ááºáá áºáá¯á ááááá¯á¶áž áááºáá±á·ááºá»ááᯠnfqueue áááºážá á®ááá¯á· áá±ážááá¯á·áááá·áºáááºá áááºážááẠá á áºááŸááºááŒá±á¬ááºážá¡áá±á¬ááºá¡áá¬ážááŒáá·áº áá¯ááºááá¯ážáá¬ážááá·áº áááºáá±á·ááºá»ááá¯ááºáá«áá áá±á¬ááºáá¯á¶ážááŸááºáááá±á¬ IP ááŸáá·áº áááá¯ááºážááá·áºááá¯á·ááºá០áááºážááᯠáá»á±á¬áºááœá¬ážááá¯ááºáááºá ááœáá·áº ááá¯á·ááá¯áẠááœáŸáá·áºáá áºáá«á á¡áááºá á á áºááŸááºááŒá±á¬ááºážáááºáá±ááŒáá¬ážáá±á¬ áááºáááºááẠIP ááŸáá·áº ááá¯á·ááºá¡áá áºááŸáá¬áá«á áááºážááá¯á·ááá¯á¡áá¯á¶ážááŒá¯áááºá¡ááœáẠá¥áááºááá¯ááºáá±á«ááºážááᯠááŒááºáááºááŒááºáááºáá¬ážáááºá
áá¬áá¬áẠIPIP-over-FOU ááœáẠNAT ááŸáá·áº á¡áá¯ááºáá¯ááºáá±á¬á¡áá« áá±á¬ááºáááºááŒá¿áá¬áá
áºáá¯ááŸáááẠ- UDP ááœáẠáá°áá®áá±á¬ IP ááŒáá·áº áá¯ááºááá¯ážáá¬ážáá±á¬ IPIP á¥áááºááŸá
áºáá¯ááᯠáááºáá®ážááẠáááŒá
áºááá¯ááºáá±á¬ááŒá±á¬áá·áºá FOU ááŸáá·áº IPIP module áá»á¬ážááẠáá
áºáá¯ááŸáá·áºáá
áºáᯠá¡áá±á¬áºáá±áž áá®ážááŒá¬ážááŒá
áºáá±áá±á¬ááŒá±á¬áá·áº ááŒá
áºáááºá á¡á²áá«ááœá±á áá°áá®áá±á¬ á¡áá»á¬ážáá°ááŸá¬ IP áá±á¬ááºááœááºááŸá client áá
áºá
á¯á¶ááẠá€áááºážááŒáá·áº áá°áá®áá±á¬ áá¬áá¬ááá¯á· áá
áºááŒáá¯ááºááẠáá»áááºáááºááá¯ááºááẠááá¯ááºáá«á á¡áá¬ááá¹ááœá¬,
áá¬ááŒá áºááá¯á·áá²ááá¯áá±á¬á· áá»áááºáááºááŸá¯á¡ááœááºážááŸá áááºáááºá¡á¬ážáá¯á¶ážááᯠáááºááŸááºáááá¯ážáá¬ážáá«á á€ááá¯ážááŸááºážáá±á¬áá¬ááœááºááŸá¯ááŸá¬ MITM ááœáẠá¡á¬ážáááºážááá¯ááºáááºá ááá¯á·ááŒá±á¬áá·áº áááºážááŒá±á¬ááºážááᯠáá¬ážáá±á¬ááºááá¯ááºáá±á¬ client ááŸáá·áº áá¬áá¬ááŒá¬ážááœáẠáá®ááááºáá áºáŠážááŸááá±áá«áá áááºážááᯠáááºážááŒá±á¬ááºážááŸááºáá±á«áºáá±á¬ááºá¡á±á¬áẠááááºážáá»á±á¬ááºážááá¯ááºááẠá¡ááŒá¬ážááááºá á¬áá áºáá¯ááŸáá·áº ááá¯á¶ááŒááºááá±á¬ host áá áºáá¯á០á¥áááºáá áºáᯠáááºáá®ážáá«á
á¡ááœá¬ážá¡áá¬á¡ááŒá±á¬ááºá¡áá»á¬ážááᯠá¡áááºáááá¯ááœáẠáá¬ážáá²á·á áẠáááºážááᯠáááºáá²á·ááá¯á· ááŒá¯ááŒááºááááºááᯠá¡ááŒá¶á¥á¬ááºáá»á¬áž ááŸááá«áá ááŒá±á¬ááá¯ááẠáááœáá·áºáá¯ááºáá«ááŸáá·áºá
á áá¬ážáá ááºá UDP ááœáẠencapsulation ááẠá¡ááœááºáá±á¬ááºážááœááºááŒá±á¬ááºáž áááºáá±ááŒáá²á·áááºá IP á encapsulation ááŸáá·áº ááŸáá¯ááºážááŸááºáá«á UDP header ááá±á¬ááºáááºáá±á«ááºážá á®ážááẠááá¯áá±áá±á¬áºáááºáž ááá¯ááá¯áááºááŒáááºááŒá®áž áááŒá¬áá ááá¯ááŒááºáá«áááºá á¡ááºáá¬áááºáá±á«áºááŸá host á¡áá»á¬ážá á¯ááẠáá°ááŒáá¯ááºá¡áá»á¬ážáá¯á¶áž áááá¯ááá¯áá±á¬áá¯á¶ážáá¯ááŒá áºááá·áº TCPá UDPá ICMP ááá¯á·ááŸáá·áºáᬠáá±á¬ááºážááœááºá áœá¬á¡áá¯ááºáá¯ááºáá±á¬ááŒá±á¬áá·áºááŒá áºáááºá ááŒááºáá¬áááºáá¬áá±á¬á¡ááá¯ááºážááẠá¡ááŒá¬ážá¡áá¬á¡á¬ážáá¯á¶ážááᯠá áœáá·áºáá áºááá¯ááºááẠááá¯á·ááá¯áẠáááºážááᯠá€áá¯á¶ážáá»áá¯ážá¡ááœááºáᬠá¡áá±á¬ááºážáá¯á¶ážááŒá áºá¡á±á¬áẠááŒá¯áá¯ááºáá¬ážáá±á¬ááŒá±á¬áá·áº áááºážááᯠááá¯ááá¯ááŸá±ážááœá±ážá áœá¬ áá¯ááºáá±á¬ááºááá¯ááºáááºá
á¥ááá¬á¡á¬ážááŒáá·áºá HTTP/3 ááá¯á¡ááŒá±áá¶áá¬ážááá·áº QUICK ááẠUDP áááááºááœááºááá¯ááºáá² IP áááááºááœááºááá¯ááºáá² á¡áááºááŒá±á¬áá·áºáááºážá
áá±á¬ááºážááŒá®á áá¯á¶áá±á¬ááºáá±á¬á áá¬ážáá¯á¶ážáá»á¬ážá "á¡á á áºá¡ááŸááºááá¹áá¬" ááœááºáááºážáááºáááºááá¯á·á¡áá¯ááºáá¯ááºáááºááá¯ááŒáá·áºááŸá¯áááºá¡áá»áááºááŒá áºáááºá
ááá¯ááºááœá²
áááºááœá±á·ááá¹áá¬ááᯠá¡áá¯áá°ááá¯á· áá¯á¶ážáááºá iperf3
. áááºááœá±á·ááŸáá·áº áá®ážá
ááºááŸá¯á¡ááá¯ááºážá¡áá¬á¡áá áááºážááẠMinecraft ááœáẠáááºááœá±á·ááá¹áá¬ááᯠá¡áá¯áá°ááŒááºážááŸáá·áº á¡áá®ážá
ááºáá¯á¶ážáá°áá®áá±á¬áºáááºáž ááá¯ááœáẠáááºážááẠáá¯ááºáá±á¬ááºáááºááŒá
áºáááºá
ááŒáá¯ááºááœá²ááœááºáá«áááºáá°áá»á¬áž
- á¡ááá¯ážá¡áá¬áž áááºááá»ááºáááº
- á€áá±á¬ááºážáá«ážááá°áá²áá±á¬ááºážááẠipipou ááŒá áºáááºá
- á á áºááŸááºááŒá±á¬ááºážá¡áá±á¬ááºá¡áá¬ážááŒááŒááºážááŒáá·áº OpenVPN áá±á¬áºáááºážá áá¯ááºááŸááºááŒááºážáááŸááá«á
- á¡á¬ážáá¯á¶ážáá«áááºáá±á¬áá¯ááºááœáẠOpenVPN
- PresharedKey ááá«áá² WireGuardá MTU=1440 (IPv4 ááŸáá¬áá»áŸááº)
geek áá»á¬ážá¡ááœááºáááºážááá¬ááá¯ááºáá¬áá±áá¬
áááºááá
áºáá»á¬ážááᯠá¡á±á¬ááºáá« command áá»á¬ážááŒáá·áº áá°áááº-
áá±á¬ááºáááºá¡áá±á«áº-
UDP ááá¯
CPULOG=NAME.udp.cpu.log; sar 10 6 >"$CPULOG" & iperf3 -c SERVER_IP -4 -t 60 -f m -i 10 -B LOCAL_IP -P 2 -u -b 12M; tail -1 "$CPULOG"
# ÐЎе "-b 12M" ÑÑП пÑПпÑÑÐºÐœÐ°Ñ ÑпПÑПбМПÑÑÑ ÐŸÑМПвМПгП каМала, ЎелÑÐœÐœÐ°Ñ ÐœÐ° ÑОÑлП пПÑПкПв "-P", ÑÑÐŸÐ±Ñ Ð»ÐžÑМОе пакеÑÑ ÐœÐµ плПЎОÑÑ Ðž Ме пПÑÑОÑÑ Ð¿ÑПОзвПЎОÑелÑМПÑÑÑ.
ááẠTCP
CPULOG=NAME.tcp.cpu.log; sar 10 6 >"$CPULOG" & iperf3 -c SERVER_IP -4 -t 60 -f m -i 10 -B LOCAL_IP -P 2; tail -1 "$CPULOG"
ICMP áá¯á¶á·ááŒááºááŸá¯
ping -c 10 SERVER_IP | tail -1
áá¬áá¬áá±á«áºááœáẠ(Client ááŸáá·áº áááŒáá¯ááºááẠáá¯ááºáá±á¬ááºáááº)
UDP ááá¯
CPULOG=NAME.udp.cpu.log; sar 10 6 >"$CPULOG" & iperf3 -s -i 10 -f m -1; tail -1 "$CPULOG"
ááẠTCP
CPULOG=NAME.tcp.cpu.log; sar 10 6 >"$CPULOG" & iperf3 -s -i 10 -f m -1; tail -1 "$CPULOG"
á¥áááºááá¯ááºáá±á«ááºážááœá²á·á ááºážááŸá¯
ipipou
áá¬áá¬
/etc/ipipou/server.conf
:
server
number 0
fou-dev eth0
fou-local-port 10000
tunl-ip 172.28.0.0
auth-remote-pubkey-b64 eQYNhD/Xwl6Zaq+z3QXDzNI77x8CEKqY1n5kt9bKeEI=
auth-secret topsecret
auth-lifetime 3600
reply-on-auth-ok
verb 3
systemctl start ipipou@server
áá±á¬ááºáááº
/etc/ipipou/client.conf
:
client
number 0
fou-local @eth0
fou-remote SERVER_IP:10000
tunl-ip 172.28.0.1
# pubkey of auth-key-b64: eQYNhD/Xwl6Zaq+z3QXDzNI77x8CEKqY1n5kt9bKeEI=
auth-key-b64 RuBZkT23na2Q4QH1xfmZCfRgSgPt5s362UPAFbecTso=
auth-secret topsecret
keepalive 27
verb 3
systemctl start ipipou@client
openvpn (á
á
áºááŸááºááŒá±á¬ááºážá¡áá±á¬ááºá¡áá¬ážááŒáá·áº áá¯ááºááŸááºááŒááºážáááŸááá«)
áá¬áá¬
openvpn --genkey --secret ovpn.key # ÐаÑеЌ МаЎП пеÑеЎаÑÑ ovpn.key клОеМÑÑ
openvpn --dev tun1 --local SERVER_IP --port 2000 --ifconfig 172.16.17.1 172.16.17.2 --cipher none --auth SHA1 --ncp-disable --secret ovpn.key
áá±á¬ááºáááº
openvpn --dev tun1 --local LOCAL_IP --remote SERVER_IP --port 2000 --ifconfig 172.16.17.2 172.16.17.1 --cipher none --auth SHA1 --ncp-disable --secret ovpn.key
openvpn (á
á¬ááŸááºá
áá
áºá á
á
áºááŸááºááŒá±á¬ááºážá¡áá±á¬ááºá¡áá¬ážááŒáá·áº UDP ááŸáááá·áºá áá»áŸá±á¬áºááá·áºáá¬ážááá·áºá¡ááá¯ááºáž á¡áá¬á¡á¬ážáá¯á¶áž)
á¡áá¯á¶ážááŒá¯ááẠá
á®á
ááºáá¬ážáááºá
áááºážáá°áž
áá¬áá¬
/etc/wireguard/server.conf
:
[Interface]
Address=172.31.192.1/18
ListenPort=51820
PrivateKey=aMAG31yjt85zsVC5hn5jMskuFdF8C/LFSRYnhRGSKUQ=
MTU=1440
[Peer]
PublicKey=LyhhEIjVQPVmr/sJNdSRqTjxibsfDZ15sDuhvAQ3hVM=
AllowedIPs=172.31.192.2/32
systemctl start wg-quick@server
áá±á¬ááºáááº
/etc/wireguard/client.conf
:
[Interface]
Address=172.31.192.2/18
PrivateKey=uCluH7q2Hip5lLRSsVHc38nGKUGpZIUwGO/7k+6Ye3I=
MTU=1440
[Peer]
PublicKey=DjJRmGvhl6DWuSf1fldxNRBvqa701c0Sc7OpRr4gPXk=
AllowedIPs=172.31.192.1/32
Endpoint=SERVER_IP:51820
systemctl start wg-quick@client
ááááºáá»á¬ážááá¯
á
áá¯á
áœááºáá±á¬ áá¯ááºááá¯ážáá±á¬ ááá¹ááá¬
Server CPU load á ááááºááᯠááœáŸááºááŒáᬠááá¯ááºáá°áž ááá¯áá±á¬á·... ááá¯áá±áá¬ááœáẠáááºáááºáá±áá±á¬ á¡ááŒá¬ážáááºáá±á¬ááºááŸá¯áá»á¬ážá
áœá¬ááŸáááŒá®áž áá
áºáá«áá
áºáá¶ááœáẠáááºážááá¯á·ááẠá¡áááºážá¡ááŒá
áºáá»á¬ážááᯠá
á¬ážáá¯á¶ážáááº-
proto bandwidth[Mbps] CPU_idle_client[%] CPU_idle_server[%]
# 20 Mbps каМал Ñ ÐŒÐžÐºÑПкПЌпÑÑÑеÑа (4 core) ЎП VPS (1 core) ÑеÑез ÐÑлаМÑОкÑ
# pure
UDP 20.4 99.80 93.34
TCP 19.2 99.67 96.68
ICMP latency min/avg/max/mdev = 198.838/198.997/199.360/0.372 ms
# ipipou
UDP 19.8 98.45 99.47
TCP 18.8 99.56 96.75
ICMP latency min/avg/max/mdev = 199.562/208.919/220.222/7.905 ms
# openvpn0 (auth only, no encryption)
UDP 19.3 99.89 72.90
TCP 16.1 95.95 88.46
ICMP latency min/avg/max/mdev = 191.631/193.538/198.724/2.520 ms
# openvpn (full encryption, auth, etc)
UDP 19.6 99.75 72.35
TCP 17.0 94.47 87.99
ICMP latency min/avg/max/mdev = 202.168/202.377/202.900/0.451 ms
# wireguard
UDP 19.3 91.60 94.78
TCP 17.2 96.76 92.87
ICMP latency min/avg/max/mdev = 217.925/223.601/230.696/3.266 ms
## ПкПлП-1Gbps каМал ÐŒÐµÐ¶ÐŽÑ VPS ÐвÑÐŸÐ¿Ñ Ðž СКР(1 core)
# pure
UDP 729 73.40 39.93
TCP 363 96.95 90.40
ICMP latency min/avg/max/mdev = 106.867/106.994/107.126/0.066 ms
# ipipou
UDP 714 63.10 23.53
TCP 431 95.65 64.56
ICMP latency min/avg/max/mdev = 107.444/107.523/107.648/0.058 ms
# openvpn0 (auth only, no encryption)
UDP 193 17.51 1.62
TCP 12 95.45 92.80
ICMP latency min/avg/max/mdev = 107.191/107.334/107.559/0.116 ms
# wireguard
UDP 629 22.26 2.62
TCP 198 77.40 55.98
ICMP latency min/avg/max/mdev = 107.616/107.788/108.038/0.128 ms
20 Mbps áá»ááºáááº
á¡áá±á¬ááºážááŒáẠ1 Gbps ááŸá¯ááºážááŒáá·áº áá»ááºáááº
ááá
á¹á
ááá¯ááºážááœááºá ipipou ááẠá¡ááŒá±áá¶áá»ááºáááºááŸáá·áº á
áœááºážáá±á¬ááºáááºá¡áá±á¬áºá¡ááẠáá®ážáááºáá±áá«áááºá
áá¯ááºááá¬ážáá±á¬ openvpn ááá¯ááºáá±á«ááºážááẠááŒá áºáááºááŸá áºáá¯á áá¯á¶ážááœáẠá¡áá±á¬áºáá±áž áá°ážáá°ážááŒá¬ážááŒá¬áž áá¯ááºáá±á¬ááºáááºá
áááºáá°áááᯠá ááºážáá¯á¶ážááŒáá·áºáááºááá¯áá«á áá¯á¶á·ááŒááºáá»ááºááŒá¬ážááááºááŸá¬ á áááºáááºáá á¬ážááŸááááºááŒá áºáááºá
IPv6 ááŸáá·áº NetPrickle ááẠáá»áœááºá¯ááºááá¯á·ááŸáá·áºá¡áá° ááŸááá«á
á±á
source: www.habr.com