ipipou: ืžืขืจ ื•ื•ื™ ื‘ืœื•ื™ื– ืึทืŸ ืึทื ืขื ืงืจื™ืคึผื˜ื™ื“ ื˜ื•ื ืขืœ

ื•ื•ืึธืก ื–ืขื ืขืŸ ืžื™ืจ ื–ืึธื’ืŸ ืฆื• ื“ื™ ื’ืึธื˜ ืคื•ืŸ IPv6?

ipipou: ืžืขืจ ื•ื•ื™ ื‘ืœื•ื™ื– ืึทืŸ ืึทื ืขื ืงืจื™ืคึผื˜ื™ื“ ื˜ื•ื ืขืœ
ืึทื– ืก ืจืขื›ื˜, ืžื™ืจ ื•ื•ืขืœืŸ ื–ืึธื’ืŸ ื“ื™ ื–ืขืœื‘ืข ืฆื• ื“ื™ ื’ืึธื˜ ืคื•ืŸ ืขื ืงืจื™ืคึผืฉืึทืŸ ื”ื™ื™ึทื ื˜.

ื“ืึธ ืžื™ืจ ื•ื•ืขืœืŸ ืจืขื“ืŸ ื•ื•ืขื’ืŸ ืึทืŸ ืึทื ืขื ืงืจื™ืคึผื˜ื™ื“ IPv4 ื˜ื•ื ืขืœ, ืึธื‘ืขืจ ื ื™ืฉื˜ ื•ื•ืขื’ืŸ ืึท "ื•ื•ืึทืจืขื ืœืึธืžืคึผ", ืึธื‘ืขืจ ื•ื•ืขื’ืŸ ืึท ืžืึธื“ืขืจืŸ "ื’ืขืคื™ืจื˜". ืื•ืŸ ืขืก ื–ืขื ืขืŸ ืื•ื™ืš ืจื•ื™ ืกืึทืงืึทืฅ ืคืœืึทืฉื™ื ื’ ื“ืึธ, ืื•ืŸ ืึทืจื‘ืขื˜ ืื™ื– ืึทื ื“ืขืจื•ื•ื™ื™ ืžื™ื˜ ืคึผืึทืงื™ืฅ ืื™ืŸ ื‘ืึทื ื™ืฆืขืจ ืคึผืœืึทืฅ.

ืขืก ื–ืขื ืขืŸ ืขืŸ ื˜ืึทื ืึทืœื™ื ื’ ืคึผืจืึธื˜ืึธืงืึธืœืก ืคึฟืึทืจ ื™ืขื“ืขืจ ื˜ืขื ืื•ืŸ ืงืึธืœื™ืจ:

  • ืžืึธื“ืขืจืŸ, ืžืึธื“ืขืจืŸ, ื™ื•ื’ื ื˜ WireGuard
  • ืžื•ืœื˜ื™ืคื•ื ืงื˜ื™ืึธื ืึทืœ, ื•ื•ื™ ืฉื•ื•ื™ื™ืฆืขืจ ื ื™ื™ื•ื•ื–, OpenVPN ืื•ืŸ SSH
  • ืึทืœื˜ ืื•ืŸ ื ื™ื˜ ื‘ื™ื™ื– GRE
  • ื“ื™ ืžืขืจืกื˜ ืคึผืฉื•ื˜, ืฉื ืขืœ, ื’ืึธืจ ืึทื ืขื ืงืจื™ืคึผื˜ื™ื“ IPIP
  • ืึทืงื˜ื™ื•ื•ืœื™ ื“ืขื•ื•ืขืœืึธืคึผื™ื ื’ GENEVE
  • ืคื™ืœืข ืื ื“ืขืจืข.

ืื‘ืขืจ ืื™ืš ื‘ื™ืŸ ืึท ืคึผืจืึธื’ืจืึทืžื™ืกื˜, ืึทื–ื•ื™ ืื™ืš ื•ื•ืขืœ ืคืึทืจื’ืจืขืกืขืจืŸ N ื‘ืœื•ื™ื– ืžื™ื˜ ืึท ื‘ืจืึธื›ืฆืึธืœ, ืื•ืŸ ืœืึธื–ืŸ ื“ื™ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืคื•ืŸ ืคืึทืงื˜ื™ืฉ ืคึผืจืึธื˜ืึธืงืึธืœืก ืฆื• ืงืึธืžืžืขืจืกืึทื ื˜ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก.

ืื™ืŸ ืื™ื™ื ืขื ื ืืš ื ื™ืฉื˜ ื’ืขื‘ื•ื™ืจืŸ ื“ืขืจ ืคึผืœืึทืŸื•ื•ืึธืก ืื™ืš ื˜ืึธืŸ ืื™ืฆื˜ ืื™ื– ืฆื• ื“ืขืจื’ืจื™ื™ื›ืŸ ื”ืึธืกืฅ ื”ื™ื ื˜ืขืจ NAT ืคึฟื•ืŸ ื“ื™ ืึทืจื•ื™ืก. ื ื™ืฆืŸ ืคึผืจืึธื˜ืึธืงืึธืœืก ืžื™ื˜ ื“ืขืจื•ื•ืึทืงืกืŸ ืงืจื™ืคึผื˜ืึธื’ืจืึทืคื™ ืคึฟืึทืจ ื“ืขื, ืื™ืš ืงืขืŸ ื ื™ืฉื˜ ื˜ืจื™ื™ืกืœืขืŸ ื“ื™ ื’ืขืคื™ืœ ืึทื– ืขืก ืื™ื– ื•ื•ื™ ืฆื• ื“ืจื™ื™ืขืŸ ืคื™ื™ื’ืึทืœื– ืคื•ืŸ ืึท ืงืึทื ืึธืŸ. ื•ื•ื™ื™ึทืœ ื“ืขืจ ื˜ื•ื ืขืœ ืื™ื– ืžืขืจืกื˜ื ืก ื’ืขื ื™ืฆื˜ ื‘ืœื•ื™ื– ืฆื• ืฉื˜ื•ืจื›ืขืŸ ื”ืึธืœืขืก ืื™ืŸ NAT-e, ื™ื ืขืจืœืขืš ืคืึทืจืงืขืจ ืื™ื– ื™ื•ื–ืฉืึทื•ื•ืึทืœื™ ืื•ื™ืš ื™ื ืงืจื™ืคึผื˜ื™ื“, ืึธื‘ืขืจ ื–ื™ื™ ื ืึธืš ื“ืขืจื˜ืจื™ื ืงืขืŸ ืื™ืŸ ื”ื˜ื˜ืคึผืก.

