ipipou: рдлрдХреНрдд рдПрдХ рдЕрдирдПрдирдХреНрд░рд┐рдкреНрдЯреЗрдб рдмреЛрдЧрджреНрдпрд╛рдкреЗрдХреНрд╖рд╛ рдЕрдзрд┐рдХ

рдЖрдореНрд╣реА IPv6 рдЪреНрдпрд╛ рджреЗрд╡рд╛рд▓рд╛ рдХрд╛рдп рдореНрд╣рдгрдд рдЖрд╣реЛрдд?

ipipou: рдлрдХреНрдд рдПрдХ рдЕрдирдПрдирдХреНрд░рд┐рдкреНрдЯреЗрдб рдмреЛрдЧрджреНрдпрд╛рдкреЗрдХреНрд╖рд╛ рдЕрдзрд┐рдХ
рддреЗ рдмрд░реЛрдмрд░ рдЖрд╣реЗ, рдЖрдореНрд╣реА рдЖрдЬ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рдирдЪреНрдпрд╛ рджреЗрд╡рд╛рд▓рд╛ рддреЗрдЪ рдореНрд╣рдгреВ.

рдпреЗрдереЗ рдЖрдкрдг рдПрдирдХреНрд░рд┐рдкреНрдЯ рди рдХреЗрд▓реЗрд▓реНрдпрд╛ IPv4 рдмреЛрдЧрджреНрдпрд╛рдмрджреНрджрд▓ рдмреЛрд▓реВ, рдкрд░рдВрддреБ тАЬрдЙрдмрджрд╛рд░ рджрд┐рд╡рд╛тАЭ рдмрджреНрджрд▓ рдирд╛рд╣реА рддрд░ рдЖрдзреБрдирд┐рдХ тАЬLEDтАЭ рдмрджреНрджрд▓ рдмреЛрд▓реВ. рдЖрдгрд┐ рдпреЗрдереЗ рд░реЙ рд╕реЙрдХреЗрдЯреНрд╕ рдЪрдордХрдд рдЖрд╣реЗрдд, рдЖрдгрд┐ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдЪреНрдпрд╛ рдЬрд╛рдЧреЗрдд рдкреЕрдХреЗрдЯреНрд╕рд╕рд╣ рдХрд╛рдо рдЪрд╛рд▓реВ рдЖрд╣реЗ.

рдкреНрд░рддреНрдпреЗрдХ рдЪрд╡ рдЖрдгрд┐ рд░рдВрдЧрд╛рд╕рд╛рдареА рдПрди рдЯрдиреЗрд▓рд┐рдВрдЧ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдЖрд╣реЗрдд:

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

рдкрд░рдВрддреБ рдореА рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЖрд╣реЗ, рдореНрд╣рдгреВрди рдореА рдлрдХреНрдд рдПрдХрд╛ рдЕрдВрд╢рд╛рдиреЗ N рд╡рд╛рдврд╡реАрди рдЖрдгрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдЪрд╛ рд╡рд┐рдХрд╛рд╕ рдХреЙрдорд░рд╕рдВрдЯ рдбреЗрд╡реНрд╣рд▓рдкрд░рд╡рд░ рд╕реЛрдбреЗрди.

