ipipou: рдХреЗрд╡рд▓ рдПрдХ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд╕реБрд░реБрдЩ рднрдиреНрджрд╛ рдмрдвреА

рд╣рд╛рдореА IPv6 рдХреЛ рднрдЧрд╡рд╛рдирд▓рд╛рдИ рдХреЗ рднрдирд┐рд░рд╣реЗрдХрд╛ рдЫреМрдВ?

ipipou: рдХреЗрд╡рд▓ рдПрдХ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд╕реБрд░реБрдЩ рднрдиреНрджрд╛ рдмрдвреА
рддреНрдпреЛ рдареАрдХ рдЫ, рд╣рд╛рдореА рдЖрдЬ рдЗрдиреНрдХреНрд░рд┐рдкреНрд╢рдирдХреЛ рджреЗрд╡рддрд╛рд▓рд╛рдИ рдкрдирд┐ рднрдиреНрдиреЗрдЫреМрдВред

рдпрд╣рд╛рдБ рд╣рд╛рдореА рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдирдЧрд░рд┐рдПрдХреЛ IPv4 рд╕реБрд░реБрдЩрдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреБрд░рд╛ рдЧрд░реНрдиреЗрдЫреМрдВ, рддрд░ "рдиреНрдпрд╛рдиреЛ рдмрддреНрддреА" рдХреЛ рдмрд╛рд░реЗрдорд╛ рд╣реЛрдЗрди, рддрд░ рдЖрдзреБрдирд┐рдХ "LED" рдХреЛ рдмрд╛рд░реЗрдорд╛ред рд░ рдпрд╣рд╛рдБ рдХрдЪреНрдЪрд╛ рд╕рдХреЗрдЯрд╣рд░реВ рдкрдирд┐ рдлреНрд▓реНрдпрд╛рд╕рд┐рдЩ рдЫрдиреН, рд░ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдкреЗрд╕рдорд╛ рдкреНрдпрд╛рдХреЗрдЯрд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рднрдЗрд░рд╣реЗрдХреЛ рдЫред

рддреНрдпрд╣рд╛рдБ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрд╡рд╛рдж рд░ рд░рдВрдЧрдХреЛ рд▓рд╛рдЧрд┐ N рдЯрдиреЗрд▓рд┐рдЩ рдкреНрд░реЛрдЯреЛрдХрд▓рд╣рд░реВ рдЫрдиреН:

  • рд╕реНрдЯрд╛рдЗрд▓рд┐рд╢, рдлреИрд╢рдиреЗрдмрд▓, рдпреБрд╡рд╛ WireGuard
  • рдмрд╣реБрдХрд╛рд░реНрдпрд╛рддреНрдордХ, рдЬрд╕реНрддреИ рд╕реНрд╡рд┐рд╕ рдЪрд╛рдХреВ, OpenVPN рд░ SSH
  • рдкреБрд░рд╛рдиреЛ рд░ рдЦрд░рд╛рдм GRE рд╣реЛрдЗрди
  • рд╕рдмреИрднрдиреНрджрд╛ рд╕рд░рд▓, рдЫрд┐рдЯреЛ, рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдирдЧрд░рд┐рдПрдХреЛ IPIP
  • рд╕рдХреНрд░рд┐рдп рд░реВрдкрдорд╛ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрджреИ GENEVE
  • рдзреЗрд░реИ рдЕрдиреНрдпред

рддрд░ рдо рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╣реБрдБ, рддреНрдпрд╕реИрд▓реЗ рдо N рдХреЛ рдПрдХ рдЕрдВрд╢рд▓реЗ рдорд╛рддреНрд░ рдмрдврд╛рдЙрдиреЗрдЫреБ, рд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░реЛрдЯреЛрдХрд▓рд╣рд░реВрдХреЛ рд╡рд┐рдХрд╛рд╕ Kommersant рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓рд╛рдИ рдЫреЛрдбреНрдиреЗрдЫреБред

рдПрдЙрдЯрд╛ рдирдЬрдиреНрдордорд╛ рдбреНрд░рд╛рдлреНрдЯрдо рдЕрд╣рд┐рд▓реЗ рдХреЗ рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдЫреБ рдмрд╛рд╣рд┐рд░рдмрд╛рдЯ NAT рдкрдЫрд╛рдбрд┐ рд╣реЛрд╕реНрдЯрд╣рд░реВ рдкреБрдЧреНрдиреБ рд╣реЛред рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рд╡рдпрд╕реНрдХ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреАрдХреЛ рд╕рд╛рде рдкреНрд░реЛрдЯреЛрдХрд▓рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░, рдореИрд▓реЗ рдпреЛ рддреЛрдкрдмрд╛рдЯ рднрдБрдЧреЗрд░рд╛рд▓рд╛рдИ рдЧреЛрд▓реА рд╣рд╛рдиреЗрдЬрд╕реНрддреИ рд╣реЛ рднрдиреНрдиреЗ рднрд╛рд╡рдирд╛рд▓рд╛рдИ рд╣рд▓реНрд▓рд╛рдЙрди рд╕рдХрд┐рдиред рдХрд┐рдирднрдиреЗ NAT-e рдорд╛ рдкреНрд╡рд╛рд▓рд╣рд░реВ рдкреЛрдХ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдорд╛рддреНрд░ рд╕реБрд░реБрдЩ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ, рдЖрдиреНрддрд░рд┐рдХ рдЯреНрд░рд╛рдлрд┐рдХ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдЗрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд╣реБрдиреНрдЫ, рддрд░ рддрд┐рдиреАрд╣рд░реВ рдЕрдЭреИ рдкрдирд┐ HTTPS рдорд╛ рдбреБрдмреНрдЫрдиреНред