ื‘ืฉืขืช ืจื™ืกืขืจื˜ืฉื™ื ื’ ืคืึทืจืฉื™ื“ืŸ ื˜ืึทื ืึทืœื™ื ื’ ืคึผืจืึธื˜ืึธืงืึธืœืก, ืžื™ื™ืŸ ื™ื ืขืจ ืคึผืขืจืคืขืงืฉืึทื ื™ืกื˜ ืก ื•ืคืžืขืจืงื–ืึทืžืงื™ื™ื˜ ืื™ื– ื’ืขืฆื•ื™ื’ืŸ ืฆื• IPIP ืื™ื‘ืขืจ ืื•ืŸ ืื™ื‘ืขืจ ื•ื•ื™ื“ืขืจ ืจืขื›ื˜ ืฆื• ื–ื™ื™ืŸ ืžื™ื ื™ืžืึทืœ ืึธื•ื•ื•ืขืจื›ืขื“. ืึธื‘ืขืจ ืขืก ื”ืื˜ ืื™ื™ืŸ ืื•ืŸ ืึท ื”ืึทืœื‘ ื‘ืึทื˜ื™ื™ึทื˜ื™ืง ื“ื™ืกืึทื“ื•ื•ืึทื ื˜ื™ื“ื–ืฉื™ื– ืคึฟืึทืจ ืžื™ื™ืŸ ื˜ืึทืกืงืก:

  • ืขืก ืจื™ืงื•ื•ื™ื™ืขืจื– ืขืคื ื˜ืœืขืš IPs ืื•ื™ืฃ ื‘ื™ื™ื“ืข ื–ื™ื™ื˜ืŸ,
  • ืื•ืŸ ืงื™ื™ืŸ ืึธื˜ืขื ื˜ืึทืงื™ื™ืฉืึทืŸ ืคึฟืึทืจ ืื™ืจ.

ื“ืขืจื™ื‘ืข ืจ ื”ื ื˜ ืžืข ืŸ ื“ืข ื ืคืขืจืคืขืงืฆื™ืื ื™ืกื˜ ืŸ ืฆื•ืจื™ ืง ื’ืขื˜ืจื™ื‘ ืŸ ืื™ ืŸ ื“ืข ืจ ืคื™ื ืฆื˜ืขืจืข ืจ ืฐื™ื ืง ืœ ืคื• ืŸ ืฉืืจื‘ืŸ , ืื“ืข ืจ ืฐื ื• ืข ืจ ื–ื™ืฆ ื˜ ื“ืืจื˜ .

ืื•ืŸ ื“ืขืžืึธืœื˜ ืื™ื™ืŸ ื˜ืึธื’, ื‘ืฉืขืช ืœื™ื™ืขื ืขืŸ ืึทืจื˜ื™ืงืœืขืŸ ืื•ื™ืฃ ื ืึทื˜ื™ื•ื•ืขืœื™ ื’ืขืฉื˜ื™ืฆื˜ ื˜ืึทื ืึทืœื– ืื™ืŸ ืœื™ื ื•ืงืก ืื™ืš ื’ืขืงื•ืžืขืŸ ืึทืจื™ื‘ืขืจ FOU (Foo-over-UDP), ื“.ื”. ื•ื•ืขืœื›ืขืจ, ืืœื ื’ืขื•ื•ื™ืงืœื˜ ืื™ืŸ UDP. ื‘ื™ื– ืื™ืฆื˜, ื‘ืœื•ื™ื– IPIP ืื•ืŸ GUE (ื’ืขื ืขืจื™ืง UDP ืขื ืงืึทืคึผืกื•ืœืึทื˜ื™ืึธืŸ) ื–ืขื ืขืŸ ื’ืขืฉื˜ื™ืฆื˜.

โ€• ืึธื˜ ืื™ื– ื“ืขืจ ื–ื™ืœื‘ืขืจื ืขืจ ืงื•ื™ืœ! ื ืคึผืฉื•ื˜ IPIP ืื™ื– ื’ืขื ื•ื’ ืคึฟืึทืจ ืžื™ืจ. โ€ - ืื™ืš ื”ืื‘ ื’ืขื˜ืจืื›ื˜.

ืื™ืŸ ืคืึทืงื˜, ื“ื™ ืงื•ื™ืœ ืื™ื– ื’ืขื•ื•ืขืŸ ื ื™ื˜ ื’ืึธืจ ื–ื™ืœื‘ืขืจ. ืขื ืงืึทืคึผืกื•ืœืึทื˜ื™ืึธืŸ ืื™ืŸ UDP ืกืึทืœื•ื•ื– ื“ืขืจ ืขืจืฉื˜ืขืจ ืคึผืจืึธื‘ืœืขื - ืื™ืจ ืงืขื ืขืŸ ืคืึทืจื‘ื™ื ื“ืŸ ืฆื• ืงืœื™ื™ืึทื ืฅ ื”ื™ื ื˜ืขืจ NAT ืคึฟื•ืŸ ื“ื™ ืึทืจื•ื™ืก ื ื™ืฆืŸ ืึท ืคืึทืจ-ื’ืขื’ืจื™ื ื“ืขื˜ ืคึฟืึทืจื‘ื™ื ื“ื•ื ื’, ืึธื‘ืขืจ ื“ืึธ ื”ืขืœืคื˜ ืคื•ืŸ ื“ื™ ื•ื•ื™ื™ึทื˜ืขืจ ืฉื˜ืขืจื•ื ื’ ืคื•ืŸ IPIP ื‘ืœืึทืกืึทืžื– ืื™ืŸ ืึท ื ื™ื™ึทืข ืœื™ื›ื˜ - ื•ื•ืขืจ ืขืก ื™ื– ืคึฟื•ืŸ ืึท ืคึผืจื™ื•ื•ืึทื˜ ื ืขืฅ ืงืขื ืขืŸ ื‘ืึทื”ืึทืœื˜ืŸ ื”ื™ื ื˜ืขืจ ื“ื™ ืงืขื ื˜ื™ืง. ืฆื™ื‘ื•ืจ IP ืื•ืŸ ืงืœื™ืขื ื˜ ืคึผืึธืจื˜ (ืื™ืŸ ืจื™ื™ืŸ IPIP ื“ืขื ืคึผืจืึธื‘ืœืขื ื˜ื•ื˜ ื ื™ืฉื˜ ืขืงืกื™ืกื˜ื™ืจืŸ).

ืฆื• ืกืึธืœื•ื•ืข ื“ืขื ืื™ื™ืŸ ืื•ืŸ ืึท ื”ืึทืœื‘ ืคึผืจืึธื‘ืœืขื, ื“ื™ ื ื•ืฆืŸ ืื™ื– ื’ืขื‘ื•ื™ืจืŸ ipipou. ืขืก ื™ืžืคึผืœืึทืžืึทื ืฅ ืึท ื”ื™ื™ื-ื’ืขืžืื›ื˜ ืžืขืงืึทื ื™ื–ืึทื ืคึฟืึทืจ ืึธื˜ืขื ื˜ืึทืงื™ื™ื˜ื™ื ื’ ืึท ื•ื•ื™ื™ึทื˜ ื‘ืึทืœืขื‘ืึธืก, ืึธืŸ ื“ื™ืกืจืึทืคึผื˜ื™ื ื’ ื“ื™ ืึธืคึผืขืจืึทืฆื™ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืงืขืจืŸ FOU, ื•ื•ืึธืก ื•ื•ืขื˜ ื’ืขืฉื•ื•ื™ื ื“ ืื•ืŸ ื™ืคื™ืฉืึทื ื˜ืœื™ ืคึผืจืึธืฆืขืก ืคึผืึทืงื™ืฅ ืื™ืŸ ืงืขืจืŸ ืคึผืœืึทืฅ.