рдПрдХрд╛ рдЕрдЬрдиреНрдореЗ рдордзреНрдпреЗ рдкреНрд░рдХрд▓реНрдкрдореА рдЖрддрд╛ рдЬреЗ рдХрд░рдд рдЖрд╣реЗ рддреЗ рдореНрд╣рдгрдЬреЗ рдмрд╛рд╣реЗрд░реВрди NAT рдЪреНрдпрд╛ рдорд╛рдЧреЗ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдпрдЬрдорд╛рдирд╛рдВрдкрд░реНрдпрдВрдд рдкреЛрд╣реЛрдЪрдгреЗ. рдпрд╛рд╕рд╛рдареА рдкреНрд░реМрдв рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреАрд╕рд╣ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╡рд╛рдкрд░реВрди, рдореА рддреЛрдлреЗрддреВрди рдЪрд┐рдордгреНрдпрд╛рдВрдирд╛ рдЧреЛрд│реНрдпрд╛ рдШрд╛рд▓рдгреНрдпрд╛рд╕рд╛рд░рдЦреЗ рдЖрд╣реЗ рд╣реА рднрд╛рд╡рдирд╛ рдЭрдЯрдХреВрди рдЯрд╛рдХреВ рд╢рдХрдд рдирд╛рд╣реА. рдХрд╛рд░рдг рдмреЛрдЧрджреНрдпрд╛рдЪрд╛ рд╡рд╛рдкрд░ рдмрд╣реБрддреЗрдХ рднрд╛рдЧ NAT-e рдордзреНрдпреЗ рдЫрд┐рджреНрд░ рдкрд╛рдбрдгреНрдпрд╛рд╕рд╛рдареА рдХреЗрд▓рд╛ рдЬрд╛рддреЛ, рдЕрдВрддрд░реНрдЧрдд рд░рд╣рджрд╛рд░реА рд╕рд╣рд╕рд╛ рдПрдирдХреНрд░рд┐рдкреНрдЯреЗрдб рджреЗрдЦреАрд▓ рдЕрд╕рддреЗ, рдкрд░рдВрддреБ рддрд░реАрд╣реА рддреЗ HTTPS рдордзреНрдпреЗ рдмреБрдбрддрд╛рдд.

рд╡рд┐рд╡рд┐рдз рдЯрдиреЗрд▓рд┐рдВрдЧ рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдЪреЗ рд╕рдВрд╢реЛрдзрди рдХрд░рдд рдЕрд╕рддрд╛рдирд╛, рдорд╛рдЭреНрдпрд╛ рдЖрддреАрд▓ рдкрд░рдлреЗрдХреНрд╢рдирд┐рд╕реНрдЯрдЪреЗ рд▓рдХреНрд╖ рддреНрдпрд╛рдЪреНрдпрд╛ рдХрд┐рдорд╛рди рдУрд╡реНрд╣рд░рд╣реЗрдбрдореБрд│реЗ рд╡рд╛рд░рдВрд╡рд╛рд░ IPIP рдХрдбреЗ рд╡реЗрдзрд▓реЗ рдЧреЗрд▓реЗ. рдкрд░рдВрддреБ рдорд╛рдЭреНрдпрд╛ рдХрд╛рд░реНрдпрд╛рдВрд╕рд╛рдареА рдпрд╛рдд рджреАрдб рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдХрдорддрд░рддрд╛ рдЖрд╣реЗрдд:

  • рдпрд╛рд╕рд╛рдареА рджреЛрдиреНрд╣реА рдмрд╛рдЬреВрдВрдирд╛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ IP рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗрдд,
  • рдЖрдгрд┐ рддреБрдордЪреНрдпрд╛рд╕рд╛рдареА рдХреЛрдгрддреЗрд╣реА рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдирд╛рд╣реА.

рдореНрд╣рдгреВрди, рдкрд░рдлреЗрдХреНрд╢рдирд┐рд╕реНрдЯрд▓рд╛ рдкрд░рдд рдХрд╡рдЯреАрдЪреНрдпрд╛ рдЧрдбрдж рдХреЛрдкрд▒реНрдпрд╛рдд рдХрд┐рдВрд╡рд╛ рдЬрд┐рдереЗ рддреЛ рддрд┐рдереЗ рдмрд╕рддреЛ рддрд┐рдереЗ рдкрд░рдд рдиреЗрдгреНрдпрд╛рдд рдЖрд▓рд╛.

рдЖрдгрд┐ рдордЧ рдПрдХ рджрд┐рд╡рд╕, рд╡рд░ рд▓реЗрдЦ рд╡рд╛рдЪрддрд╛рдирд╛ рдореВрд│ рд╕рдорд░реНрдерд┐рдд рдмреЛрдЧрджреЗ рд▓рд┐рдирдХреНрд╕рдордзреНрдпреЗ рдорд▓рд╛ FOU (Foo-over-UDP) рдЖрдврд│рд▓реЗ, рдореНрд╣рдгрдЬреЗ. рдХрд╛рд╣реАрд╣реА рдЕрд╕реЛ, UDP рдордзреНрдпреЗ рдЧреБрдВрдбрд╛рд│рд▓реЗрд▓реЗ. рдЖрддрд╛рдкрд░реНрдпрдВрдд, рдлрдХреНрдд IPIP рдЖрдгрд┐ GUE (рдЬреЗрдиреЗрд░рд┐рдХ UDP рдПрдиреНрдХреЕрдкреНрд╕реБрд▓реЗрд╢рди) рд╕рдорд░реНрдерд┐рдд рдЖрд╣реЗрдд.