рд╡рд┐рднрд┐рдиреНрди рдЯрдиреЗрд▓рд┐рдЩ рдкреНрд░реЛрдЯреЛрдХрд▓рд╣рд░реВ рдЕрдиреБрд╕рдиреНрдзрд╛рди рдЧрд░реНрджрд╛, рдореЗрд░реЛ рднрд┐рддреНрд░реА рдкреВрд░реНрдгрддрд╛рд╡рд╛рджреАрдХреЛ рдзреНрдпрд╛рди рдпрд╕рдХреЛ рдиреНрдпреВрдирддрдо рдУрднрд░рд╣реЗрдбрдХреЛ рдХрд╛рд░рдгрд▓реЗ рдмрд╛рд░рдореНрдмрд╛рд░ IPIP рддрд┐рд░ рдЦрд┐рдЪрд┐рдпреЛред рддрд░ рдпрд╕рдорд╛ рдореЗрд░реЛ рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдбреЗрдв рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдХрдордЬреЛрд░реАрд╣рд░реВ рдЫрдиреН:

  • рдпрд╕рд▓рд╛рдИ рджреБрдмреИ рдкрдХреНрд╖рдорд╛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЖрдИрдкреАрд╣рд░реВ рдЪрд╛рд╣рд┐рдиреНрдЫ,
  • рд░ рддрдкрд╛рдИрдВрдХреЛ рд▓рд╛рдЧрд┐ рдХреБрдиреИ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЫреИрдиред

рддреНрдпрд╕рдХрд╛рд░рдг, рдкреВрд░реНрдгрддрд╛рд╡рд╛рджреАрд▓рд╛рдИ рдЦреЛрдкрдбреАрдХреЛ рдЕрдБрдзреНрдпрд╛рд░реЛ рдХреБрдирд╛рдорд╛, рд╡рд╛ рдЬрд╣рд╛рдБ рдкрдирд┐ рдК рддреНрдпрд╣рд╛рдБ рдмрд╕реНрдЫ, рдлрд░реНрдХрд╛рдЗрдпреЛред

рдЕрдирд┐ рдПрдХ рджрд┐рди, рд▓реЗрдЦ рдкрдвреНрджреИ рдЧрд░реНрджрд╛ рдореВрд▓ рд░реВрдкрдорд╛ рд╕рдорд░реНрдерд┐рдд рд╕реБрд░реБрдЩрд╣рд░реВ рд▓рд┐рдирдХреНрд╕рдорд╛ рдореИрд▓реЗ FOU (Foo-over-UDP) рднреЗрдЯреЗрдВ, рдЕрд░реНрдерд╛рддреНред рдЬреЗ рд╣реЛрд╕реН, UDP рдорд╛ рдмреЗрд░рд┐рдПрдХреЛред рдЕрд╣рд┐рд▓реЗрд╕рдореНрдо, IPIP рд░ GUE (рдЬреЗрдиреЗрд░рд┐рдХ UDP рдЗрдиреНрдХреНрдпрд╛рдкреНрд╕реБрд▓реЗрд╢рди) рдорд╛рддреНрд░ рд╕рдорд░реНрдерд┐рдд рдЫрдиреНред

"рдпрд╣рд╛рдБ рдЪрд╛рдБрджреАрдХреЛ рдЧреЛрд▓реА рдЫ! рдПрдХ рд╕рд╛рдзрд╛рд░рдг IPIP рдореЗрд░реЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдпрд╛рдкреНрдд рдЫред" - рдореИрд▓реЗ рд╕реЛрдЪреЗрдВред

рд╡рд╛рд╕реНрддрд╡рдорд╛, рдЧреЛрд▓реА рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдЪрд╛рдБрджреАрдХреЛ рдерд┐рдПрдиред UDP рдорд╛ рдЗрдиреНрдХреНрдпрд╛рдкреНрд╕реБрд▓реЗрд╢рдирд▓реЗ рдкрд╣рд┐рд▓реЛ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрдЫ - рддрдкрд╛рдЗрдБ рдкреВрд░реНрд╡-рд╕реНрдерд╛рдкрд┐рдд рдЬрдбрд╛рди рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдмрд╛рд╣рд┐рд░рдмрд╛рдЯ NAT рдкрдЫрд┐рдХрд╛ рдЧреНрд░рд╛рд╣рдХрд╣рд░реВрд╕рдБрдЧ рдЬрдбрд╛рди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рддрд░ рдпрд╣рд╛рдБ IPIP рдХреЛ рдЕрд░реНрдХреЛ рдХрдордЬреЛрд░реАрдХреЛ рдЖрдзрд╛ рдирдпрд╛рдБ рдкреНрд░рдХрд╛рд╢рдорд╛ рдлреБрд▓реНрдЫ - рдирд┐рдЬреА рдиреЗрдЯрд╡рд░реНрдХрдмрд╛рдЯ рдЬреЛ рдХреЛрд╣реАрд▓реЗ рджреЗрдЦрд┐рдиреЗ рдкрдЫрд╛рдбрд┐ рд▓реБрдХреНрди рд╕рдХреНрдЫрдиреНред рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ IP рд░ рдЧреНрд░рд╛рд╣рдХ рдкреЛрд░реНрдЯ (рд╢реБрджреНрдз IPIP рдорд╛ рдпреЛ рд╕рдорд╕реНрдпрд╛ рдЕрд╡рд╕реНрдерд┐рдд рдЫреИрди)ред

рдпреЛ рдбреЗрдв рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди, рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЬрдиреНрдо рднрдПрдХреЛ рдерд┐рдпреЛ ipipouред рдпрд╕рд▓реЗ рдХрд░реНрдиреЗрд▓ FOU рдХреЛ рд╕рдЮреНрдЪрд╛рд▓рдирдорд╛ рдЕрд╡рд░реЛрдз рдирдЧрд░реА рд░рд┐рдореЛрдЯ рд╣реЛрд╕реНрдЯ рдкреНрд░рдорд╛рдгреАрдХрд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рдШрд░реЗрд▓реБ рдореЗрдХрд╛рдирд┐рдЬрдо рд▓рд╛рдЧреВ рдЧрд░реНрджрдЫ, рдЬрд╕рд▓реЗ рдХрд░реНрдиреЗрд▓ рд╕реНрдкреЗрд╕рдорд╛ рдкреНрдпрд╛рдХреЗрдЯрд╣рд░реВ рдЫрд┐рдЯреЛ рд░ рдкреНрд░рднрд╛рд╡рдХрд╛рд░реА рд░реВрдкрдорд╛ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрджрдЫред

рд╣рд╛рдореАрд▓рд╛рдИ рддрдкрд╛рдИрдВрдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд╛рд╣рд┐рдБрджреИрди!

рдареАрдХ рдЫ, рдпрджрд┐ рддрдкрд╛рдИрд▓рд╛рдИ рдХреНрд▓рд╛рдЗрдиреНрдЯрдХреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкреЛрд░реНрдЯ рд░ IP рдерд╛рд╣рд╛ рдЫ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдпрд╕рдХреЛ рдкрдЫрд╛рдбрд┐ рд╕рдмреИ рдХрддреИ рдЬрд╛рдБрджреИрдирдиреН, NAT рд▓реЗ 1-in-1 рдкреЛрд░реНрдЯрд╣рд░реВ рдирдХреНрд╕рд╛ рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрджрдЫ), рддрдкрд╛рдИрдВрд▓реЗ IPIP-over-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 - рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЖрдИрдкреА рд╕рд░реНрднрд░
  • 198.51.100.2 - рдЧреНрд░рд╛рд╣рдХрдХреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЖрдИрдкреА
  • 192.168.0.2 - рдЧреНрд░рд╛рд╣рдХ рдЖрдИрдкреА рдЗрдиреНрдЯрд░рдлреЗрд╕ eth0 рдорд╛ рддреЛрдХрд┐рдПрдХреЛ рдЫ
  • 10001 - FOU рдХреЛ рд▓рд╛рдЧрд┐ рд╕реНрдерд╛рдиреАрдп рдЧреНрд░рд╛рд╣рдХ рдкреЛрд░реНрдЯ
  • 20001 - FOU рдХреЛ рд▓рд╛рдЧрд┐ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЧреНрд░рд╛рд╣рдХ рдкреЛрд░реНрдЯ
  • 10000 - FOU рдХреЛ рд▓рд╛рдЧрд┐ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рд░реНрднрд░ рдкреЛрд░реНрдЯ
  • encap-csum - encapsulated UDP рдкреНрдпрд╛рдХреЗрдЯрд╣рд░реВрдорд╛ UDP рдЪреЗрдХрд╕рдо рдердкреНрдиреЗ рд╡рд┐рдХрд▓реНрдк; рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ noencap-csum, рдЙрд▓реНрд▓реЗрдЦ рдирдЧрд░реНрди, рдЕрдЦрдгреНрдбрддрд╛ рдкрд╣рд┐рд▓реЗ рдиреИ рдмрд╛рд╣рд┐рд░реА encapsulation рддрд╣ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдиреНрддреНрд░рд┐рдд рдЫ (рдЬрдмрдХрд┐ рдкреНрдпрд╛рдХреЗрдЯ рд╕реБрд░реБрдЩ рднрд┐рддреНрд░ рдЫ)
  • eth0 тАФ рд╕реНрдерд╛рдиреАрдп рдЗрдиреНрдЯрд░рдлреЗрд╕ рдЬрд╕рдорд╛ ipip рд╕реБрд░реБрдЩ рдмрд╛рдБрдзрд┐рдПрдХреЛ рд╣реБрдиреЗрдЫ
  • 172.28.0.1 - рдЧреНрд░рд╛рд╣рдХ рдЯрдиреЗрд▓ рдЗрдиреНрдЯрд░рдлреЗрд╕рдХреЛ рдЖрдИрдкреА (рдирд┐рдЬреА)
  • 172.28.0.0 - рдЖрдИрдкреА рдЯрдиреЗрд▓ рд╕рд░реНрднрд░ рдЗрдиреНрдЯрд░рдлреЗрд╕ (рдирд┐рдЬреА)

рдЬрдмрд╕рдореНрдо UDP рдЬрдбрд╛рди рдЬреАрд╡рд┐рдд рдЫ, рд╕реБрд░реБрдЩ рдХрд╛рд░реНрдп рдХреНрд░рдордорд╛ рд╣реБрдиреЗрдЫ, рддрд░ рдпрджрд┐ рдпреЛ рдмрд┐рдЪреНрдЫреЗрдж рднрдпреЛ рднрдиреЗ, рддрдкрд╛рдИрдВ рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рд╣реБрдиреБрд╣реБрдиреЗрдЫ - рдпрджрд┐ рдЧреНрд░рд╛рд╣рдХрдХреЛ IP: рдкреЛрд░реНрдЯ рдЙрд╕реНрддреИ рд░рд╣рдиреНрдЫ - рдпреЛ рдЬреАрд╡рд┐рдд рд╣реБрдиреЗрдЫ, рдпрджрд┐ рддрд┐рдиреАрд╣рд░реВ рдкрд░рд┐рд╡рд░реНрддрди рднрдПрдорд╛ - рдпреЛ рдлреБрдЯреНрдиреЗрдЫред

рд╕рдмреИ рдХреБрд░рд╛ рдлрд┐рд░реНрддрд╛ рдЧрд░реНрдиреЗ рд╕рдмреИрднрдиреНрджрд╛ рд╕рдЬрд┐рд▓реЛ рддрд░рд┐рдХрд╛ рдХрд░реНрдиреЗрд▓ рдореЛрдбреНрдпреБрд▓рд╣рд░реВ рдЕрдирд▓реЛрдб рдЧрд░реНрдиреБ рд╣реЛ: modprobe -r fou ipip

рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЖрд╡рд╢реНрдпрдХ рдирднрдП рдкрдирд┐, рдХреНрд▓рд╛рдЗрдиреНрдЯрдХреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЖрдИрдкреА рд░ рдкреЛрд░реНрдЯ рд╕рдзреИрдВ рдерд╛рд╣рд╛ рд╣реБрдБрджреИрди рд░ рдкреНрд░рд╛рдпрдГ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╡рд╛ рдЪрд░ рд╣реБрдиреНрдЫрдиреН (NAT рдкреНрд░рдХрд╛рд░рдХреЛ рдЖрдзрд╛рд░рдорд╛)ред рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдЫреЛрдбреНрдиреБрднрдпреЛ рднрдиреЗ encap-dport рд╕рд░реНрднрд░ рд╕рд╛рдЗрдбрдорд╛, рд╕реБрд░реБрдЩрд▓реЗ рдХрд╛рдо рдЧрд░реНрджреИрди, рдпреЛ рд░рд┐рдореЛрдЯ рдЬрдбрд╛рди рдкреЛрд░реНрдЯ рд▓рд┐рди рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрдорд╛рд░реНрдЯ рдЫреИрдиред рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, ipipou рд▓реЗ рдкрдирд┐ рдорджреНрджрдд рдЧрд░реНрди рд╕рдХреНрдЫ, рд╡рд╛ WireGuard рд░ рдЕрд░реВ рдЬрд╕реНрддреИ рдпрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдорджреНрджрдд рдЧрд░реНрди рд╕рдХреНрдЫред

рдпрд╕рд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ?

рдХреНрд▓рд╛рдЗрдиреНрдЯ (рдЬреБрди рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ NAT рдкрдЫрд╛рдбрд┐ рдЫ) рдПрдХ рд╕реБрд░реБрдЩ рдЦреЛрд▓реНрдЫ (рдорд╛рдерд┐рдХреЛ рдЙрджрд╛рд╣рд░рдгрдорд╛ рдЬрд╕реНрддреИ), рд░ рд╕рд░реНрднрд░рдорд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрдпрд╛рдХреЗрдЯ рдкрдард╛рдЙрдБрджрдЫ рддрд╛рдХрд┐ рдпрд╕рд▓реЗ рдпрд╕рдХреЛ рдЫреЗрдЙрдорд╛ рдЯрдиреЗрд▓ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрджрдЫред рд╕реЗрдЯрд┐рдЩреНрд╣рд░реВрдорд╛ рдирд┐рд░реНрднрд░ рдЧрд░реНрджреИ, рдпреЛ рдЦрд╛рд▓реА рдкреНрдпрд╛рдХреЗрдЯ рд╣реБрди рд╕рдХреНрдЫ (рдХреЗрд╡рд▓ рддрд╛рдХрд┐ рд╕рд░реНрднрд░рд▓реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЖрдИрдкреА: рдЬрдбрд╛рди рдкреЛрд░реНрдЯ рджреЗрдЦреНрди рд╕рдХреНрдЫ), рд╡рд╛ рдбрд╛рдЯрд╛ рдЬрд╕рджреНрд╡рд╛рд░рд╛ рд╕рд░реНрднрд░рд▓реЗ рдЧреНрд░рд╛рд╣рдХ рдкрд╣рд┐рдЪрд╛рди рдЧрд░реНрди рд╕рдХреНрдЫред рдбрд╛рдЯрд╛ рд╕реНрдкрд╖реНрдЯ рдкрд╛рдардорд╛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкрд╛рд╕рдлреНрд░реЗрдЬ рд╣реБрди рд╕рдХреНрдЫ (HTTP рдЖрдзрд╛рд░рднреВрдд рдкреНрд░рдорд╛рдгрд╕рдБрдЧ рд╕рдорд╛рдирддрд╛ рджрд┐рдорд╛рдЧрдорд╛ рдЖрдЙрдБрдЫ) рд╡рд╛ рдирд┐рдЬреА рдХреБрдЮреНрдЬреАрд╕рдБрдЧ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдЧрд░рд┐рдПрдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдкрдорд╛ рдбрд┐рдЬрд╛рдЗрди рдЧрд░рд┐рдПрдХреЛ рдбрд╛рдЯрд╛ (HTTP рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдорд╛рддреНрд░ рдмрд▓рд┐рдпреЛ рдЬрд╕реНрддреИ, рдкреНрд░рдХрд╛рд░реНрдп рд╣реЗрд░реНрдиреБрд╣реЛрд╕реНред client_auth рдХреЛрдбрдорд╛)ред

рд╕рд░реНрднрд░рдорд╛ (рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЖрдИрдкреАрдХреЛ рдЫреЗрдЙрдорд╛), рдЬрдм ipipou рд╕реБрд░реБ рд╣реБрдиреНрдЫ, рдпрд╕рд▓реЗ nfqueue рдХреНрдпреБ рд╣реНрдпрд╛рдиреНрдбрд▓рд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрдЫ рд░ рдиреЗрдЯрдлрд┐рд▓реНрдЯрд░ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрджрдЫ рддрд╛рдХрд┐ рдЖрд╡рд╢реНрдпрдХ рдкреНрдпрд╛рдХреЗрдЯрд╣рд░реВ рдЬрд╣рд╛рдБ рд╣реБрдиреБрдкрд░реНрдЫ рддреНрдпрд╣рд╛рдБ рдкрдард╛рдЗрдиреНрдЫ: рдкреНрдпрд╛рдХреЗрдЯрд╣рд░реВ nfqueue рд▓рд╛рдордорд╛ рдЬрдбрд╛рди рд╕реБрд░реБ рдЧрд░реНрджреИ, рд░ [рд▓рдЧрднрдЧ] рдмрд╛рдБрдХреА рд╕рдмреИ рд╕рд┐рдзреИ рд╢реНрд░реЛрддрд╛ FOU рдорд╛ рдЬрд╛рдиреНрдЫрдиреНред