ืžื™ืจ ื“ืึทืจืคึฟืŸ ื ื™ื˜ ื“ื™ื™ืŸ ืฉืจื™ืคื˜!

ื’ื•ื˜, ืื•ื™ื‘ ืื™ืจ ื•ื•ื™ืกืŸ ื“ื™ ืขืคื ื˜ืœืขืš ืคึผืึธืจื˜ ืื•ืŸ IP ืคื•ืŸ ื“ืขื ืงืœื™ืขื ื˜ (ืœืžืฉืœ, ืึทืœืขืžืขืŸ ื”ื™ื ื˜ืขืจ ืขืก ื’ื™ื™ื˜ ื ื™ืฉื˜ ืขืจื’ืขืฅ, NAT ืคืจื•ื•ื•ื˜ ืฆื• ืžืึทืคึผืข ืคึผืึธืจืฅ 1-ืื™ืŸ-1), ืื™ืจ ืงืขื ืขืŸ ืžืึทื›ืŸ ืึทืŸ IPIP-ืื™ื‘ืขืจ-FOU ื˜ื•ื ืขืœ ืžื™ื˜ ื“ื™ ื•ื•ื™ื™ึทื˜ืขืจื“ื™ืง ืงืึทืžืึทื ื“ื–, ืึธืŸ ืงื™ื™ืŸ ืกืงืจื™ืคึผืก.

ืื•ื™ืฃ ืกืขืจื•ื•ืขืจ:

# ะŸะพะดะณั€ัƒะทะธั‚ัŒ ะผะพะดัƒะปัŒ ัะดั€ะฐ 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 - ืฆื™ื‘ื•ืจ IP ืคื•ืŸ ื“ืขื ืงืœื™ืขื ื˜
  • 192.168.0.2 - ืงืœื™ืขื ื˜ IP ืึทืกื™ื™ื ื“ ืฆื• ืฆื•ื‘ื™ื ื“ eth0
  • 10001 - ืœืืงืืœืข ืงืœื™ืขื ื˜ ืคึผืึธืจื˜ ืคึฟืึทืจ FOU
  • 20001 - ืฆื™ื‘ื•ืจ ืงืœื™ืขื ื˜ ืคึผืึธืจื˜ ืคึฟืึทืจ FOU
  • 10000 - ืฆื™ื‘ื•ืจ ืกืขืจื•ื•ืขืจ ืคึผืึธืจื˜ ืคึฟืึทืจ FOU
  • encap-csum - ืึธืคึผืฆื™ืข ืฆื• ืœื™ื™ื’ืŸ ืึท UDP ื˜ืฉืขืงืงืกื•ื ืฆื• ืขื ืงืึทืคึผืกืึทืœื™ื™ื˜ื™ื“ UDP ืคึผืึทืงื™ืฅ; ืงืขื ืขืŸ ื–ื™ื™ืŸ ืจื™ืคึผืœื™ื™ืกื˜ ื“ื•ืจืš noencap-csum, ื ื™ื˜ ืฆื• ื“ืขืจืžืึธื ืขืŸ, ืึธืจื ื˜ืœืขื›ืงื™ื™ึทื˜ ืื™ื– ืฉื•ื™ืŸ ืงืึทื ื˜ืจืึธื•ืœื“ ื“ื•ืจืš ื“ื™ ื•ื™ืกื•ื•ื™ื™ื ื™ืงืกื˜ ืขื ืงืึทืคึผืกื•ืœืึทื˜ื™ืึธืŸ ืฉื™ื›ื˜ืข (ื‘ืฉืขืช ื“ื™ ืคึผืึทืงืึทื˜ ืื™ื– ื™ืŸ ื“ื™ ื˜ื•ื ืขืœ)
  • eth0 - ื”ื™ื’ืข ืฆื•ื‘ื™ื ื“ ืฆื• ื•ื•ืึธืก ื“ื™ ื™ืคึผื™ืคึผ ื˜ื•ื ืขืœ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขื‘ื•ื ื“ืŸ
  • 172.28.0.1 - IP ืคื•ืŸ ื“ื™ ืงืœื™ืขื ื˜ ื˜ื•ื ืขืœ ืฆื•ื‘ื™ื ื“ (ืคึผืจื™ื•ื•ืึทื˜)
  • 172.28.0.0 - IP ื˜ื•ื ืขืœ ืกืขืจื•ื•ืขืจ ืฆื•ื‘ื™ื ื“ (ืคึผืจื™ื•ื•ืึทื˜)

ื•ื•ื™ ืœืึทื ื’ ื•ื•ื™ ื“ื™ UDP ืคึฟืึทืจื‘ื™ื ื“ื•ื ื’ ืื™ื– ืœืขื‘ืขื“ื™ืง, ื“ืขืจ ื˜ื•ื ืขืœ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืื™ืŸ ืืจื‘ืขื˜ืŸ ืกื“ืจ, ืึธื‘ืขืจ ืื•ื™ื‘ ืขืก ื‘ืจื™ื™ืงืก, ืื™ืจ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืžืึทื–ืœื“ื™ืง - ืื•ื™ื‘ ื“ืขืจ ืงืœื™ืขื ื˜ ืก IP: ืคึผืึธืจื˜ ื‘ืœื™ื™ื‘ื˜ ื“ื™ ื–ืขืœื‘ืข - ืขืก ื•ื•ืขื˜ ืœืขื‘ืŸ, ืื•ื™ื‘ ื–ื™ื™ ื˜ื•ื™ืฉืŸ - ืขืก ื•ื•ืขื˜ ื‘ืจืขื›ืŸ.

ื“ื™ ื™ื–ื™ืึทืกื˜ ื•ื•ืขื’ ืฆื• ืงืขืจ ืึทืœืฅ ืฆื•ืจื™ืง ืื™ื– ืฆื• ืึทื ืœืึธื•ื“ ื“ื™ ืงืขืจืŸ ืžืึทื“ื–ืฉื•ืœื–: modprobe -r fou ipip