тАЬрд╣реА рдЖрд╣реЗ рдЪрд╛рдВрджреАрдЪреА рдмреБрд▓реЗрдЯ! рдорд╛рдЭреНрдпрд╛рд╕рд╛рдареА рдПрдХ рд╕рд╛рдзрд╛ IPIP рдкреБрд░реЗрд╕рд╛ рдЖрд╣реЗ.тАЭ - рдорд▓рд╛ рд╡рд╛рдЯреНрдд.

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

рдпрд╛ рджреАрдб рд╕рдорд╕реНрдпреЗрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЙрдкрдпреБрдХреНрддрддрд╛ рдЬрдиреНрдорд╛рд▓рд╛ рдЖрд▓реА ipipou. рд╣реЗ рдХрд░реНрдирд▓ FOU рдЪреНрдпрд╛ рдСрдкрд░реЗрд╢рдирдордзреНрдпреЗ рд╡реНрдпрддреНрдпрдп рди рдЖрдгрддрд╛, рд░рд┐рдореЛрдЯ рд╣реЛрд╕реНрдЯ рдСрдереЗрдВрдЯрд┐рдХреЗрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╣реЛрдордореЗрдб рдореЗрдХреЕрдирд┐рдЭрдо рд▓рд╛рдЧреВ рдХрд░рддреЗ, рдЬреЗ рдХрд░реНрдирд▓ рд╕реНрдкреЗрд╕рдордзреНрдпреЗ рдкреЕрдХреЗрдЯреНрд╕рд╡рд░ рдЬрд▓рдж рдЖрдгрд┐ рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдиреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░реЗрд▓.

рдЖрдореНрд╣рд╛рд▓рд╛ рддреБрдордЪреНрдпрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯрдЪреА рдЧрд░рдЬ рдирд╛рд╣реА!

рдареАрдХ рдЖрд╣реЗ, рдЬрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рдХреНрд▓рд╛рдпрдВрдЯрдЪреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкреЛрд░реНрдЯ рдЖрдгрд┐ рдЖрдпрдкреА рдорд╛рд╣рд┐рдд рдЕрд╕реЗрд▓ (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рддреНрдпрд╛рдорд╛рдЧреАрд▓ рдкреНрд░рддреНрдпреЗрдХрдЬрдг рдХреЛрдареЗрд╣реА рдЬрд╛рдд рдирд╛рд╣реА, NAT 1-рдЗрди-1 рдкреЛрд░реНрдЯреНрд╕ рдореЕрдк рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рддреЛ), рддреБрдореНрд╣реА рдЖрдпрдкреАрдЖрдпрдкреА-рдУрд╡реНрд╣рд░-рдПрдлрдУрдпреВ рдмреЛрдЧрджрд╛ рддрдпрд╛рд░ рдХрд░реВ рд╢рдХрддрд╛. рдХреЛрдгрддреНрдпрд╛рд╣реА рд╕реНрдХреНрд░рд┐рдкреНрдЯрд╢рд┐рд╡рд╛рдп рдЦрд╛рд▓реАрд▓ рдЖрджреЗрд╢.

рд╕рд░реНрд╡реНрд╣рд░рд╡рд░:

# ╨Я╨╛╨┤╨│╤А╤Г╨╖╨╕╤В╤М ╨╝╨╛╨┤╤Г╨╗╤М ╤П╨┤╤А╨░ 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 - рдХреНрд▓рд╛рдпрдВрдЯрдЪрд╛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ IP
  • 192.168.0.2 тАФ рдХреНрд▓рд╛рдпрдВрдЯ IP рдЗрдВрдЯрд░рдлреЗрд╕ eth0 рд▓рд╛ рдирд┐рдпреБрдХреНрдд рдХреЗрд▓реЗ рдЖрд╣реЗ
  • 10001 - FOU рд╕рд╛рдареА рд╕реНрдерд╛рдирд┐рдХ рдХреНрд▓рд╛рдпрдВрдЯ рдкреЛрд░реНрдЯ
  • 20001 - FOU рд╕рд╛рдареА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреНрд▓рд╛рдпрдВрдЯ рдкреЛрд░реНрдЯ
  • 10000 - FOU рд╕рд╛рдареА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рд░реНрд╡реНрд╣рд░ рдкреЛрд░реНрдЯ
  • encap-csum тАФ encapsulated UDP рдкреЕрдХреЗрдЯрдордзреНрдпреЗ UDP рдЪреЗрдХрд╕рдо рдЬреЛрдбрдгреНрдпрд╛рдЪрд╛ рдкрд░реНрдпрд╛рдп; рджреНрд╡рд╛рд░реЗ рдмрджрд▓рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ noencap-csum, рдЙрд▓реНрд▓реЗрдЦ рдирд╛рд╣реА, рдЕрдЦрдВрдбрддрд╛ рдЖрдзреАрдЪ рдмрд╛рд╣реНрдп рдПрдиреНрдХреЕрдкреНрд╕реБрд▓реЗрд╢рди рд▓реЗрдпрд░рджреНрд╡рд╛рд░реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХреЗрд▓реА рдЬрд╛рддреЗ (рдкреЕрдХреЗрдЯ рдмреЛрдЧрджреНрдпрд╛рдЪреНрдпрд╛ рдЖрдд рдЕрд╕рддрд╛рдирд╛)
  • eth0 тАФ рд╕реНрдерд╛рдирд┐рдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдЬреНрдпрд╛рдордзреНрдпреЗ ipip рдмреЛрдЧрджрд╛ рдмрд╛рдВрдзрд▓рд╛ рдЬрд╛рдИрд▓
  • 172.28.0.1 тАФ рдХреНрд▓рд╛рдпрдВрдЯ рдЯрдиреЗрд▓ рдЗрдВрдЯрд░рдлреЗрд╕рдЪрд╛ IP (рдЦрд╛рдЬрдЧреА)
  • 172.28.0.0 тАФ рдЖрдпрдкреА рдЯрдиреЗрд▓ рд╕рд░реНрд╡реНрд╣рд░ рдЗрдВрдЯрд░рдлреЗрд╕ (рдЦрд╛рдЬрдЧреА)

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

рд╕рд░реНрд╡ рдХрд╛рд╣реА рдкрд░рдд рдХрд░рдгреНрдпрд╛рдЪрд╛ рд╕рд░реНрд╡рд╛рдд рд╕реЛрдкрд╛ рдорд╛рд░реНрдЧ рдореНрд╣рдгрдЬреЗ рдХрд░реНрдирд▓ рдореЙрдбреНрдпреВрд▓реНрд╕ рдЕрдирд▓реЛрдб рдХрд░рдгреЗ: modprobe -r fou ipip

рдкреНрд░рдорд╛рдгреАрдХрд░рдгрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╕рд▓реА рддрд░реАрд╣реА, рдХреНрд▓рд╛рдпрдВрдЯрдЪреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ IP рдЖрдгрд┐ рдкреЛрд░реНрдЯ рдиреЗрд╣рдореА рдЬреНрдЮрд╛рдд рдирд╕рддрд╛рдд рдЖрдгрд┐ рдмрд╣реБрддреЗрдХ рд╡реЗрд│рд╛ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдХрд┐рдВрд╡рд╛ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдЕрд╕рддрд╛рдд (NAT рдкреНрд░рдХрд╛рд░рд╛рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди). рдЖрдкрдг рд╡рдЧрд│рд▓реНрдпрд╛рд╕ encap-dport рд╕рд░реНрд╡реНрд╣рд░рдЪреНрдпрд╛ рдмрд╛рдЬреВрдиреЗ, рдмреЛрдЧрджрд╛ рдХрд╛рд░реНрдп рдХрд░рдгрд╛рд░ рдирд╛рд╣реА, рд░рд┐рдореЛрдЯ рдХрдиреЗрдХреНрд╢рди рдкреЛрд░реНрдЯ рдШреЗрдгреНрдпрд╛рд╕ рддреЗ рдкреБрд░реЗрд╕реЗ рд╕реНрдорд╛рд░реНрдЯ рдирд╛рд╣реА. рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, ipipou рджреЗрдЦреАрд▓ рдорджрдд рдХрд░реВ рд╢рдХрддрд╛рдд рдХрд┐рдВрд╡рд╛ WireGuard рдЖрдгрд┐ рдпрд╛рд╕рд╛рд░рдЦреЗ рдЗрддрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рдорджрдд рдХрд░реВ рд╢рдХрддрд╛рдд.