рдерд╛рд╣рд╛ рдирднрдПрдХрд╛рд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐, nfqueue (рд╡рд╛ NetfilterQueue) рдХрд░реНрдиреЗрд▓ рдореЛрдбреНрдпреБрд▓рд╣рд░реВ рдХрд╕рд░реА рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрдиреЗ рднрдиреЗрд░ рдерд╛рд╣рд╛ рдирднрдПрдХрд╛ рдПрдореЗрдЪреНрдпреЛрд░рд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ рд╡рд┐рд╢реЗрд╖ рдХреБрд░рд╛ рд╣реЛ, рдЬрд╕рд▓реЗ рдиреЗрдЯрдлрд┐рд▓реНрдЯрд░ (nftables/iptables) рдХреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдиреЗрдЯрд╡рд░реНрдХ рдкреНрдпрд╛рдХреЗрдЯрд╣рд░реВ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдкреЗрд╕рдорд╛ рд░рд┐рдбрд┐рд░реЗрдХреНрдЯ рдЧрд░реНрди рд░ рддреНрдпрд╣рд╛рдБ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рдЖрджрд┐рдо рдЕрд░реНрде рд╣рд╛рддрдорд╛ рдЫ: рдкрд░рд┐рдорд╛рд░реНрдЬрди рдЧрд░реНрдиреБрд╣реЛрд╕реН (рд╡реИрдХрд▓реНрдкрд┐рдХ) рд░ рдпрд╕рд▓рд╛рдИ рдХрд░реНрдиреЗрд▓рдорд╛ рдлрд┐рд░реНрддрд╛ рджрд┐рдиреБрд╣реЛрд╕реН, рд╡рд╛ рдЦрд╛рд░реЗрдЬ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рдХреЗрд╣реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рднрд╛рд╖рд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рддреНрдпрд╣рд╛рдБ nfqueue рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдмрд╛рдЗрдиреНрдбрд┐рдЩрд╣рд░реВ рдЫрдиреН, bash рдХреЛ рд▓рд╛рдЧрд┐ рддреНрдпрд╣рд╛рдБ рдХреБрдиреИ рдкрдирд┐ рдерд┐рдПрди (рд╣реЗ, рдЕрдЪрдореНрдордХреЛ рдХреБрд░рд╛ рд╣реЛрдЗрди), рдореИрд▓реЗ python рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрдкрд░реНтАНрдпреЛ: ipipou рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫред NetfilterQueue.

рдпрджрд┐ рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрди рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЫреИрди рднрдиреЗ, рдпреЛ рдЪреАрдЬ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рддрдкрд╛рдИрд▓реЗ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдХрдо рд╕реНрддрд░рдорд╛ рдкреНрдпрд╛рдХреЗрдЯрд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдЖрдлреНрдиреЛ рддрд░реНрдХрд▓рд╛рдИ рддреБрд▓рдирд╛рддреНрдордХ рд░реВрдкрдорд╛ рдЫрд┐рдЯреЛ рд░ рд╕рдЬрд┐рд▓реИ рд╕рдВрдЧ рдмрдирд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдкреНрд░реЛрдЯреЛрдХрд▓рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рд╡рд╛ рдЧреИрд░-рдорд╛рдирдХ рд╡реНрдпрд╡рд╣рд╛рд░рдХреЛ рд╕рд╛рде рд╕реНрдерд╛рдиреАрдп рд░ рд░рд┐рдореЛрдЯ рд╕реЗрд╡рд╛рд╣рд░реВ рдЯреНрд░реЛрд▓ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рдХрдЪреНрдЪрд╛ рд╕рдХреЗрдЯрд╣рд░реВ nfqueue рд╕рдБрдЧ рд╣рд╛рддрдорд╛ рд╣рд╛рдд рдорд┐рд▓рд╛рдПрд░ рдХрд╛рдо рдЧрд░реНрдЫрдиреН, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдЬрдм рд╕реБрд░реБрдЩ рдкрд╣рд┐рд▓реЗ рдиреИ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХреЛ рдЫ рд░ FOU рд▓реЗ рдЗрдЪреНрдЫрд┐рдд рдкреЛрд░реНрдЯрдорд╛ рд╕реБрдирд┐рд░рд╣реЗрдХреЛ рдЫ, рддрдкрд╛рдИрдВрд▓реЗ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдкрдорд╛ рдЙрд╣реА рдкреЛрд░реНрдЯрдмрд╛рдЯ рдкреНрдпрд╛рдХреЗрдЯ рдкрдард╛рдЙрди рд╕рдХреНрд╖рдо рд╣реБрдиреБрд╣реБрдиреЗ рдЫреИрди - рдпреЛ рд╡реНрдпрд╕реНрдд рдЫ, рддрд░ рддрдкрд╛рдИрд▓реЗ рдХрдЪреНрдЪрд╛ рд╕рдХреЗрдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЕрдирд┐рдпрдорд┐рдд рд░реВрдкрдорд╛ рдЙрддреНрдкрдиреНрди рдЧрд░рд┐рдПрдХреЛ рдкреНрдпрд╛рдХреЗрдЯ рд╕реАрдзреИ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдиреНрдЯрд░рдлреЗрд╕рдорд╛ рдкрдард╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдпрджреНрдпрдкрд┐ рдпрд╕реНрддреЛ рдкреНрдпрд╛рдХреЗрдЯ рдЙрддреНрдкрдиреНрди рдЧрд░реНрди рдЕрд▓рд┐ рдмрдвреА рдЯрд┐рдВрдХрд░рд┐рдЩ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджрдЫред рдпрд╕рд░реА ipipou рдорд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рднрдПрдХреЛ рдкреНрдпрд╛рдХреЗрдЯрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдиреНрдЫрдиреНред

рдХрд┐рдирдХрд┐ ipipou рд▓реЗ рдЬрдбрд╛рдирдмрд╛рдЯ рдкрд╣рд┐рд▓реЛ рдкреНрдпрд╛рдХреЗрдЯрд╣рд░реВ рдорд╛рддреНрд░ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрджрдЫ (рд░ рдЬрдбрд╛рди рд╕реНрдерд╛рдкрдирд╛ рд╣реБрдиреБ рдЕрдШрд┐ рд▓рд╛рдордорд╛ рдЪреБрд╣рд╛рд╡рдЯ рдЧрд░реНрди рд╡реНрдпрд╡рд╕реНрдерд┐рдд), рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрди рд▓рдЧрднрдЧ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реБрдБрджреИрдиред