ืืคื™ืœื• ืื•ื™ื‘ ืึธื˜ืขื ื˜ืึทืงื™ื™ืฉืึทืŸ ืื™ื– ื ื™ืฉื˜ ืคืืจืœืื ื’ื˜, ื“ืขืจ ืฆื™ื‘ื•ืจ IP ืื•ืŸ ืคึผืึธืจื˜ ืคื•ืŸ ื“ืขื ืงืœื™ืขื ื˜ ื–ืขื ืขืŸ ื ื™ืฉื˜ ืฉื˜ืขื ื“ื™ืง ื‘ืึทื•ื•ื•ืกื˜ ืื•ืŸ ื–ืขื ืขืŸ ืึธืคื˜ ืึทื ืคึผืจื™ื“ื™ืงื˜ืึทื‘ืึทืœ ืึธื“ืขืจ ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง (ื“ื™ืคึผืขื ื“ื™ื ื’ ืื•ื™ืฃ ื“ื™ NAT โ€‹โ€‹ื˜ื™ืคึผ). ืื•ื™ื‘ ืื™ืจ ืคืึทืจืœืึธื–ืŸ encap-dport ืื•ื™ืฃ ื“ื™ ืกืขืจื•ื•ืขืจ ื–ื™ื™ึทื˜, ื“ืขืจ ื˜ื•ื ืขืœ ื•ื•ืขื˜ ื ื™ืฉื˜ ืึทืจื‘ืขื˜ืŸ, ืขืก ืื™ื– ื ื™ืฉื˜ ืงืœื•ื’ ื’ืขื ื•ื’ ืฆื• ื ืขืžืขืŸ ื“ื™ ื•ื•ื™ื™ึทื˜ ืงืฉืจ ืคึผืึธืจื˜. ืื™ืŸ ื“ืขื ืคืึทืœ, ipipou ืงืขื ืขืŸ ืื•ื™ืš ื”ืขืœืคึฟืŸ, ืึธื“ืขืจ WireGuard ืื•ืŸ ืื ื“ืขืจืข ื•ื•ื™ ืขืก ืงืขื ืขืŸ ื”ืขืœืคึฟืŸ ืื™ืจ.

ื•ื•ื™ ื˜ื•ื˜ ืขืก ืึทืจื‘ืขื˜?

ื“ืขืจ ืงืœื™ืขื ื˜ (ื•ื•ืึธืก ืื™ื– ื™ื•ื–ืฉืึทื•ื•ืึทืœื™ ื”ื™ื ื˜ืขืจ NAT) ืขืคึฟื ื˜ ืึท ื˜ื•ื ืขืœ (ื•ื•ื™ ืื™ืŸ ื“ืขื ื‘ื™ื™ึทืฉืคึผื™ืœ ืื•ื™ื‘ืŸ), ืื•ืŸ ืกืขื ื“ื– ืึท ืึธื˜ืขื ื˜ืึทืงื™ื™ืฉืึทืŸ ืคึผืึทืงืึทื˜ ืฆื• ื“ื™ ืกืขืจื•ื•ืขืจ ืึทื–ื•ื™ ืึทื– ืขืก ืงืึทื ืคื™ื’ื™ืขืจ ื“ื™ ื˜ื•ื ืขืœ ืื•ื™ืฃ ื–ื™ื™ืŸ ื–ื™ื™ึทื˜. ื“ืขืคึผืขื ื“ื™ื ื’ ืื•ื™ืฃ ื“ื™ ืกืขื˜ื˜ื™ื ื’ืก, ื“ืึธืก ืงืขืŸ ื–ื™ื™ืŸ ืึท ืœื™ื™ื“ื™ืง ืคึผืึทืงืึทื˜ (ื ืึธืจ ืึทื–ื•ื™ ืึทื– ื“ืขืจ ืกืขืจื•ื•ืขืจ ืงืขื ืขืŸ ื–ืขืŸ ื“ื™ ืขืคื ื˜ืœืขืš IP: ืคึฟืึทืจื‘ื™ื ื“ื•ื ื’ ืคึผืึธืจื˜), ืึธื“ืขืจ ืžื™ื˜ ื“ืึทื˜ืŸ ื“ื•ืจืš ื•ื•ืึธืก ื“ืขืจ ืกืขืจื•ื•ืขืจ ืงืขื ืขืŸ ื™ื“ืขื ื˜ื™ืคื™ืฆื™ืจืŸ ื“ืขื ืงืœื™ืขื ื˜. ื“ื™ ื“ืึทื˜ืŸ ืงืขื ืขืŸ ื–ื™ื™ืŸ ืึท ืคึผืฉื•ื˜ ืคึผืึทืกืคืจืึทืกืข ืื™ืŸ ืงืœืึธืจ ื˜ืขืงืกื˜ (ื“ื™ ืึทื ืึทืœืึทื“ื–ืฉื™ ืžื™ื˜ HTTP Basic Auth ืงื•ืžื˜ ืฆื• ืžื™ื™ื ื•ื ื’) ืึธื“ืขืจ ืกืคึผืขืฉืœื™ ื“ื™ื–ื™ื™ื ื“ ื“ืึทื˜ืŸ ื’ืขื—ืชืžืขื˜ ืžื™ื˜ ืึท ืคึผืจื™ื•ื•ืึทื˜ ืฉืœื™ืกืœ (ืขื ืœืขืš ืฆื• HTTP Digest Auth ื‘ืœื•ื™ื– ืฉื˜ืืจืงืขืจ, ื–ืขืŸ ืคื•ื ืงืฆื™ืข client_auth ืื™ืŸ ื“ื™ ืงืึธื“).

ืื•ื™ืฃ ื“ื™ ืกืขืจื•ื•ืขืจ (ื“ื™ ื–ื™ื™ึทื˜ ืžื™ื˜ ื“ื™ ืขืคื ื˜ืœืขืš IP), ื•ื•ืขืŸ ipipou ืกื˜ืึทืจืฅ, ืขืก ืงืจื™ื™ื™ืฅ ืึท nfqueue ืจื™ื™ ื”ืึทื ื“ืœืขืจ ืื•ืŸ ืงืึทื ืคื™ื’ื™ืขืจ ื ืขื˜ืคื™ืœื˜ืขืจ ืึทื–ื•ื™ ืึทื– ื“ื™ ื ื™ื™ื˜ื™ืง ืคึผืึทืงื™ืฅ ื–ืขื ืขืŸ ื’ืขืฉื™ืงื˜ ื•ื•ื• ื–ื™ื™ ื–ืึธืœ ื–ื™ื™ืŸ: ืคึผืึทืงื™ืฅ ื™ื ื™ื˜ื™ืึทืœื™ื–ื™ื ื’ ื“ื™ ืงืฉืจ ืฆื• ื“ื™ nfqueue ืจื™ื™, ืื•ืŸ [ื›ึผืžืขื˜] ืึทืœืข ื“ื™ ืžื ื•ื—ื” ื’ื™ื™ืŸ ื’ืœื™ื™ืš ืฆื• ื“ื™ ืฆื•ื”ืขืจืขืจ FOU.