рддреЗ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ?

рдХреНрд▓рд╛рдпрдВрдЯ (рдЬреЗ рд╕рд╣рд╕рд╛ NAT рдЪреНрдпрд╛ рдорд╛рдЧреЗ рдЕрд╕рддреЗ) рдПрдХ рдмреЛрдЧрджрд╛ рдЙрдШрдбрддреЛ (рд╡рд░реАрд▓ рдЙрджрд╛рд╣рд░рдгрд╛рдкреНрд░рдорд╛рдгреЗ), рдЖрдгрд┐ рд╕рд░реНрд╡реНрд╣рд░рд▓рд╛ рдПрдХ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреЕрдХреЗрдЯ рдкрд╛рдард╡рддреЛ рдЬреЗрдгреЗрдХрд░реВрди рддреЛ рддреНрдпрд╛рдЪреНрдпрд╛ рдмрд╛рдЬреВрд▓рд╛ рдмреЛрдЧрджрд╛ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░реЗрд▓. рд╕реЗрдЯрд┐рдВрдЧреНрдЬрд╡рд░ рдЕрд╡рд▓рдВрдмреВрди, рд╣реЗ рд░рд┐рдХрд╛рдореЗ рдкреЕрдХреЗрдЯ рдЕрд╕реВ рд╢рдХрддреЗ (рдлрдХреНрдд рд╕рд░реНрд╡реНрд╣рд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ IP: рдХрдиреЗрдХреНрд╢рди рдкреЛрд░реНрдЯ рдкрд╛рд╣реВ рд╢рдХрддреЛ), рдХрд┐рдВрд╡рд╛ рдбреЗрдЯрд╛ рдЬреНрдпрд╛рджреНрд╡рд╛рд░реЗ рд╕рд░реНрд╡реНрд╣рд░ рдХреНрд▓рд╛рдпрдВрдЯ рдУрд│рдЦреВ рд╢рдХрддреЛ. рдбреЗрдЯрд╛ рд╣рд╛ рд╕реНрдкрд╖реНрдЯ рдордЬрдХреВрд░рд╛рддреАрд▓ рдПрдХ рд╕рд╛рдзрд╛ рд╕рд╛рдВрдХреЗрддрд┐рдХ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдЕрд╕реВ рд╢рдХрддреЛ (рдПрдЪрдЯреАрдЯреАрдкреА рдмреЗрд╕рд┐рдХ рдСрдерд╢реА рд╕рд╛рдзрд░реНрдореНрдп рд▓рдХреНрд╖рд╛рдд рдпреЗрддреЗ) рдХрд┐рдВрд╡рд╛ рдЦрд╛рдЬрдЧреА рдХреА рд╕рд╣ рд╕реНрд╡рд╛рдХреНрд╖рд░реА рдХреЗрд▓реЗрд▓рд╛ рдЦрд╛рд╕ рдбрд┐рдЭрд╛рдЗрди рдХреЗрд▓реЗрд▓рд╛ рдбреЗрдЯрд╛ рдЕрд╕реВ рд╢рдХрддреЛ (рдХреЗрд╡рд│ HTTP рдбрд╛рдпрдЬреЗрд╕реНрдЯ рдСрде рдкреНрд░рдорд╛рдгреЗрдЪ, рдлрдВрдХреНрд╢рди рдкрд╣рд╛ client_auth рдХреЛрдбрдордзреНрдпреЗ).

рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ (рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ IP рдЕрд╕рд▓реЗрд▓реА рдмрд╛рдЬреВ), рдЬреЗрд╡реНрд╣рд╛ ipipou рд╕реБрд░реВ рд╣реЛрддреЗ, рддреЗрд╡реНрд╣рд╛ рддреЗ nfqueue рдХреНрдпреВ рд╣рдБрдбрд▓рд░ рддрдпрд╛рд░ рдХрд░рддреЗ рдЖрдгрд┐ рдиреЗрдЯрдлрд┐рд▓реНрдЯрд░ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рддреЗ рдЬреЗрдгреЗрдХрд░реБрди рдЖрд╡рд╢реНрдпрдХ рдкреЕрдХреЗрдЯ рдЬрд┐рдереЗ рдЕрд╕рд╛рд╡реЗ рддрд┐рдереЗ рдкрд╛рдард╡рд▓реЗ рдЬрд╛рддреАрд▓: nfqueue рд░рд╛рдВрдЧреЗрд╢реА рдХрдиреЗрдХреНрд╢рди рд╕реБрд░реВ рдХрд░рдгрд╛рд░реЗ рдкреЕрдХреЗрдЯ, рдЖрдгрд┐ [рдЬрд╡рд│рдЬрд╡рд│] рдмрд╛рдХреАрдЪреЗ рд╕рд░реНрд╡ рдереЗрдЯ рд╢реНрд░реЛрддрд╛ FOU рдХрдбреЗ рдЬрд╛рддрд╛рдд.

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

рдХрд╛рд╣реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдВрд╕рд╛рдареА nfqueue рд╕рд╣ рдХрд╛рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдмрдВрдзрдиреЗ рдЖрд╣реЗрдд, bash рд╕рд╛рдареА рдХрд╛рд╣реАрд╣реА рдирд╡реНрд╣рддреЗ (рд╣реЗ, рдЖрд╢реНрдЪрд░реНрдпрдХрд╛рд░рдХ рдирд╛рд╣реА), рдорд▓рд╛ рдкрд╛рдпрдерди рд╡рд╛рдкрд░рд╛рд╡реЗ рд▓рд╛рдЧрд▓реЗ: ipipou рд╡рд╛рдкрд░рддреЗ NetfilterQueue.

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

рд░реЙ рд╕реЙрдХреЗрдЯреНрд╕ nfqueue рд╕рд╣ рд╣рд╛рддрд╛рдд рд╣рд╛рдд рдШрд╛рд▓реВрди рдХрд╛рдо рдХрд░рддрд╛рдд, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЬреЗрд╡реНрд╣рд╛ рдмреЛрдЧрджрд╛ рдЖрдзреАрдЪ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓реЗрд▓рд╛ рдЕрд╕реЗрд▓ рдЖрдгрд┐ FOU рдЗрдЪреНрдЫрд┐рдд рдкреЛрд░реНрдЯрд╡рд░ рдРрдХрдд рдЕрд╕реЗрд▓, рддреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣реА рддреНрдпрд╛рдЪ рдкреЛрд░реНрдЯрд╡рд░реВрди рдиреЗрд╣рдореАрдЪреНрдпрд╛ рдкрджреНрдзрддреАрдиреЗ рдкреЕрдХреЗрдЯ рдкрд╛рдард╡реВ рд╢рдХрдгрд╛рд░ рдирд╛рд╣реА - рддреЗ рд╡реНрдпрд╕реНрдд рдЖрд╣реЗ, рдкрд░рдВрддреБ рддреБрдореНрд╣реА рд░реЙ рд╕реЙрдХреЗрдЯ рд╡рд╛рдкрд░реВрди рдпрд╛рджреГрдЪреНрдЫрд┐рдХрдкрдгреЗ рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗрд▓реЗрд▓реЗ рдкреЕрдХреЗрдЯ рдереЗрдЯ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлреЗрд╕рд╡рд░ рдШреЗрдК рд╢рдХрддрд╛ рдЖрдгрд┐ рдкрд╛рдард╡реВ рд╢рдХрддрд╛, рдЬрд░реА рдЕрд╕реЗ рдкреЕрдХреЗрдЯ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдереЛрдбреЗ рдЕрдзрд┐рдХ рдЯрд┐рдВрдХрд░рд┐рдВрдЧ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕реЗрд▓. рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ ipipou рдордзреНрдпреЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЕрд╕рд▓реЗрд▓реЗ рдкреЕрдХреЗрдЯ рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд.

ipipou рдХрдиреЗрдХреНрд╢рдирдордзреАрд▓ рдлрдХреНрдд рдкрд╣рд┐рд▓реНрдпрд╛ рдкреЕрдХреЗрдЯрд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдд рдЕрд╕рд▓реНрдпрд╛рдиреЗ (рдЖрдгрд┐ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдгреНрдпрд╛рдкреВрд░реНрд╡реА рд░рд╛рдВрдЧреЗрдд рдЧрд│рддреА рдХрд░рдгреНрдпрд╛рдд рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗрд▓реЗ), рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди рдЬрд╡рд│рдЬрд╡рд│ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрдд рдирд╛рд╣реА.

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

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

рдХрд╛рд░рдг рдХрдиреЗрдХреНрд╢рдирдордзреАрд▓ рд╕рд░реНрд╡ рдкреЕрдХреЗрдЯреНрд╕рд╡рд░ рд╕реНрд╡рд╛рдХреНрд╖рд░реА рдХреЗрд▓реЗрд▓реА рдирд╛рд╣реА, рддрд░ рд╣реЗ рд╕рд╛рдзреЗ рд╕рдВрд░рдХреНрд╖рдг рдПрдордЖрдпрдЯреАрдПрдорд╕рд╛рдареА рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдЖрд╣реЗ, рдореНрд╣рдгреВрди рдЬрд░ рдХреНрд▓рд╛рдпрдВрдЯ рдЖрдгрд┐ рд╕рд░реНрд╡реНрд╣рд░ рджрд░рдореНрдпрд╛рдирдЪреНрдпрд╛ рдорд╛рд░реНрдЧрд╛рд╡рд░ рдПрдЦрд╛рджрд╛ рдЦрд▓рдирд╛рдпрдХ рд▓рдкрд▓реЗрд▓рд╛ рдЕрд╕реЗрд▓ рдЬреЛ рдЯреНрд░реЕрдлрд┐рдХ рдРрдХреВ рд╢рдХрддреЛ рдЖрдгрд┐ рддреНрдпрд╛рдд рдлреЗрд░рдлрд╛рд░ рдХрд░реВ рд╢рдХрддреЛ, рддреЛ рдкреНрд░рдорд╛рдгрд┐рдд рдкреЕрдХреЗрдЯреНрд╕ рдпрд╛рджреНрд╡рд╛рд░реЗ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░реВ рд╢рдХрддреЛ. рджреБрд╕рд░рд╛ рдкрддреНрддрд╛ рдЖрдгрд┐ рдЕрд╡рд┐рд╢реНрд╡рд╛рд╕реВ рд╣реЛрд╕реНрдЯрдХрдбреВрди рдПрдХ рдмреЛрдЧрджрд╛ рддрдпрд╛рд░ рдХрд░рд╛.

рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рд░рд╣рджрд╛рд░реА рд╕реЛрдбрддрд╛рдирд╛ рдпрд╛рдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд╕реЗ рдХрд░рд╛рд╡реЗ рдпрд╛рдмрджреНрджрд▓ рдХреЛрдгрд╛рд▓рд╛ рдХрд▓реНрдкрдирд╛ рдЕрд╕рд▓реНрдпрд╛рд╕, рдмреЛрд▓рдгреНрдпрд╛рд╕ рдЕрдЬрд┐рдмрд╛рдд рд╕рдВрдХреЛрдЪ рдХрд░реВ рдирдХрд╛.

рддрд╕реЗ, UDP рдордзреНрдпреЗ encapsulation рд╕реНрд╡рддрдГрд▓рд╛ рдЦреВрдк рдЪрд╛рдВрдЧрд▓реЗ рд╕рд┐рджреНрдз рдХреЗрд▓реЗ рдЖрд╣реЗ. IP рд╡рд░ рдПрдиреНрдХреЕрдкреНрд╕реБрд▓реЗрд╢рдирдЪреНрдпрд╛ рддреБрд▓рдиреЗрдд, UDP рд╣реЗрдбрд░рдЪреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдУрд╡реНрд╣рд░рд╣реЗрдб рдЕрд╕реВрдирд╣реА рддреЗ рдЕрдзрд┐рдХ рд╕реНрдерд┐рд░ рдЖрдгрд┐ рдмрд░реЗрдЪрджрд╛ рдЬрд▓рдж рдЖрд╣реЗ. рд╣реЗ рдпрд╛ рд╡рд╕реНрддреБрд╕реНрдерд┐рддреАрдореБрд│реЗ рдЖрд╣реЗ рдХреА рдЗрдВрдЯрд░рдиреЗрдЯрд╡рд░реАрд▓ рдмрд╣реБрддреЗрдХ рд╣реЛрд╕реНрдЯ рдХреЗрд╡рд│ рддреАрди рд╕рд░реНрд╡рд╛рдд рд▓реЛрдХрдкреНрд░рд┐рдп рдкреНрд░реЛрдЯреЛрдХреЙрд▓рд╕рд╣ рдЪрд╛рдВрдЧрд▓реЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛рдд: TCP, UDP, ICMP. рдореВрд░реНрдд рднрд╛рдЧ рдЗрддрд░ рд╕рд░реНрд╡ рдЧреЛрд╖реНрдЯреА рдкреВрд░реНрдгрдкрдгреЗ рдХрд╛рдвреВрди рдЯрд╛рдХреВ рд╢рдХрддреЛ рдХрд┐рдВрд╡рд╛ рддреНрдпрд╛рд╡рд░ рдЕрдзрд┐рдХ рд╣рд│реВрд╣рд│реВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░реВ рд╢рдХрддреЛ, рдХрд╛рд░рдг рддреЛ рдлрдХреНрдд рдпрд╛ рддрд┐рдШрд╛рдВрд╕рд╛рдареАрдЪ рдЕрдиреБрдХреВрд▓ рдЖрд╣реЗ.

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

рдмрд░рдВ, рдкреБрд░реЗрд╕реЗ рд╢рдмреНрдж, "рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬрдЧрд╛рдд" рддреЗ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реЗ рдкрд╛рд╣рдгреНрдпрд╛рдЪреА рд╡реЗрд│ рдЖрд▓реА рдЖрд╣реЗ.

рд▓рдврд╛рдИ

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬрдЧрд╛рдЪреЗ рдЕрдиреБрдХрд░рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ iperf3. рд╡рд╛рд╕реНрддрд╡рд┐рдХрддреЗрдЪреНрдпрд╛ рдЬрд╡рд│рдЪреНрдпрд╛ рдбрд┐рдЧреНрд░реАрдЪреНрдпрд╛ рдмрд╛рдмрддреАрдд, рд╣реЗ Minecraft рдордзреАрд▓ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬрдЧрд╛рдЪреЗ рдЕрдиреБрдХрд░рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рд░рдЦреЗрдЪ рдЖрд╣реЗ, рдкрд░рдВрддреБ рдЖрддрд╛ рддреЗ рдХрд░реЗрд▓.

рд╕реНрдкрд░реНрдзреЗрддреАрд▓ рд╕рд╣рднрд╛рдЧреА:

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

рдЧреАрдХреНрд╕рд╕рд╛рдареА рддрд╛рдВрддреНрд░рд┐рдХ рдбреЗрдЯрд╛
рдЦрд╛рд▓реАрд▓ рдЖрджреЗрд╢рд╛рдВрд╕рд╣ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдШреЗрддрд▓реЗ рдЬрд╛рддрд╛рдд:

рдХреНрд▓рд╛рдпрдВрдЯ рд╡рд░:

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 рдмреЗрд╕ рдЪреЕрдиреЗрд▓рдЪреНрдпрд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдЪреНрдпрд╛ рдЕрдЧрджреА рдЬрд╡рд│ рдЖрд╣реЗ, рдЬреЗ рдЙрддреНрддрдо рдЖрд╣реЗ!

рдПрдирдХреНрд░рд┐рдкреНрдЯреЗрдб рдУрдкрдирд╡реНрд╣реАрдкреАрдПрди рдмреЛрдЧрджрд╛ рджреЛрдиреНрд╣реА рдкреНрд░рдХрд░рдгрд╛рдВрдордзреНрдпреЗ рд╡рд┐рдЪрд┐рддреНрд░рдкрдгреЗ рд╡рд╛рдЧрд▓рд╛.

рдЬрд░ рдХреЛрдгреА рддреНрдпрд╛рдЪреА рдЪрд╛рдЪрдгреА рдШреЗрдгрд╛рд░ рдЕрд╕реЗрд▓ рддрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдРрдХрдгреЗ рдордиреЛрд░рдВрдЬрдХ рдЕрд╕реЗрд▓.

IPv6 рдЖрдгрд┐ NetPrickle рдЖрдордЪреНрдпрд╛рд╕реЛрдмрдд рдЕрд╕реВ рджреНрдпрд╛!

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