ipipou рд╕рд░реНрднрд░рд▓реЗ рдкреНрд░рдорд╛рдгреАрдХреГрдд рдкреНрдпрд╛рдХреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗ рдмрд┐рддреНрддрд┐рдХреИ, рдПрдЙрдЯрд╛ рд╕реБрд░реБрдЩ рд╕рд┐рд░реНрдЬрдирд╛ рд╣реБрдиреНрдЫ рд░ рдЬрдбрд╛рдирдорд╛ рд░рд╣реЗрдХрд╛ рд╕рдмреИ рдкрдЫрд┐рд▓реНрд▓рд╛ рдкреНрдпрд╛рдХреЗрдЯрд╣рд░реВ рдкрд╣рд┐рд▓реЗ рдиреИ рдХрд░реНрдиреЗрд▓рджреНрд╡рд╛рд░рд╛ nfqueue рд▓рд╛рдИ рдмрд╛рдЗрдкрд╛рд╕ рдЧрд░реЗрд░ рдкреНрд░рд╢реЛрдзрди рдЧрд░рд┐рдиреНрдЫред рдпрджрд┐ рдЬрдбрд╛рди рдЕрд╕рдлрд▓ рднрдпреЛ рднрдиреЗ, рддреНрдпрд╕рдкрдЫрд┐ рдЕрд░реНрдХреЛрдХреЛ рдкрд╣рд┐рд▓реЛ рдкреНрдпрд╛рдХреЗрдЯ nfqueue рд▓рд╛рдордорд╛ рдкрдард╛рдЗрдиреЗрдЫ, рд╕реЗрдЯрд┐рдЩрд╣рд░реВрдорд╛ рдирд┐рд░реНрднрд░ рдЧрд░реНрджрдЫ, рдпрджрд┐ рдпреЛ рдкреНрд░рдорд╛рдгреАрдХрд░рдгрдХреЛ рд╕рд╛рде рдкреНрдпрд╛рдХреЗрдЯ рд╣реЛрдЗрди, рддрд░ рдЕрдиреНрддрд┐рдо рд╕рдореНрдЭрдирд╛ IP рд░ рдЧреНрд░рд╛рд╣рдХ рдкреЛрд░реНрдЯрдмрд╛рдЯ, рдпрд╕рд▓рд╛рдИ рдпрд╛ рдд рдкрд╛рд░рд┐рдд рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдорд╛ рд╡рд╛ рдЦрд╛рд░реЗрдЬред рдпрджрд┐ рдПрдХ рдкреНрд░рдорд╛рдгреАрдХреГрдд рдкреНрдпрд╛рдХреЗрдЯ рдирдпрд╛рдБ рдЖрдИрдкреА рд░ рдкреЛрд░реНрдЯрдмрд╛рдЯ рдЖрдЙрдБрдЫ рднрдиреЗ, рдЯрдиреЗрд▓ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдкреБрди: рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХреЛ рдЫред

NAT рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрджрд╛ рд╕рд╛рдорд╛рдиреНрдп IPIP-over-FOU рдорд╛ рдЕрд░реНрдХреЛ рд╕рдорд╕реНрдпрд╛ рдЫ - UDP рдорд╛ рдПрдЙрдЯреИ IP рд╕рдВрдЧ рдЗрдирдХреНрдпрд╛рдкреНрд╕реБрд▓реЗрдЯреЗрдб рджреБрдИ IPIP рдЯрдиреЗрд▓рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЕрд╕рдореНрднрд╡ рдЫ, рдХрд┐рдирднрдиреЗ FOU рд░ IPIP рдореЛрдбреНрдпреБрд▓рд╣рд░реВ рдПрдХрдЕрд░реНрдХрд╛рдмрд╛рдЯ рдПрдХрджрдо рдЕрд▓рдЧ рдЫрдиреНред рддреАред рдПрдЙрдЯреИ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЖрдИрдкреА рдкрдЫрд┐ рдЧреНрд░рд╛рд╣рдХрд╣рд░реВрдХреЛ рдПрдХ рдЬреЛрдбреА рдпрд╕ рддрд░рд┐рдХрд╛рд▓реЗ рдПрдЙрдЯреИ рд╕рд░реНрднрд░рдорд╛ рдПрдХрд╕рд╛рде рдЬрдбрд╛рди рдЧрд░реНрди рд╕рдХреНрд╖рдо рд╣реБрдиреЗрдЫреИрдиред рднрд╡рд┐рд╖реНрдпрдорд╛, рд╕рдореНрднрд╡рддрдГ, рдпреЛ рдХрд░реНрдиреЗрд▓ рд╕реНрддрд░ рдорд╛ рд╣рд▓ рд╣реБрдиреЗрдЫ, рддрд░ рдпреЛ рдирд┐рд╢реНрдЪрд┐рдд рдЫреИрдиред рдпрд╕ рдмреАрдЪрдорд╛, NAT рд╕рдорд╕реНрдпрд╛рд╣рд░реВ NAT рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ - рдпрджрд┐ рдпреЛ рд╣реБрдиреНрдЫ рдХрд┐ IP рдареЗрдЧрд╛рдирд╛рд╣рд░реВрдХреЛ рдПрдХ рдЬреЛрдбреА рдкрд╣рд┐рд▓реЗ рдиреИ рдЕрд░реНрдХреЛ рд╕реБрд░реБрдЩ рджреНрд╡рд╛рд░рд╛ рдХрдмреНрдЬрд╛ рдЧрд░рд┐рдПрдХреЛ рдЫ рднрдиреЗ, ipipou рд▓реЗ NAT рд▓рд╛рдИ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХрдмрд╛рдЯ рд╡реИрдХрд▓реНрдкрд┐рдХ рдирд┐рдЬреА IP рдорд╛ рдЧрд░реНрдиреЗрдЫ, voila! - рдкреЛрд░реНрдЯрд╣рд░реВ рд╕рдорд╛рдкреНрдд рдирднрдПрд╕рдореНрдо рддрдкрд╛рдЗрдБ рд╕реБрд░реБрдЩрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