ืคึฟืึทืจ ื™ืขื ืข ื•ื•ืึธืก ื˜ืึธืŸ ื ื™ื˜ ื•ื•ื™ืกืŸ, nfqueue (ืึธื“ืขืจ NetfilterQueue) ืื™ื– ืึท ืกืคึผืขืฆื™ืขืœ ื–ืึทืš ืคึฟืึทืจ ืึทืžืึทื˜ืฉืขืจื– ื•ื•ืึธืก ื˜ืึธืŸ ื ื™ื˜ ื•ื•ื™ืกืŸ ื•ื•ื™ ืฆื• ืึทื ื˜ื•ื•ื™ืงืœืขืŸ ืงืขืจืŸ ืžืึทื“ื–ืฉื•ืœื–, ื•ื•ืึธืก ื ื™ืฆืŸ ื ืขื˜ืคื™ืœื˜ืขืจ (nftables / iptables) ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืจื™ื“ืขืจืขืงื˜ ื ืขืฅ ืคึผืึทืงื™ืฅ ืฆื• ื‘ืึทื ื™ืฆืขืจ ืคึผืœืึทืฅ ืื•ืŸ ืคึผืจืึทืกืขืกื™ื ื’ ื–ื™ื™ ื“ืึธืจื˜. ืคึผืจื™ืžื™ื˜ื™ื•ื• ืžื™ื˜ืœ ืื™ืŸ ื”ืึทื ื˜: ืžืึธื“ื™ืคื™ืฆื™ืจืŸ (ืึทืคึผืฉืึทื ืึทืœ) ืื•ืŸ ื’ืขื‘ืŸ ืขืก ืฆื•ืจื™ืง ืฆื• ื“ื™ ืงืขืจืŸ, ืึธื“ืขืจ ืึทื•ื•ืขืงื•ื•ืึทืจืคืŸ ืขืก.

ืคึฟืึทืจ ืขื˜ืœืขื›ืข ืคึผืจืึธื’ืจืึทืžืžื™ื ื’ ืฉืคืจืึทื›ืŸ ืขืก ื–ืขื ืขืŸ ื‘ื™ื™ื ื“ื™ื ื’ื– ืคึฟืึทืจ ืืจื‘ืขื˜ืŸ ืžื™ื˜ nfqueue, ืคึฟืึทืจ bash ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ื’ืึธืจื ื™ื˜ (ื”ืข, ื ื™ื˜ ื—ื™ื“ื•ืฉ), ืื™ืš ื”ืื˜ ืฆื• ื ื•ืฆืŸ ืคึผื™ื˜ื”ืึธืŸ: ipipou ื ื™ืฆื˜ NetfilterQueue.

ืื•ื™ื‘ ื“ื™ ืคืึธืจืฉื˜ืขืœื•ื ื’ ืื™ื– ื ื™ืฉื˜ ืงืจื™ื˜ื™ืฉ, ืžื™ื˜ ื“ืขื ื–ืึทืš ืื™ืจ ืงืขื ืขืŸ ืœืขืคื™ืขืจืขืš ื’ืขืฉื•ื•ื™ื ื“ ืื•ืŸ ืœื™ื™ื›ื˜ ืฆื•ื ื•ื™ืคื’ื™ืกืŸ ื“ื™ื™ืŸ ืื™ื™ื’ืขื ืข ืœืึธื’ื™ืง ืคึฟืึทืจ ืืจื‘ืขื˜ืŸ ืžื™ื˜ ืคึผืึทืงื™ืฅ ืื•ื™ืฃ ืึท ื’ืึทื ืฅ ื ื™ื“ืขืจื™ืง ืžื“ืจื’ื”, ืœืžืฉืœ, ืฉืึทืคึฟืŸ ื™ืงืกืคึผืขืจืžืขื ืึทืœ ื“ืึทื˜ืŸ ืึทืจื™ื‘ืขืจืคื™ืจืŸ ืคึผืจืึธื˜ืึธืงืึธืœืก ืึธื“ืขืจ ื˜ืจืึธื•ืœ ื”ื™ื’ืข ืื•ืŸ ื•ื•ื™ื™ึทื˜ ื‘ืึทื“ื™ื ื•ื ื’ืก ืžื™ื˜ ื ื™ื˜-ื ืึธืจืžืึทืœ ื ืึทื˜ื•ืจ.

ืจื•ื™ ืกืึทืงืึทืฅ ืึทืจื‘ืขื˜ ื”ืึทื ื˜ ืื™ืŸ ื”ืึทื ื˜ ืžื™ื˜ nfqueue, ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ื•ื•ืขืŸ ื“ืขืจ ื˜ื•ื ืขืœ ืื™ื– ืฉื•ื™ืŸ ืงืึทื ืคื™ื’ื™ืขืจื“ ืื•ืŸ FOU ืื™ื– ืฆื•ื’ืขื”ืขืจื˜ ืื•ื™ืฃ ื“ื™ ื’ืขื‘ืขื˜ืŸ ืคึผืึธืจื˜, ืื™ืจ ื•ื•ืขื˜ ื ื™ืฉื˜ ืงืขื ืขืŸ ืฆื• ืฉื™ืงืŸ ืึท ืคึผืึทืงืึทื˜ ืคื•ืŸ ื“ื™ ื–ืขืœื‘ืข ืคึผืึธืจื˜ ืื•ื™ืฃ ื“ื™ ื’ืขื•ื•ื™ื™ื ื˜ืœืขืš ื•ื•ืขื’ - ืขืก ืื™ื– ืคืึทืจื ื•ืžืขืŸ, ืึธื‘ืขืจ ืื™ืจ ืงืขื ืขืŸ ื ืขืžืขืŸ ืื•ืŸ ืฉื™ืงืŸ ืึท ืจืึทื ื“ืึทืžืœื™ ื“ื–ืฉืขื ืขืจื™ื™ื˜ืึทื“ ืคึผืึทืงืึทื˜ ื’ืœื™ื™ึทืš ืฆื• ื“ื™ ื ืขืฅ ืฆื•ื‘ื™ื ื“ ื ื™ืฆืŸ ืึท ืจื•ื™ ื›ืึธืœืขืœ, ื›ืึธื˜ืฉ ื“ื–ืฉืขื ืขืจื™ื™ื˜ื™ื ื’ ืึทื–ืึท ืึท ืคึผืึทืงืึทื˜ ื•ื•ืขื˜ ื“ืึทืจืคืŸ ืึท ื‘ื™ืกืœ ืžืขืจ ื˜ื™ื ืงืขืจื™ื ื’. ื“ืึธืก ืื™ื– ื•ื•ื™ ืคึผืึทืงื™ืฅ ืžื™ื˜ ืึธื˜ืขื ื˜ืึทืงื™ื™ืฉืึทืŸ ื–ืขื ืขืŸ ื‘ืืฉืืคืŸ ืื™ืŸ ipipou.

ื–ื™ื ื˜ ipipou ืคึผืจืึทืกืขืกืึทื– ื‘ืœื•ื™ื– ื“ื™ ืขืจืฉื˜ืขืจ ืคึผืึทืงื™ืฅ ืคื•ืŸ ื“ื™ ืงืฉืจ (ืื•ืŸ ื“ื™ ื•ื•ืึธืก ื”ืึธื‘ืŸ ื’ืขืจืื˜ืŸ ืฆื• ืจื™ื ืขืŸ ืื™ืŸ ื“ื™ ืจื™ื™ ืื™ื™ื“ืขืจ ื“ื™ ืงืฉืจ ืื™ื– ื’ืขื’ืจื™ื ื“ืขื˜), ื“ื™ ืคืึธืจืฉื˜ืขืœื•ื ื’ ื›ึผืžืขื˜ ื ื™ืฉื˜ ืœื™ื™ื“ืŸ.

ื•ื•ื™ ื‘ืึทืœื“ ื•ื•ื™ ื“ืขืจ ipipou ืกืขืจื•ื•ืขืจ ื‘ืืงื•ืžื˜ ืึท ืึธื˜ืขื ื˜ืึทืงื™ื™ื˜ืึทื“ ืคึผืึทืงืึทื˜, ืึท ื˜ื•ื ืขืœ ืื™ื– ื‘ืืฉืืคืŸ ืื•ืŸ ืึทืœืข ืกืึทื‘ืกืึทืงื•ื•ืึทื ื˜ ืคึผืึทืงื™ืฅ ืื™ืŸ ื“ื™ ืงืฉืจ ื–ืขื ืขืŸ ืฉื•ื™ืŸ ืคึผืจืึทืกืขืกื˜ ื“ื•ืจืš ื“ื™ ืงืขืจืŸ ื‘ื™ื™ืคึผืึทืกื™ื ื’ nfqueue. ืื•ื™ื‘ ื“ื™ ืงืฉืจ ืคื™ื™ืœื–, ื“ืขืจ ืขืจืฉื˜ืขืจ ืคึผืึทืงืึทื˜ ืคื•ืŸ ื“ืขืจ ื•ื•ื™ื™ึทื˜ืขืจ ืื™ื™ื ืขืจ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขืฉื™ืงื˜ ืฆื• ื“ื™ nfqueue ืจื™ื™, ื“ื™ืคึผืขื ื“ื™ื ื’ ืื•ื™ืฃ ื“ื™ ืกืขื˜ื˜ื™ื ื’ืก, ืื•ื™ื‘ ืขืก ืื™ื– ื ื™ืฉื˜ ืึท ืคึผืึทืงืึทื˜ ืžื™ื˜ ืึธื˜ืขื ื˜ืึทืงื™ื™ืฉืึทืŸ, ืึธื‘ืขืจ ืคึฟื•ืŸ ื“ื™ ืœืขืฆื˜ืข ื“ืขืจืžืื ื˜ IP ืื•ืŸ ืงืœื™ืขื ื˜ ืคึผืึธืจื˜, ืขืก ืงืขืŸ ื–ื™ื™ืŸ ื“ื•ืจื›ื’ืขื’ืื ื’ืขืŸ. ืื•ื™ืฃ ืึธื“ืขืจ ืึทื•ื•ืขืงื’ืขื ื•ืžืขืŸ. ืื•ื™ื‘ ืึท ืึธื˜ืขื ื˜ืึทืงื™ื™ื˜ืึทื“ ืคึผืึทืงืึทื˜ ืงื•ืžื˜ ืคึฟื•ืŸ ืึท ื ื™ื™ึทืข IP ืื•ืŸ ืคึผืึธืจื˜, ื“ืขืจ ื˜ื•ื ืขืœ ืื™ื– ืจื™ืงืึทื ืคื™ื’ื™ืขืจื“ ืฆื• ื ื•ืฆืŸ ื–ื™ื™.

ื“ื™ ื’ืขื•ื•ื™ื™ื ื˜ืœืขืš IPIP-ืื™ื‘ืขืจ-FOU ื”ืื˜ ื ืึธืš ืึท ืคึผืจืึธื‘ืœืขื ื•ื•ืขืŸ ืืจื‘ืขื˜ืŸ ืžื™ื˜ NAT - ืขืก ืื™ื– ืื•ืžืžืขื’ืœืขืš ืฆื• ืฉืึทืคึฟืŸ ืฆื•ื•ื™ื™ IPIP ื˜ืึทื ืึทืœื– ืขื ืงืึทืคึผืกืึทืœื™ื™ื˜ื™ื“ ืื™ืŸ UDP ืžื™ื˜ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ IP, ื•ื•ื™ื™ึทืœ ื“ื™ FOU ืื•ืŸ IPIP ืžืึทื“ื–ืฉื•ืœื– ื–ืขื ืขืŸ ื’ืึทื ืฅ ืืคื’ืขื–ื•ื ื“ืขืจื˜ ืคื•ืŸ ื™ืขื“ืขืจ ืื ื“ืขืจืขืจ. ื™ืขื ืข. ืึท ืคึผืึธืจ ืคื•ืŸ ืงืœื™ื™ืึทื ืฅ ื”ื™ื ื˜ืขืจ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืขืคื ื˜ืœืขืš IP ื•ื•ืขื˜ ื ื™ืฉื˜ ืงืขื ืขืŸ ืฆื• ืกื™ื™ืžืึทืœื˜ื™ื™ื ื™ืึทืกืœื™ ืคืึทืจื‘ื™ื ื“ืŸ ืฆื• ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืกืขืจื•ื•ืขืจ ืื•ื™ืฃ ื“ืขื ื•ื•ืขื’. ืื™ืŸ ืฆื•ืงื•ื ืคื˜, ื˜ืึธืžืขืจ, ืขืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ืกืึทืœื•ื•ื“ ืื™ืŸ ื“ื™ ืงืขืจืŸ ืžื“ืจื’ื”, ืึธื‘ืขืจ ื“ืึธืก ืื™ื– ื ื™ืฉื˜ ื–ื™ื›ืขืจ. ืื™ืŸ ื“ืขืจ ื“ืขืจื•ื•ื™ื™ืœ, NAT ืคึผืจืึธื‘ืœืขืžืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ืกืึทืœื•ื•ื“ ื“ื•ืจืš NAT - ืื•ื™ื‘ ืขืก ื›ืึทืคึผืึทื ื– ืึทื– ืึท ืคึผืึธืจ ืคื•ืŸ IP ืึทื“ืจืขืกืขืก ืื™ื– ืฉื•ื™ืŸ ืคืึทืจื ื•ืžืขืŸ ื“ื•ืจืš ืืŸ ืื ื“ืขืจ ื˜ื•ื ืขืœ, ipipou ื•ื•ืขื˜ ื˜ืึธืŸ NAT ืคื•ืŸ ืฆื™ื‘ื•ืจ ืฆื• ืึทืŸ ืื ื“ืขืจ ื‘ืจื™ืจื” ืคึผืจื™ื•ื•ืึทื˜ IP, ื•ื•ื•ื•ืึทืœืึท! - ืื™ืจ ืงืขื ืขืŸ ืžืึทื›ืŸ ื˜ืึทื ืึทืœื– ื‘ื™ื– ื“ื™ ืคึผืึธืจืฅ ืœื•ื™ืคืŸ ืื•ื™ืก.

ื•ื•ื™ื™ึทืœ ื ื™ื˜ ืึทืœืข ืคึผืึทืงื™ืฅ ืื™ืŸ ื“ื™ ืคึฟืึทืจื‘ื™ื ื“ื•ื ื’ ื–ืขื ืขืŸ ื’ืขื—ืชืžืขื˜, ื“ืขืจ ืคึผืฉื•ื˜ ืฉื•ืฅ ืื™ื– ืฉืคึผื™ืจืขื•ื•ื“ื™ืง ืฆื• MITM, ืึทื–ื•ื™ ืื•ื™ื‘ ืขืก ืื™ื– ืึท ืจืึธืฉืข ืœืขืจืงื™ื ื’ ืื•ื™ืฃ ื“ืขื ื“ืจืš ืฆื•ื•ื™ืฉืŸ ื“ืขื ืงืœื™ืขื ื˜ ืื•ืŸ ื“ื™ ืกืขืจื•ื•ืขืจ ื•ื•ืึธืก ืงืขื ืขืŸ ื”ืขืจืŸ ืฆื• ื“ื™ ืคืึทืจืงืขืจ ืื•ืŸ ืžืึทื ื™ืคึผื•ืœื™ืจืŸ ืขืก, ืขืจ ืงืขื ืขืŸ ืจื™ื“ืขืจืขืงื˜ ืึธื˜ืขื ื˜ืึทืงื™ื™ื˜ืึทื“ ืคึผืึทืงื™ืฅ ื“ื•ืจืš ืืŸ ืื ื“ืขืจ ืึทื“ืจืขืก ืื•ืŸ ืฉืึทืคึฟืŸ ืึท ื˜ื•ื ืขืœ ืคื•ืŸ ืึท ืึทื ื˜ืจืึทืกื˜ื™ื“ ื‘ืึทืœืขื‘ืึธืก.

ืื•ื™ื‘ ื•ื•ืขืจ ืขืก ื™ื– ื”ืื˜ ื™ื™ื“ื™ืึทื– ื•ื•ื™ ืฆื• ืคืึทืจืจื™ื›ื˜ืŸ ื“ืขื ื‘ืฉืขืช ืœืึธื–ืŸ ื“ื™ ืคืึทืจื ืขื ืคื•ืŸ ื“ื™ ืคืึทืจืงืขืจ ืื™ืŸ ื“ื™ ื”ืึทืจืฅ, ื˜ืึธืŸ ื ื™ื˜ ืงื•ื•ืขื ืงืœืขืŸ ืฆื• ืจืขื“ืŸ.

ื“ื•ืจืš ื“ืขื ื•ื•ืขื’, ืขื ืงืึทืคึผืกื•ืœืึทื˜ื™ืึธืŸ ืื™ืŸ UDP ื”ืื˜ ืคึผืจืึธื•ื•ืขืŸ ื–ื™ืš ื–ื™ื™ืขืจ ื’ื•ื˜. ืงืึทืžืคึผืขืจื“ ืžื™ื˜ ืขื ืงืึทืคึผืกื•ืœืึทื˜ื™ืึธืŸ ืื™ื‘ืขืจ IP, ืขืก ืื™ื– ืคื™ืœ ืžืขืจ ืกื˜ืึทื‘ื™ืœ ืื•ืŸ ืึธืคื˜ ืคืึทืกื˜ืขืจ ื˜ืจืึธืฅ ื“ื™ ื ืึธืš ืึธื•ื•ื•ืขืจื›ืขื“ ืคื•ืŸ ื“ื™ UDP ื›ืขื“ืขืจ. ื“ืึธืก ืื™ื– ืจืขื›ื˜ ืฆื• ื“ืขื ืคืึทืงื˜ ืึทื– ืจื•ื‘ึฟ ืžื—ื ื•ืช ืื•ื™ืฃ ื“ืขืจ ืื™ื ื˜ืขืจื ืขืฅ ืึทืจื‘ืขื˜ ื’ืขื–ื•ื ื˜ ื‘ืœื•ื™ื– ืžื™ื˜ ื“ื™ ื“ืจื™ื™ ืžืขืจืกื˜ ืคืึธืœืงืก ืคึผืจืึธื˜ืึธืงืึธืœืก: TCP, UDP, ICMP. ื“ืขืจ ืžืึทืžืึธืฉืขืกื“ื™ืง ื˜ื™ื™ืœ ืงืขื ืขืŸ ื’ืึธืจ ืึทื•ื•ืขืงื•ื•ืึทืจืคืŸ ืึทืœืฅ ืึทื ื“ืขืจืฉ, ืึธื“ืขืจ ืคึผืจืึธืฆืขืก ืขืก ืžืขืจ ืกืœืึธื•ืœื™, ื•ื•ื™ื™ึทืœ ืขืก ืื™ื– ืึธืคึผื˜ื™ืžื™ื–ืขื“ ื‘ืœื•ื™ื– ืคึฟืึทืจ ื“ื™ ื“ืจื™ื™.

ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ื“ืึธืก ืื™ื– ื•ื•ืึธืก QUICK, ืื•ื™ืฃ ื•ื•ืึธืก ื”ื˜ื˜ืคึผ / 3 ืื™ื– ื‘ืื–ื™ืจื˜, ืื™ื– ื‘ืืฉืืคืŸ ืื•ื™ืฃ ืฉืคึผื™ืฅ ืคื•ืŸ UDP, ืื•ืŸ ื ื™ืฉื˜ ืื•ื™ืฃ ืฉืคึผื™ืฅ ืคื•ืŸ IP.

ื ื•, ื’ืขื ื•ื’ ื•ื•ืขืจื˜ืขืจ, ืขืก ืื™ื– ืฆื™ื™ื˜ ืฆื• ื–ืขืŸ ื•ื•ื™ ืขืก ืึทืจื‘ืขื˜ ืื™ืŸ ื“ืขืจ "ืคืึทืงื˜ื™ืฉ ื•ื•ืขืœื˜".

ืฉืœืึทื›ื˜

ื’ืขื•ื•ื™ื™ื ื˜ ืฆื• ืขืžื™ืึทืœื™ื™ื˜ ื“ื™ ืคืึทืงื˜ื™ืฉ ื•ื•ืขืœื˜ iperf3. ืื™ืŸ ื˜ืขืจืžื™ื ืขืŸ ืคื•ืŸ ื“ื™ ื’ืจืึทื“ ืคื•ืŸ ื ืึธืขื ื˜ืงื™ื™ื˜ ืฆื• ืคืึทืงื˜, ื“ืึธืก ืื™ื– ื‘ืขืขืจืขืš ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ื•ื•ื™ ืขืžื™ืึทืœื™ื™ื˜ื™ื ื’ ื“ื™ ืคืึทืงื˜ื™ืฉ ื•ื•ืขืœื˜ ืื™ืŸ ืžื™ื ืขืงืจืึทืคื˜, ืึธื‘ืขืจ ืื™ืฆื˜ ืขืก ื•ื•ืขื˜ ื˜ืึธืŸ.

ืคึผืึทืจื˜ื™ืกืึทืคึผืึทื ืฅ ืื™ืŸ ื“ื™ ืคืึทืจืžืขืกื˜:

  • ื“ืขืจืžืึธื ืขืŸ ื”ื•ื™ืคึผื˜ ืงืึทื ืึทืœ
  • ื“ืขืจ ื”ืขืœื“ ืคื•ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ ืื™ื– ipipou
  • OpenVPN ืžื™ื˜ ืึธื˜ืขื ื˜ืึทืงื™ื™ืฉืึทืŸ ืึธื‘ืขืจ ืงื™ื™ืŸ ืขื ืงืจื™ืคึผืฉืึทืŸ
  • OpenVPN ืื™ืŸ ืึทืœืข-ื™ื ืงืœื•ืกื™ื•ื• ืžืึธื“ืข
  • WireGuard ืึธืŸ PresharedKey, ืžื™ื˜ MTU = 1440 (ื–ื™ื ื˜ IPv4-ื‘ืœื•ื™ื–)

ื˜ืขื›ื ื™ืฉ ื“ืึทื˜ืŸ ืคึฟืึทืจ ื’ืขืงืก
ืžืขื˜ืจื™ืงืก ื–ืขื ืขืŸ ื’ืขื ื•ืžืขืŸ ืžื™ื˜ ื“ื™ ืคืืœื’ืขื ื“ืข ืงืึทืžืึทื ื“ื–:

ืื•ื™ืฃ ื“ืขื ืงืœื™ืขื ื˜:

ื•ื“ืคึผ

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", ั‡ั‚ะพะฑั‹ ะปะธัˆะฝะธะต ะฟะฐะบะตั‚ั‹ ะฝะต ะฟะปะพะดะธั‚ัŒ ะธ ะฝะต ะฟะพั€ั‚ะธั‚ัŒ ะฟั€ะพะธะทะฒะพะดะธั‚ะตะปัŒะฝะพัั‚ัŒ.

ื˜ืงืคึผ

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

ืื•ื™ืฃ ื“ื™ ืกืขืจื•ื•ืขืจ (ืœื•ื™ืคื˜ ืกื™ื™ืžืึทืœื˜ื™ื™ื ื™ืึทืกืœื™ ืžื™ื˜ ื“ืขื ืงืœื™ืขื ื˜):

ื•ื“ืคึผ

CPULOG=NAME.udp.cpu.log; sar 10 6 >"$CPULOG" & iperf3 -s -i 10 -f m -1; tail -1 "$CPULOG"

ื˜ืงืคึผ

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, ืึทืœืฅ ื•ื•ื™ ื“ืขืจื•ื•ืึทืจื˜)
ืงืึทื ืคื™ื’ื™ืขืจื“ ื ื™ืฆืŸ openvpn-manage

ื•ื•ื™ืจืขื’ื•ืึทืจื“
ืกืขืจื•ื•ืขืจ
/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

ืจืขื–ื•ืœื˜ืึทื˜ืŸ

ืคื™ื™ึทื›ื˜ ืžื™ืขืก ืฆื™ื™ื›ืŸ
ืกืขืจื•ื•ื™ืจืขืจ ืงืคึผื• ืžืึทืกืข ืื™ื– ื ื™ืฉื˜ ื–ื™ื™ืขืจ ื™ื ื“ื™ืงืึทื˜ื™ื•ื•, ื•ื•ื™ื™ึทืœ ... ืขืก ื–ืขื ืขืŸ ืคื™ืœืข ืื ื“ืขืจืข ื‘ืึทื“ื™ื ื•ื ื’ืก ืคืœื™ืกื ื“ื™ืง ื“ืึธืจื˜, ืžืืœ ื–ื™ื™ ืขืกืŸ ืึทืจื•ื™ืฃ ืจืขืกื•ืจืกืŸ:

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 ืžื‘ืคึผืก ืงืึทื ืึทืœ

ipipou: ืžืขืจ ื•ื•ื™ ื‘ืœื•ื™ื– ืึทืŸ ืึทื ืขื ืงืจื™ืคึผื˜ื™ื“ ื˜ื•ื ืขืœ

ipipou: ืžืขืจ ื•ื•ื™ ื‘ืœื•ื™ื– ืึทืŸ ืึทื ืขื ืงืจื™ืคึผื˜ื™ื“ ื˜ื•ื ืขืœ

ืงืึทื ืึทืœ ืคึผืขืจ 1 ืึธืคึผื˜ื™ืžื™ืกื˜ื™ืฉ ื’ื‘ืคึผืก

ipipou: ืžืขืจ ื•ื•ื™ ื‘ืœื•ื™ื– ืึทืŸ ืึทื ืขื ืงืจื™ืคึผื˜ื™ื“ ื˜ื•ื ืขืœ

ipipou: ืžืขืจ ื•ื•ื™ ื‘ืœื•ื™ื– ืึทืŸ ืึทื ืขื ืงืจื™ืคึผื˜ื™ื“ ื˜ื•ื ืขืœ

ืื™ืŸ ืึทืœืข ืงืึทืกืขืก, ipipou ืื™ื– ื’ืึทื ืฅ ื ืึธืขื ื˜ ืื™ืŸ ืคืึธืจืฉื˜ืขืœื•ื ื’ ืฆื• ื“ื™ ื‘ืึทื–ืข ืงืึทื ืึทืœ, ื•ื•ืึธืก ืื™ื– ื’ืจื•ื™ืก!

ื“ื™ ืึทื ืขื ืงืจื™ืคึผื˜ื™ื“ ืึธืคึผืขื ื•ื•ืคึผืŸ ื˜ื•ื ืขืœ ื‘ื™ื›ื™ื™ื•ื•ื“ ื’ืึทื ืฅ ืžืึธื“ื ืข ืื™ืŸ ื‘ื™ื™ื“ืข ืงืึทืกืขืก.

ืื•ื™ื‘ ื•ื•ืขืจ ืขืก ื™ื– ืื™ื– ื’ืขื’ืื ื’ืขืŸ ืฆื• ืคึผืจื•ื‘ื™ืจืŸ ืขืก, ืขืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ื˜ืฉื™ืงืึทื•ื•ืข ืฆื• ื”ืขืจืŸ ื‘ืึทืžืขืจืงื•ื ื’ืขืŸ.

ืงืขืŸ IPv6 ืื•ืŸ NetPrickle ื–ื™ื™ืŸ ืžื™ื˜ ืื•ื ื“ื–!

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’