рдХрд┐рдирднрдиреЗ рдЬрдбрд╛рдирдорд╛ рд╕рдмреИ рдкреНрдпрд╛рдХреЗрдЯрд╣рд░реВ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдЫреИрдирдиреН, рддрдм рдпреЛ рд╕рд╛рдзрд╛рд░рдг рд╕реБрд░рдХреНрд╖рд╛ MITM рдХреЛ рд▓рд╛рдЧреА рдХрдордЬреЛрд░ рдЫ, рддреНрдпрд╕реИрд▓реЗ рдпрджрд┐ рдЧреНрд░рд╛рд╣рдХ рд░ рд╕рд░реНрднрд░ рдмреАрдЪрдХреЛ рдмрд╛рдЯреЛрдорд╛ рдЦрд▓рдирд╛рдпрдХ рд▓реБрдХреЗрдХреЛ рдЫ рдЬрд╕рд▓реЗ рдЯреНрд░рд╛рдлрд┐рдХ рд╕реБрдиреНрди рд╕рдХреНрдЫ рд░ рдпрд╕рд▓рд╛рдИ рд╣реЗрд░рдлреЗрд░ рдЧрд░реНрди рд╕рдХреНрдЫ, рдЙрд╕рд▓реЗ рдкреНрд░рдорд╛рдгреАрдХреГрдд рдкреНрдпрд╛рдХреЗрдЯрд╣рд░реВ рдкреБрди: рдирд┐рд░реНрджреЗрд╢рд┐рдд рдЧрд░реНрди рд╕рдХреНрдЫред рдЕрд░реНрдХреЛ рдареЗрдЧрд╛рдирд╛ рд░ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реЛрд╕реНрдЯрдмрд╛рдЯ рд╕реБрд░реБрдЩ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рдпрджрд┐ рдХреЛрд╣реАрд╕рдБрдЧ рдореБрдЦреНрдп рдЯреНрд░рд╛рдлрд┐рдХрдХреЛ рдареВрд▓реЛ рднрд╛рдЧ рдЫреЛрдбреНрджрд╛ рдпрд╕рд▓рд╛рдИ рдХрд╕рд░реА рд╕рдорд╛рдзрд╛рди рдЧрд░реНрдиреЗ рднрдиреНрдиреЗ рдмрд╛рд░реЗ рд╡рд┐рдЪрд╛рд░ рдЫ рднрдиреЗ, рдмреЛрд▓реНрди рдирд╣рд┐рдЪрдХрд┐рдЪрд╛рдЙрдиреБрд╣реЛрд╕реНред

рд╡реИрд╕реЗ, UDP рдорд╛ encapsulation рд▓реЗ рдЖрдлреИрд▓рд╛рдИ рдзреЗрд░реИ рд░рд╛рдореНрд░реЛ рд╕рд╛рдмрд┐рдд рдЧрд░реЗрдХреЛ рдЫред IP рдорд╛ encapsulation рдХреЛ рддреБрд▓рдирд╛рдорд╛, UDP рд╣реЗрдбрд░ рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдУрднрд░рд╣реЗрдб рдХреЛ рдмрд╛рд╡рдЬреБрдж рдпреЛ рдзреЗрд░реИ рдЕрдзрд┐рдХ рд╕реНрдерд┐рд░ рд░ рдЕрдХреНрд╕рд░ рдЫрд┐рдЯреЛ рдЫред рдпреЛ рддрдереНрдпрдХреЛ рдХрд╛рд░рдг рд╣реЛ рдХрд┐ рдЗрдиреНрдЯрд░рдиреЗрдЯрдорд╛ рдзреЗрд░реИ рд╣реЛрд╕реНрдЯрд╣рд░реВрд▓реЗ рдХреЗрд╡рд▓ рддреАрди рд╕рдмреИрднрдиреНрджрд╛ рд▓реЛрдХрдкреНрд░рд┐рдп рдкреНрд░реЛрдЯреЛрдХрд▓рд╣рд░реВрд╕рдБрдЧ рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдЫрдиреН: TCP, UDP, ICMPред рдореВрд░реНрдд рднрд╛рдЧрд▓реЗ рдЕрд░реВ рд╕рдмреИ рдХреБрд░рд╛рд▓рд╛рдИ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдЦрд╛рд░реЗрдЬ рдЧрд░реНрди рд╕рдХреНрдЫ, рд╡рд╛ рдпрд╕рд▓рд╛рдИ рдЕрдЭ рдмрд┐рд╕реНрддрд╛рд░реИ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрди рд╕рдХреНрдЫ, рдХрд┐рдирднрдиреЗ рдпреЛ рдпреА рддреАрдирдХрд╛ рд▓рд╛рдЧрд┐ рдорд╛рддреНрд░ рдЕрдиреБрдХреВрд▓рд┐рдд рдЫред

рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдпрд╣реА рдХрд╛рд░рдгрд▓реЗ рдЧрд░реНрджрд╛ рдХреНрд╡рд┐рдХ, рдЬрд╕рдорд╛ HTTP/3 рдЖрдзрд╛рд░рд┐рдд рдЫ, UDP рдХреЛ рд╢реАрд░реНрд╖рдорд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, IP рдХреЛ рд╢реАрд░реНрд╖рдорд╛ рд╣реЛрдЗрдиред

рдареАрдХ рдЫ, рдкрд░реНрдпрд╛рдкреНрдд рд╢рдмреНрджрд╣рд░реВ, рдпреЛ "рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрд╕рд╛рд░" рдорд╛ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрджрдЫ рднрдиреЗрд░ рд╣реЗрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕рдордп рд╣реЛред

рдпреБрджреНрдз

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрд╕рд╛рд░рдХреЛ рдЕрдиреБрдХрд░рдг рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдпреЛ iperf3ред рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛рдХреЛ рдирдЬрд┐рдХрдХреЛ рдбрд┐рдЧреНрд░реАрдХреЛ рд╕рдиреНрджрд░реНрднрдорд╛, рдпреЛ рд▓рдЧрднрдЧ Minecraft рдорд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрд╕рд╛рд░рдХреЛ рдЕрдиреБрдХрд░рдг рдЧрд░реНрдиреЗ рдЬрд╕реНрддреИ рд╣реЛ, рддрд░ рдЕрд╣рд┐рд▓реЗрдХреЛ рд▓рд╛рдЧрд┐ рдпреЛ рдЧрд░реНрдиреЗрдЫред

рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛рдорд╛ рд╕рд╣рднрд╛рдЧреАрд╣рд░реБ:

  • рд╕рдиреНрджрд░реНрдн рдореБрдЦреНрдп рдЪреНрдпрд╛рдирд▓
  • рдпрд╕ рд▓реЗрдЦрдХреЛ рдирд╛рдпрдХ ipipou рд╣реЛ
  • рдкреНрд░рдорд╛рдгреАрдХрд░рдгрдХреЛ рд╕рд╛рде OpenVPN рддрд░ рдХреБрдиреИ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдЫреИрди
  • OpenVPN рд╕рдмреИ рд╕рдорд╛рд╡реЗрд╢реА рдореЛрдбрдорд╛
  • PresharedKey рдмрд┐рдирд╛ WireGuard, MTU=1440 рд╕рдБрдЧ (IPv4-рдорд╛рддреНрд░)

Geeks рдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рд╛рд╡рд┐рдзрд┐рдХ рдбреЗрдЯрд╛
рдореЗрдЯреНрд░рд┐рдХрд╣рд░реВ рдирд┐рдореНрди рдЖрджреЗрд╢рд╣рд░реВрд╕рдБрдЧ рд▓рд┐рдЗрдиреНрдЫ:

рдЧреНрд░рд╛рд╣рдХ рдорд╛:

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", ╤З╤В╨╛╨▒╤Л ╨╗╨╕╤И╨╜╨╕╨╡ ╨┐╨░╨║╨╡╤В╤Л ╨╜╨╡ ╨┐╨╗╨╛╨┤╨╕╤В╤М ╨╕ ╨╜╨╡ ╨┐╨╛╤А╤В╨╕╤В╤М ╨┐╤А╨╛╨╕╨╖╨▓╨╛╨┤╨╕╤В╨╡╨╗╤М╨╜╨╛╤Б╤В╤М.

рдЯреАрд╕реАрдкреА

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

рд╕рд░реНрднрд░рдорд╛ (рдЧреНрд░рд╛рд╣рдХрд╕рдБрдЧ рдПрдХреИрд╕рд╛рде рдЪрд▓реНрдЫ):

UDP

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-рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди

рд╡рд╛рдпрд░рдЧрд╛рд░реНрдб
рд╕рд░реНрднрд░
/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

╨а╨╡╨╖╤Г╨╗╤М╤В╨░╤В╤Л

рдирдо рдХреБрд░реВрдк рдЪрд┐рдиреНрд╣
рд╕рд░реНрднрд░ CPU рд▓реЛрдб рдзреЗрд░реИ рд╕реВрдЪрдХ рдЫреИрди, рдХрд┐рдирднрдиреЗ... рддреНрдпрд╣рд╛рдБ рдзреЗрд░реИ рдЕрдиреНрдп рд╕реЗрд╡рд╛рд╣рд░реВ рдЪрд▓рд┐рд░рд╣реЗрдХрд╛ рдЫрдиреН, рдХрд╣рд┐рд▓реЗрдХрд╛рд╣реАрдВ рддрд┐рдиреАрд╣рд░реВрд▓реЗ рд╕реНрд░реЛрддрд╣рд░реВ рдЦрд╛рдиреНрдЫ:

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 рдЪреНрдпрд╛рдирд▓

ipipou: рдХреЗрд╡рд▓ рдПрдХ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд╕реБрд░реБрдЩ рднрдиреНрджрд╛ рдмрдвреА

ipipou: рдХреЗрд╡рд▓ рдПрдХ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд╕реБрд░реБрдЩ рднрдиреНрджрд╛ рдмрдвреА

рдЪреНрдпрд╛рдирд▓ рдкреНрд░рддрд┐ 1 рдЖрд╢рд╛рд╡рд╛рджреА Gbps

ipipou: рдХреЗрд╡рд▓ рдПрдХ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд╕реБрд░реБрдЩ рднрдиреНрджрд╛ рдмрдвреА

ipipou: рдХреЗрд╡рд▓ рдПрдХ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд╕реБрд░реБрдЩ рднрдиреНрджрд╛ рдмрдвреА

рд╕рдмреИ рдЕрд╡рд╕реНрдерд╛рдорд╛, ipipou рдЖрдзрд╛рд░ рдЪреНрдпрд╛рдирд▓рдХреЛ рдкреНрд░рджрд░реНрд╢рдирдорд╛ рдзреЗрд░реИ рдирдЬрд┐рдХ рдЫ, рдЬреБрди рдЙрддреНрдХреГрд╖реНрдЯ рдЫ!

рдЕрдирдЗрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб openvpn рдЯрдиреЗрд▓рд▓реЗ рджреБрд╡реИ рдЕрд╡рд╕реНрдерд╛рдорд╛ рдзреЗрд░реИ рдЕрдиреМрдареЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЧрд░реНрдпреЛред

рдпрджрд┐ рдХрд╕реИрд▓реЗ рдпрд╕рд▓рд╛рдИ рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрди рдЬрд╛рдБрджреИ рд╣реБрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рдпреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реБрдиреНрди рд░реЛрдЪрдХ рд╣реБрдиреЗрдЫред

IPv6 рд░ NetPrickle рд╣рд╛рдореАрд╕рдБрдЧ рд╣реБрди рд╕рдХреНрдЫ!

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди