ipipou: แƒ›แƒ”แƒขแƒ˜, แƒ•แƒ˜แƒ“แƒ แƒ” แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ“แƒแƒจแƒ˜แƒคแƒ แƒฃแƒšแƒ˜ แƒ’แƒ•แƒ˜แƒ แƒแƒ‘แƒ˜

แƒ แƒแƒก แƒ•แƒ”แƒฃแƒ‘แƒœแƒ”แƒ‘แƒ˜แƒ— IPv6-แƒ˜แƒก แƒฆแƒ›แƒ”แƒ แƒ—แƒก?

ipipou: แƒ›แƒ”แƒขแƒ˜, แƒ•แƒ˜แƒ“แƒ แƒ” แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ“แƒแƒจแƒ˜แƒคแƒ แƒฃแƒšแƒ˜ แƒ’แƒ•แƒ˜แƒ แƒแƒ‘แƒ˜
แƒ”แƒก แƒแƒกแƒ”แƒ, แƒ“แƒฆแƒ”แƒก แƒฉแƒ•แƒ”แƒœ แƒ˜แƒ’แƒ˜แƒ•แƒ”แƒก แƒ•แƒ˜แƒขแƒงแƒ•แƒ˜แƒ— แƒ“แƒแƒจแƒ˜แƒคแƒ•แƒ แƒ˜แƒก แƒฆแƒ›แƒ”แƒ แƒ—แƒกแƒแƒช.

แƒแƒฅ แƒ•แƒ˜แƒกแƒแƒฃแƒ‘แƒ แƒ”แƒ‘แƒ— แƒแƒ แƒแƒ“แƒแƒจแƒ˜แƒคแƒ แƒฃแƒš IPv4 แƒ’แƒ•แƒ˜แƒ แƒแƒ‘แƒ–แƒ”, แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ แƒ "แƒ—แƒ‘แƒ˜แƒš แƒœแƒแƒ—แƒฃแƒ แƒแƒ–แƒ”", แƒแƒ แƒแƒ›แƒ”แƒ“ แƒ—แƒแƒœแƒแƒ›แƒ”แƒ“แƒ แƒแƒ•แƒ” "LED"-แƒ–แƒ”. แƒ“แƒ แƒแƒกแƒ”แƒ•แƒ” แƒแƒ แƒ˜แƒก แƒœแƒ”แƒ“แƒšแƒ˜ แƒกแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒชแƒ˜แƒ›แƒชแƒ˜แƒ›แƒ”แƒ‘แƒ”แƒœ แƒแƒฅ แƒ“แƒ แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ”แƒแƒ‘แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒกแƒ˜แƒ•แƒ แƒชแƒ”แƒจแƒ˜ แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜แƒ—.

แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก N แƒ’แƒ•แƒ˜แƒ แƒแƒ‘แƒ˜แƒก แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ”แƒ‘แƒ˜ แƒงแƒ•แƒ”แƒšแƒ แƒ’แƒ”แƒ›แƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒคแƒ”แƒ แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก:

  • แƒ›แƒแƒ“แƒฃแƒ แƒ˜, แƒ›แƒแƒ“แƒฃแƒ แƒ˜, แƒแƒฎแƒแƒšแƒ’แƒแƒ–แƒ แƒ“แƒฃแƒšแƒ˜ WireGuard
  • แƒ›แƒ แƒแƒ•แƒแƒšแƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒฃแƒ แƒ˜, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ แƒจแƒ•แƒ”แƒ˜แƒชแƒแƒ แƒ˜แƒฃแƒšแƒ˜ แƒ“แƒแƒœแƒ”แƒ‘แƒ˜, OpenVPN แƒ“แƒ SSH
  • แƒซแƒ•แƒ”แƒšแƒ˜ แƒ“แƒ แƒแƒ แƒ แƒ‘แƒแƒ แƒแƒขแƒ˜ GRE
  • แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜, แƒกแƒฌแƒ แƒแƒคแƒ˜, แƒกแƒ แƒฃแƒšแƒ˜แƒแƒ“ แƒ“แƒแƒจแƒ˜แƒคแƒ แƒฃแƒšแƒ˜ IPIP
  • แƒแƒฅแƒขแƒ˜แƒฃแƒ แƒแƒ“ แƒ•แƒ˜แƒ—แƒแƒ แƒ“แƒ”แƒ‘แƒ แƒฏแƒ”แƒœแƒ˜แƒ•แƒ”
  • แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒกแƒฎแƒ•แƒ.

แƒ›แƒแƒ’แƒ แƒแƒ› แƒ›แƒ” แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒกแƒขแƒ˜ แƒ•แƒแƒ , แƒแƒ›แƒ˜แƒขแƒแƒ› N-แƒก แƒ›แƒฎแƒแƒšแƒแƒ“ แƒฌแƒ˜แƒšแƒแƒ“แƒ˜แƒ— แƒ’แƒแƒ•แƒ–แƒ แƒ“แƒ˜ แƒ“แƒ แƒ แƒ”แƒแƒšแƒฃแƒ แƒ˜ แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒแƒก แƒ™แƒแƒ›แƒ”แƒ แƒกแƒแƒœแƒขแƒ˜แƒก แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ”แƒ‘แƒก แƒ•แƒฃแƒขแƒแƒ•แƒ”แƒ‘.

แƒ”แƒ แƒ— แƒ“แƒแƒฃแƒ‘แƒแƒ“แƒ”แƒ‘แƒ”แƒšแƒจแƒ˜ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒ แƒแƒกแƒแƒช แƒแƒฎแƒšแƒ แƒ•แƒแƒ™แƒ”แƒ—แƒ”แƒ‘ แƒแƒ แƒ˜แƒก แƒ˜แƒก, แƒ แƒแƒ› แƒ›แƒ˜แƒ•แƒแƒฆแƒฌแƒ˜แƒ แƒ›แƒแƒกแƒžแƒ˜แƒœแƒซแƒšแƒ”แƒ‘แƒก NAT-แƒ˜แƒก แƒฃแƒ™แƒแƒœ แƒ’แƒแƒ แƒ”แƒ“แƒแƒœ. แƒแƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ–แƒ แƒ“แƒแƒกแƒ แƒฃแƒšแƒ—แƒ แƒ™แƒ แƒ˜แƒžแƒขแƒแƒ’แƒ แƒแƒคแƒ˜แƒ˜แƒก แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒ•แƒ”แƒ  แƒจแƒ”แƒ•แƒซแƒ”แƒšแƒ˜ แƒ’แƒแƒœแƒชแƒ“แƒ, แƒ แƒแƒ› แƒ”แƒก แƒ˜แƒงแƒ แƒฅแƒ•แƒ”แƒ›แƒ”แƒฎแƒ˜แƒ“แƒแƒœ แƒ‘แƒ”แƒฆแƒฃแƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒ แƒแƒšแƒ. แƒ˜แƒ›แƒ˜แƒขแƒแƒ› แƒ แƒแƒ› แƒ’แƒ•แƒ˜แƒ แƒแƒ‘แƒ˜ แƒฃแƒ›แƒ”แƒขแƒ”แƒกแƒฌแƒ˜แƒšแƒแƒ“ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ NAT-e-แƒจแƒ˜ แƒฎแƒ•แƒ แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒกแƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒšแƒแƒ“, แƒจแƒ˜แƒ“แƒ แƒขแƒ แƒแƒคแƒ˜แƒ™แƒ˜, แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ”แƒกแƒ˜, แƒแƒกแƒ”แƒ•แƒ” แƒ“แƒแƒจแƒ˜แƒคแƒ แƒฃแƒšแƒ˜แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ›แƒแƒ˜แƒœแƒช แƒ˜แƒฎแƒ แƒฉแƒแƒ‘แƒ˜แƒแƒœ HTTPS-แƒจแƒ˜.

แƒ’แƒ•แƒ˜แƒ แƒแƒ‘แƒ˜แƒก แƒ’แƒแƒงแƒ•แƒแƒœแƒ˜แƒก แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒฌแƒแƒ•แƒšแƒ˜แƒกแƒแƒก, แƒฉแƒ”แƒ›แƒ˜ แƒจแƒ˜แƒœแƒแƒ’แƒแƒœแƒ˜ แƒžแƒ”แƒ แƒคแƒ”แƒฅแƒชแƒ˜แƒแƒœแƒ˜แƒกแƒขแƒ˜แƒก แƒงแƒฃแƒ แƒแƒ“แƒฆแƒ”แƒ‘แƒ แƒ˜แƒกแƒ”แƒ• แƒ“แƒ แƒ˜แƒกแƒ”แƒ• แƒ›แƒ˜แƒ˜แƒžแƒงแƒ แƒ IPIP-แƒ–แƒ” แƒ›แƒ˜แƒกแƒ˜ แƒ›แƒ˜แƒœแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒ–แƒ”แƒ“แƒœแƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒ. แƒ›แƒแƒ’แƒ แƒแƒ› แƒ›แƒแƒก แƒแƒฅแƒ•แƒก แƒ”แƒ แƒ—แƒ˜ แƒ“แƒ แƒœแƒแƒฎแƒ”แƒ•แƒแƒ แƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜ แƒœแƒแƒ™แƒšแƒ˜ แƒฉแƒ”แƒ›แƒ˜ แƒแƒ›แƒแƒชแƒแƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก:

  • แƒ˜แƒก แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒก แƒกแƒแƒฏแƒแƒ แƒ IP-แƒ”แƒ‘แƒก แƒแƒ แƒ˜แƒ•แƒ” แƒ›แƒฎแƒ แƒ˜แƒ“แƒแƒœ,
  • แƒ“แƒ แƒแƒ แƒแƒœแƒแƒ˜แƒ แƒ˜ แƒแƒ•แƒ—แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒ—แƒ•แƒ˜แƒก.

แƒ›แƒแƒจแƒแƒกแƒแƒ“แƒแƒ›แƒ”, แƒžแƒ”แƒ แƒคแƒ”แƒฅแƒชแƒ˜แƒแƒœแƒ˜แƒกแƒขแƒ˜ แƒ—แƒแƒ•แƒ˜แƒก แƒฅแƒแƒšแƒแƒก แƒ‘แƒœแƒ”แƒš แƒ™แƒฃแƒ—แƒฎแƒ”แƒจแƒ˜ แƒแƒœ แƒ˜แƒฅ, แƒกแƒแƒ“แƒแƒช แƒ˜แƒก แƒ˜แƒฏแƒ“แƒ, แƒฃแƒ™แƒแƒœ แƒ“แƒแƒแƒ‘แƒ แƒฃแƒœแƒ”แƒก.

แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ”แƒ แƒ— แƒ“แƒฆแƒ”แƒก, แƒกแƒขแƒแƒขแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒกแƒแƒก แƒ›แƒจแƒแƒ‘แƒšแƒ˜แƒฃแƒ แƒ˜ แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ˜แƒšแƒ˜ แƒ’แƒ•แƒ˜แƒ แƒแƒ‘แƒ”แƒ‘แƒ˜ Linux-แƒจแƒ˜ แƒจแƒ”แƒ›แƒฎแƒ•แƒ“แƒ FOU (Foo-over-UDP), แƒ”.แƒ˜. แƒ แƒแƒช แƒแƒ  แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก, แƒ’แƒแƒฎแƒ•แƒ”แƒฃแƒšแƒ˜ UDP-แƒจแƒ˜. แƒฏแƒ”แƒ แƒฏแƒ”แƒ แƒแƒ‘แƒ˜แƒ— แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ˜แƒšแƒ˜แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ IPIP แƒ“แƒ GUE (Generic UDP Encapsulation).

โ€žแƒแƒ˜ แƒ•แƒ”แƒ แƒชแƒฎแƒšแƒ˜แƒก แƒขแƒงแƒ•แƒ˜แƒ! แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ IPIP แƒฉแƒ”แƒ›แƒ—แƒ•แƒ˜แƒก แƒกแƒแƒ™แƒ›แƒแƒ แƒ˜แƒกแƒ˜แƒโ€œ. - แฒ•แƒ˜แƒคแƒ˜แƒฅแƒ แƒ”.

แƒคแƒแƒฅแƒขแƒแƒ‘แƒ แƒ˜แƒ•แƒแƒ“, แƒขแƒงแƒ•แƒ˜แƒ แƒแƒ  แƒ˜แƒงแƒ แƒ›แƒ—แƒšแƒ˜แƒแƒœแƒแƒ“ แƒ•แƒ”แƒ แƒชแƒฎแƒšแƒ˜แƒกแƒคแƒ”แƒ แƒ˜. UDP-แƒจแƒ˜ แƒ˜แƒœแƒ™แƒแƒžแƒกแƒฃแƒšแƒแƒชแƒ˜แƒ แƒฌแƒงแƒ•แƒ”แƒขแƒก แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒแƒก - แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ“แƒแƒฃแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ“แƒ”แƒ— NAT-แƒ˜แƒก แƒ›แƒ˜แƒฆแƒ›แƒ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ”แƒ‘แƒก แƒ’แƒแƒ แƒ”แƒ“แƒแƒœ แƒฌแƒ˜แƒœแƒแƒกแƒฌแƒแƒ  แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒฅ IPIP-แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒœแƒแƒ™แƒšแƒ˜แƒก แƒœแƒแƒฎแƒ”แƒ•แƒแƒ แƒ˜ แƒงแƒ•แƒแƒ•แƒ˜แƒก แƒแƒฎแƒแƒš แƒจแƒฃแƒฅแƒ–แƒ” - แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒก แƒ™แƒ”แƒ แƒซแƒ แƒฅแƒกแƒ”แƒšแƒ˜แƒ“แƒแƒœ แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ“แƒแƒ›แƒแƒšแƒ•แƒ แƒฎแƒ˜แƒšแƒฃแƒšแƒ˜แƒก แƒ›แƒ˜แƒฆแƒ›แƒ. แƒกแƒแƒฏแƒแƒ แƒ IP แƒ“แƒ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒžแƒแƒ แƒขแƒ˜ (แƒกแƒฃแƒคแƒ—แƒ IPIP-แƒจแƒ˜ แƒ”แƒก แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ แƒแƒ  แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก).

แƒแƒ› แƒ”แƒ แƒ—แƒœแƒแƒฎแƒ”แƒ•แƒแƒ แƒ˜ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ˜แƒก แƒ’แƒแƒ“แƒแƒกแƒแƒญแƒ แƒ”แƒšแƒแƒ“ แƒจแƒ”แƒ˜แƒฅแƒ›แƒœแƒ แƒ™แƒแƒ›แƒฃแƒœแƒแƒšแƒฃแƒ แƒ˜ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ แƒ˜แƒžแƒ˜แƒžแƒแƒฃ. แƒ˜แƒก แƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒก แƒกแƒแƒฎแƒšแƒจแƒ˜ แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒš แƒ›แƒ”แƒฅแƒแƒœแƒ˜แƒ–แƒ›แƒก แƒ“แƒ˜แƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ แƒ˜ แƒฐแƒแƒกแƒขแƒ˜แƒก แƒแƒ•แƒ—แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก FOU แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒจแƒ”แƒคแƒ”แƒ แƒฎแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒ“แƒ แƒ”แƒคแƒ”แƒฅแƒขแƒฃแƒ แƒแƒ“ แƒ“แƒแƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒก แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒกแƒ˜แƒ•แƒ แƒชแƒ”แƒจแƒ˜.

แƒฉแƒ•แƒ”แƒœ แƒแƒ  แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒกแƒชแƒ”แƒœแƒแƒ แƒ˜!

แƒ™แƒแƒ แƒ’แƒ˜, แƒ—แƒฃ แƒ˜แƒชแƒ˜แƒ— แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒกแƒแƒฏแƒแƒ แƒ แƒžแƒแƒ แƒขแƒ˜ แƒ“แƒ IP (แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒงแƒ•แƒ”แƒšแƒ แƒ›แƒ˜แƒก แƒฃแƒ™แƒแƒœ แƒแƒ แƒกแƒแƒ“ แƒ›แƒ˜แƒ“แƒ˜แƒก, NAT แƒชแƒ“แƒ˜แƒšแƒแƒ‘แƒก แƒžแƒแƒ แƒขแƒ”แƒ‘แƒ˜แƒก 1-แƒจแƒ˜ 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 - แƒกแƒแƒฏแƒแƒ แƒ 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 โ€” แƒšแƒแƒ™แƒแƒšแƒฃแƒ แƒ˜ แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ˜, แƒ แƒแƒ›แƒšแƒ˜แƒ—แƒแƒช แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ›แƒ˜แƒ‘แƒ›แƒฃแƒšแƒ˜ ipip แƒ’แƒ•แƒ˜แƒ แƒแƒ‘แƒ˜
  • 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 queue handler-แƒก แƒ“แƒ แƒแƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒก แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒคแƒ˜แƒšแƒขแƒ แƒก แƒ˜แƒกแƒ”, แƒ แƒแƒ› แƒกแƒแƒญแƒ˜แƒ แƒ แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜ แƒ˜แƒ’แƒ–แƒแƒ•แƒœแƒ”แƒ‘แƒ แƒ˜แƒฅ, แƒกแƒแƒ“แƒแƒช แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก: แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒแƒฎแƒ“แƒ”แƒœแƒ”แƒœ แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒก nfqueue แƒ แƒ˜แƒ’แƒ—แƒแƒœ แƒ“แƒ [แƒ—แƒ˜แƒ—แƒฅแƒ›แƒ˜แƒก] แƒงแƒ•แƒ”แƒšแƒ แƒ“แƒแƒœแƒแƒ แƒฉแƒ”แƒœแƒ˜ แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒ›แƒ˜แƒ“แƒ˜แƒก แƒ›แƒกแƒ›แƒ”แƒœแƒ”แƒšแƒ–แƒ” FOU.

แƒ›แƒแƒ—แƒ—แƒ•แƒ˜แƒก, แƒ•แƒ˜แƒœแƒช แƒแƒ  แƒ˜แƒชแƒ˜แƒก, nfqueue (แƒแƒœ NetfilterQueue) แƒแƒ แƒ˜แƒก แƒ’แƒแƒœแƒกแƒแƒ™แƒฃแƒ—แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ แƒแƒ› แƒ›แƒแƒงแƒ•แƒแƒ แƒฃแƒšแƒ—แƒแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ›แƒแƒช แƒแƒ  แƒ˜แƒชแƒ˜แƒแƒœ แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ›แƒแƒ“แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ, แƒ แƒแƒช netfilter-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— (nftables/iptables) แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒ’แƒแƒ“แƒแƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒแƒ— แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒกแƒ˜แƒ•แƒ แƒชแƒ”แƒจแƒ˜ แƒ“แƒ แƒ“แƒแƒแƒ›แƒฃแƒจแƒแƒ•แƒแƒ— แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ˜แƒฅ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—. แƒฎแƒ”แƒšแƒ— แƒแƒ แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒžแƒ แƒ˜แƒ›แƒ˜แƒขแƒ˜แƒฃแƒšแƒ˜ แƒœแƒ˜แƒจแƒœแƒแƒ•แƒก: แƒจแƒ”แƒชแƒ•แƒแƒšแƒ”แƒ— (แƒกแƒฃแƒ แƒ•แƒ˜แƒšแƒ˜แƒกแƒแƒ›แƒ”แƒ‘แƒ ) แƒ“แƒ แƒ“แƒแƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ— แƒ˜แƒ’แƒ˜ แƒ‘แƒ˜แƒ แƒ—แƒ•แƒจแƒ˜, แƒแƒœ แƒ’แƒแƒ“แƒแƒแƒ’แƒ“แƒ”แƒ— แƒ˜แƒ’แƒ˜.

แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ—แƒ˜ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ”แƒœแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒแƒ แƒ˜แƒก แƒจแƒ”แƒ™แƒ•แƒ แƒ nfqueue-แƒกแƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, bash-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒแƒ  แƒ˜แƒงแƒ (แƒฐแƒ”แƒฐ, แƒ’แƒแƒกแƒแƒ™แƒ•แƒ˜แƒ แƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก), แƒ›แƒ” แƒ›แƒแƒ›แƒ˜แƒฌแƒ˜แƒ แƒžแƒ˜แƒ—แƒแƒœแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ: ipipou แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก NetfilterQueue.

แƒ—แƒฃ แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ™แƒ แƒ˜แƒขแƒ˜แƒ™แƒฃแƒšแƒ˜, แƒแƒ› แƒœแƒ˜แƒ•แƒ—แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒจแƒ”แƒ“แƒแƒ แƒ”แƒ‘แƒ˜แƒ— แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒ“แƒ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒแƒ“ แƒ›แƒแƒแƒฌแƒงแƒแƒ— แƒกแƒแƒ™แƒฃแƒ—แƒแƒ แƒ˜ แƒšแƒแƒ’แƒ˜แƒ™แƒ แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ“แƒแƒ‘แƒแƒš แƒ“แƒแƒœแƒ”แƒ–แƒ”, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒ”แƒฅแƒกแƒžแƒ”แƒ แƒ˜แƒ›แƒ”แƒœแƒขแƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ’แƒแƒ“แƒแƒชแƒ”แƒ›แƒ˜แƒก แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ”แƒ‘แƒ˜, แƒแƒœ แƒแƒ™แƒแƒœแƒขแƒ แƒแƒšแƒแƒ— แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒ“แƒ แƒ“แƒ˜แƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ แƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜ แƒแƒ แƒแƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒฃแƒšแƒ˜ แƒฅแƒชแƒ”แƒ•แƒ˜แƒ—.

Raw แƒกแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ”แƒœ แƒฎแƒ”แƒšแƒ˜แƒฎแƒ”แƒšแƒฉแƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ›แƒ nfqueue-แƒกแƒ—แƒแƒœ, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ’แƒ•แƒ˜แƒ แƒแƒ‘แƒ˜ แƒฃแƒ™แƒ•แƒ” แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ“แƒ FOU แƒฃแƒกแƒ›แƒ”แƒœแƒก แƒกแƒแƒกแƒฃแƒ แƒ•แƒ”แƒš แƒžแƒแƒ แƒขแƒก, แƒ—แƒฅแƒ•แƒ”แƒœ แƒ•แƒ”แƒ  แƒจแƒ”แƒซแƒšแƒ”แƒ‘แƒ— แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒแƒก แƒ˜แƒ›แƒแƒ•แƒ” แƒžแƒแƒ แƒขแƒ˜แƒ“แƒแƒœ แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒ’แƒ–แƒ˜แƒ— - แƒ˜แƒก แƒ“แƒแƒ™แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒแƒ˜แƒฆแƒแƒ— แƒ“แƒ แƒ’แƒแƒฃแƒ’แƒ–แƒแƒ•แƒœแƒแƒ— แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ˜แƒ— แƒ’แƒ”แƒœแƒ”แƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒžแƒแƒ™แƒ”แƒขแƒ˜ แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒจแƒ˜ แƒœแƒ”แƒ“แƒšแƒ”แƒฃแƒšแƒ˜ แƒกแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒ—แƒฃแƒ›แƒชแƒ แƒแƒกแƒ”แƒ—แƒ˜ แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒ’แƒ”แƒœแƒ”แƒ แƒ˜แƒ แƒ”แƒ‘แƒแƒก แƒชแƒแƒขแƒ แƒ›แƒ”แƒขแƒ˜ แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ แƒ“แƒแƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ. แƒแƒ˜, แƒ แƒแƒ’แƒแƒ  แƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒฅแƒแƒœแƒ” แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜ ipipou-แƒจแƒ˜.

แƒ•แƒ˜แƒœแƒแƒ˜แƒ“แƒแƒœ ipipou แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก แƒ›แƒฎแƒแƒšแƒแƒ“ แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒก แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜แƒ“แƒแƒœ (แƒ“แƒ แƒ›แƒแƒ—, แƒ•แƒ˜แƒœแƒช แƒ›แƒแƒแƒฎแƒ”แƒ แƒฎแƒ แƒ แƒ˜แƒ’แƒจแƒ˜ แƒ’แƒแƒŸแƒแƒœแƒ•แƒ แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜แƒก แƒ“แƒแƒ›แƒงแƒแƒ แƒ”แƒ‘แƒแƒ›แƒ“แƒ”), แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ แƒ—แƒ˜แƒ—แƒฅแƒ›แƒ˜แƒก แƒแƒ  แƒ˜แƒขแƒแƒœแƒฏแƒ”แƒ‘แƒ.

แƒ แƒแƒ’แƒแƒ แƒช แƒ™แƒ˜ ipipou แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒ›แƒ˜แƒ˜แƒฆแƒ”แƒ‘แƒก แƒ“แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒฃแƒš แƒžแƒแƒ™แƒ”แƒขแƒก, แƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ แƒ’แƒ•แƒ˜แƒ แƒแƒ‘แƒ˜ แƒ“แƒ แƒงแƒ•แƒ”แƒšแƒ แƒจแƒ”แƒ›แƒ“แƒ’แƒแƒ›แƒ˜ แƒžแƒแƒ™แƒ”แƒขแƒ˜ แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒจแƒ˜ แƒฃแƒ™แƒ•แƒ” แƒ›แƒฃแƒจแƒแƒ•แƒ“แƒ”แƒ‘แƒ แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ›แƒ˜แƒ”แƒ  nfqueue-แƒก แƒ’แƒ•แƒ”แƒ แƒ“แƒ˜แƒก แƒแƒ•แƒšแƒ˜แƒ—. แƒ—แƒฃ แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜ แƒ•แƒ”แƒ  แƒ›แƒแƒฎแƒ”แƒ แƒฎแƒ“แƒ, แƒ›แƒแƒจแƒ˜แƒœ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒžแƒแƒ™แƒ”แƒขแƒ˜ แƒ’แƒแƒ˜แƒ’แƒ–แƒแƒ•แƒœแƒ”แƒ‘แƒ nfqueue แƒ แƒ˜แƒ’แƒจแƒ˜, แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒ“แƒแƒœ แƒ’แƒแƒ›แƒแƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ”, แƒ—แƒฃ แƒ”แƒก แƒแƒ  แƒแƒ แƒ˜แƒก แƒแƒ•แƒ—แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒฅแƒแƒœแƒ” แƒžแƒแƒ™แƒ”แƒขแƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ‘แƒแƒšแƒ แƒ“แƒแƒ›แƒแƒฎแƒกแƒแƒ•แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ IP แƒ“แƒ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒžแƒแƒ แƒขแƒ˜แƒ“แƒแƒœ, แƒ›แƒ˜แƒกแƒ˜ แƒ’แƒแƒ“แƒแƒชแƒ”แƒ›แƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ. แƒฉแƒแƒ แƒ—แƒฃแƒšแƒ˜ แƒแƒœ แƒ’แƒแƒฃแƒฅแƒ›แƒ”แƒ‘แƒฃแƒšแƒ˜. แƒ—แƒฃ แƒแƒ•แƒ—แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒชแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒžแƒแƒ™แƒ”แƒขแƒ˜ แƒ›แƒแƒ“แƒ˜แƒก แƒแƒฎแƒแƒšแƒ˜ IP-แƒ“แƒแƒœ แƒ“แƒ แƒžแƒแƒ แƒขแƒ˜แƒ“แƒแƒœ, แƒ’แƒ•แƒ˜แƒ แƒแƒ‘แƒ˜ แƒฎแƒ”แƒšแƒแƒฎแƒšแƒ แƒแƒ แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒ—แƒ˜ แƒ’แƒแƒ›แƒแƒกแƒแƒงแƒ”แƒœแƒ”แƒ‘แƒšแƒแƒ“.

แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ• IPIP-over-FOU-แƒก แƒแƒฅแƒ•แƒก แƒ™แƒ˜แƒ“แƒ”แƒ• แƒ”แƒ แƒ—แƒ˜ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ NAT-แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒกแƒแƒก - แƒจแƒ”แƒฃแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ UDP-แƒจแƒ˜ แƒฉแƒแƒกแƒ›แƒฃแƒšแƒ˜ แƒแƒ แƒ˜ IPIP แƒ’แƒ•แƒ˜แƒ แƒแƒ‘แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ แƒ˜แƒ’แƒ˜แƒ•แƒ” IP-แƒ˜แƒ—, แƒ แƒแƒ“แƒ’แƒแƒœ FOU แƒ“แƒ IPIP แƒ›แƒแƒ“แƒฃแƒšแƒ”แƒ‘แƒ˜ แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ˜แƒ–แƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ”แƒ แƒ—แƒ›แƒแƒœแƒ”แƒ—แƒ˜แƒกแƒ’แƒแƒœ. แƒ˜แƒ›แƒแƒ—. แƒฌแƒงแƒ•แƒ˜แƒšแƒ˜ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜ แƒ”แƒ แƒ—แƒ˜แƒ“แƒแƒ˜แƒ’แƒ˜แƒ•แƒ” แƒกแƒแƒฏแƒแƒ แƒ IP-แƒก แƒฃแƒ™แƒแƒœ แƒ•แƒ”แƒ  แƒจแƒ”แƒซแƒšแƒ”แƒ‘แƒก แƒแƒ› แƒ’แƒ–แƒ˜แƒ— แƒ”แƒ แƒ—แƒกแƒ แƒ“แƒ แƒ˜แƒ›แƒแƒ•แƒ” แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ—แƒแƒœ แƒ”แƒ แƒ—แƒ“แƒ แƒแƒฃแƒšแƒแƒ“ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒแƒก. แฒ›แƒแƒ›แƒแƒ•แƒแƒšแƒจแƒ˜, แƒแƒšแƒ‘แƒแƒ—, แƒ˜แƒก แƒ›แƒแƒ’แƒ•แƒแƒ แƒ“แƒ”แƒ‘แƒ แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ“แƒแƒœแƒ”แƒ–แƒ”, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ”แƒก แƒแƒ  แƒแƒ แƒ˜แƒก แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒ˜. แƒ˜แƒ›แƒแƒ•แƒ“แƒ แƒแƒฃแƒšแƒแƒ“, NAT แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ“แƒแƒญแƒ แƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ NAT-แƒ˜แƒ— - แƒ—แƒฃ แƒ›แƒแƒฎแƒ“แƒ”แƒ‘แƒ, แƒ แƒแƒ› IP แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒ˜แƒก แƒฌแƒงแƒ•แƒ˜แƒšแƒ˜ แƒฃแƒ™แƒ•แƒ” แƒ“แƒแƒ™แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒกแƒฎแƒ•แƒ แƒ’แƒ•แƒ˜แƒ แƒแƒ‘แƒ˜แƒ—, ipipou แƒ’แƒแƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒก NAT-แƒก แƒกแƒแƒฏแƒแƒ แƒแƒ“แƒแƒœ แƒแƒšแƒขแƒ”แƒ แƒœแƒแƒขแƒ˜แƒฃแƒš แƒ™แƒ”แƒ แƒซแƒ IP-แƒ›แƒ“แƒ”, voila! - แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒจแƒ”แƒฅแƒ›แƒœแƒแƒ— แƒ’แƒ•แƒ˜แƒ แƒแƒ‘แƒ”แƒ‘แƒ˜ แƒžแƒแƒ แƒขแƒ”แƒ‘แƒ˜แƒก แƒแƒ›แƒแƒฌแƒฃแƒ แƒ•แƒแƒ›แƒ“แƒ”.

แƒ˜แƒ›แƒ˜แƒขแƒแƒ› แƒ แƒแƒ› แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒžแƒแƒ™แƒ”แƒขแƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก แƒฎแƒ”แƒšแƒ›แƒแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜, แƒ›แƒแƒจแƒ˜แƒœ แƒ”แƒก แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒ“แƒแƒชแƒ•แƒ แƒ“แƒแƒฃแƒชแƒ•แƒ”แƒšแƒ˜แƒ MITM-แƒ˜แƒก แƒ›แƒ˜แƒ›แƒแƒ แƒ—, แƒแƒกแƒ” แƒ แƒแƒ›, แƒ—แƒฃ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒกแƒ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒก แƒจแƒแƒ แƒ˜แƒก แƒ’แƒ–แƒแƒ–แƒ” แƒ˜แƒ›แƒแƒšแƒ”แƒ‘แƒ แƒ‘แƒแƒ แƒแƒขแƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒขแƒ แƒแƒคแƒ˜แƒ™แƒ˜แƒก แƒ›แƒแƒกแƒ›แƒ”แƒœแƒ แƒ“แƒ แƒ›แƒ˜แƒกแƒ˜ แƒ›แƒแƒœแƒ˜แƒžแƒฃแƒšแƒ˜แƒ แƒ”แƒ‘แƒ, แƒ›แƒแƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ’แƒแƒ“แƒแƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒแƒก แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜. แƒกแƒฎแƒ•แƒ แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ˜ แƒ“แƒ แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒ’แƒ•แƒ˜แƒ แƒแƒ‘แƒ˜ แƒแƒ แƒแƒกแƒแƒœแƒ“แƒ แƒฐแƒแƒกแƒขแƒ˜แƒกแƒ’แƒแƒœ.

แƒ—แƒฃ แƒ•แƒ˜แƒœแƒ›แƒ”แƒก แƒแƒฅแƒ•แƒก แƒ˜แƒ“แƒ”แƒ”แƒ‘แƒ˜ แƒ˜แƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ›แƒแƒกแƒฌแƒแƒ แƒ“แƒ”แƒก แƒ”แƒก แƒขแƒ แƒแƒคแƒ˜แƒ™แƒ˜แƒก แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒœแƒแƒฌแƒ˜แƒšแƒ˜แƒก แƒ‘แƒ˜แƒ แƒ—แƒ•แƒจแƒ˜ แƒ“แƒแƒขแƒแƒ•แƒ”แƒ‘แƒ˜แƒกแƒแƒก, แƒแƒ  แƒ›แƒแƒ’แƒ”แƒ แƒ˜แƒ“แƒแƒ— แƒกแƒแƒฃแƒ‘แƒแƒ แƒ˜.

แƒกแƒฎแƒ•แƒแƒ—แƒ แƒจแƒแƒ แƒ˜แƒก, แƒ”แƒœแƒ™แƒแƒคแƒกแƒฃแƒšแƒแƒชแƒ˜แƒ UDP-แƒจแƒ˜ แƒซแƒแƒšแƒ˜แƒแƒœ แƒ™แƒแƒ แƒ’แƒแƒ“ แƒ“แƒแƒแƒ›แƒขแƒ™แƒ˜แƒชแƒ. IP-แƒ–แƒ” แƒ˜แƒœแƒ™แƒแƒคแƒกแƒฃแƒšแƒแƒชแƒ˜แƒแƒกแƒ—แƒแƒœ แƒจแƒ”แƒ“แƒแƒ แƒ”แƒ‘แƒ˜แƒ—, แƒ˜แƒก แƒ‘แƒ”แƒ•แƒ แƒแƒ“ แƒฃแƒคแƒ แƒ แƒกแƒขแƒแƒ‘แƒ˜แƒšแƒฃแƒ แƒ˜แƒ แƒ“แƒ แƒฎแƒจแƒ˜แƒ แƒแƒ“ แƒฃแƒคแƒ แƒ แƒกแƒฌแƒ แƒแƒคแƒ˜แƒ UDP แƒกแƒแƒ—แƒแƒฃแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒ–แƒ”แƒ“แƒœแƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฃแƒฎแƒ”แƒ“แƒแƒ•แƒแƒ“. แƒ”แƒก แƒ’แƒแƒ›แƒแƒฌแƒ•แƒ”แƒฃแƒšแƒ˜แƒ แƒ˜แƒ›แƒ˜แƒ—, แƒ แƒแƒ› แƒ˜แƒœแƒขแƒ”แƒ แƒœแƒ”แƒขแƒจแƒ˜ แƒฐแƒแƒกแƒขแƒ”แƒ‘แƒ˜แƒก แƒฃแƒ›แƒ”แƒขแƒ”แƒกแƒแƒ‘แƒ แƒ™แƒแƒ แƒ’แƒแƒ“ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ›แƒฎแƒแƒšแƒแƒ“ แƒกแƒแƒ›แƒ˜ แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒžแƒแƒžแƒฃแƒšแƒแƒ แƒฃแƒšแƒ˜ แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ˜แƒ—: TCP, UDP, ICMP. แƒฎแƒ”แƒšแƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒœแƒแƒฌแƒ˜แƒšแƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ›แƒ—แƒšแƒ˜แƒแƒœแƒแƒ“ แƒ’แƒแƒแƒฃแƒฅแƒ›แƒแƒก แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜, แƒแƒœ แƒ“แƒแƒแƒ›แƒฃแƒจแƒแƒ•แƒแƒก แƒฃแƒคแƒ แƒ แƒœแƒ”แƒšแƒ, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ˜แƒก แƒแƒžแƒขแƒ˜แƒ›แƒ˜แƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒแƒ› แƒกแƒแƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒแƒ›แƒ˜แƒขแƒแƒ›แƒแƒ, แƒ แƒแƒ› QUICK, แƒ แƒแƒ›แƒ”แƒšแƒ–แƒ”แƒ“แƒแƒช แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ HTTP/3, แƒจแƒ”แƒ˜แƒฅแƒ›แƒœแƒ UDP-แƒ˜แƒก แƒ—แƒแƒ•แƒ–แƒ” แƒ“แƒ แƒแƒ แƒ IP-แƒ–แƒ”.

แƒ™แƒแƒ แƒ’แƒ˜, แƒกแƒแƒ™แƒ›แƒแƒ แƒ˜แƒกแƒ˜ แƒกแƒ˜แƒขแƒงแƒ•แƒ”แƒ‘แƒ˜แƒ, แƒ“แƒ แƒแƒ แƒ•แƒœแƒแƒฎแƒแƒ—, แƒ แƒแƒ’แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ”แƒก "แƒ แƒ”แƒแƒšแƒฃแƒ  แƒกแƒแƒ›แƒงแƒแƒ แƒแƒจแƒ˜".

แƒ‘แƒ แƒซแƒแƒšแƒ

แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ แƒ”แƒแƒšแƒฃแƒ แƒ˜ แƒกแƒแƒ›แƒงแƒแƒ แƒแƒก แƒ›แƒ˜แƒ‘แƒแƒซแƒ•แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก iperf3. แƒ แƒ”แƒแƒšแƒแƒ‘แƒแƒกแƒ—แƒแƒœ แƒกแƒ˜แƒแƒฎแƒšแƒแƒ•แƒ˜แƒก แƒฎแƒแƒ แƒ˜แƒกแƒฎแƒ˜แƒก แƒ—แƒ•แƒแƒšแƒกแƒแƒ–แƒ แƒ˜แƒกแƒ˜แƒ—, แƒ”แƒก แƒ“แƒแƒแƒฎแƒšแƒแƒ”แƒ‘แƒ˜แƒ— แƒ˜แƒ’แƒ˜แƒ•แƒ”แƒ, แƒ แƒแƒช Minecraft-แƒจแƒ˜ แƒ แƒ”แƒแƒšแƒฃแƒ แƒ˜ แƒกแƒแƒ›แƒงแƒแƒ แƒแƒก แƒ›แƒ˜แƒ‘แƒแƒซแƒ•แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒฎแƒšแƒ แƒ”แƒก แƒแƒกแƒ” แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ.

แƒ™แƒแƒœแƒ™แƒฃแƒ แƒกแƒ˜แƒก แƒ›แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ”แƒ‘แƒ˜:

  • แƒกแƒแƒชแƒœแƒแƒ‘แƒแƒ แƒ แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒแƒ แƒฎแƒ˜
  • แƒแƒ› แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒ’แƒ›แƒ˜แƒ แƒ˜ แƒแƒ แƒ˜แƒก ipipou
  • OpenVPN แƒแƒ•แƒ—แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒ—, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ“แƒแƒจแƒ˜แƒคแƒ•แƒ แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”
  • OpenVPN แƒงแƒแƒ•แƒšแƒ˜แƒกแƒ›แƒแƒ›แƒชแƒ•แƒ”แƒšแƒ˜ แƒ แƒ”แƒŸแƒ˜แƒ›แƒจแƒ˜
  • WireGuard 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", ั‡ั‚ะพะฑั‹ ะปะธัˆะฝะธะต ะฟะฐะบะตั‚ั‹ ะฝะต ะฟะปะพะดะธั‚ัŒ ะธ ะฝะต ะฟะพั€ั‚ะธั‚ัŒ ะฟั€ะพะธะทะฒะพะดะธั‚ะตะปัŒะฝะพัั‚ัŒ.

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

แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ” (แƒแƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒก แƒ”แƒ แƒ—แƒ“แƒ แƒแƒฃแƒšแƒแƒ“ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ—แƒแƒœ):

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"

แƒ’แƒ•แƒ˜แƒ แƒแƒ‘แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ

แƒ˜แƒžแƒ˜แƒžแƒแƒฃ
แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ”
/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 แƒแƒžแƒขแƒ˜แƒ›แƒ˜แƒกแƒขแƒฃแƒ  แƒ’แƒ‘/แƒฌแƒ›-แƒ–แƒ”

ipipou: แƒ›แƒ”แƒขแƒ˜, แƒ•แƒ˜แƒ“แƒ แƒ” แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ“แƒแƒจแƒ˜แƒคแƒ แƒฃแƒšแƒ˜ แƒ’แƒ•แƒ˜แƒ แƒแƒ‘แƒ˜

ipipou: แƒ›แƒ”แƒขแƒ˜, แƒ•แƒ˜แƒ“แƒ แƒ” แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ“แƒแƒจแƒ˜แƒคแƒ แƒฃแƒšแƒ˜ แƒ’แƒ•แƒ˜แƒ แƒแƒ‘แƒ˜

แƒงแƒ•แƒ”แƒšแƒ แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, ipipou แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒแƒฎแƒšแƒแƒก แƒแƒ แƒ˜แƒก แƒกแƒแƒ‘แƒแƒ–แƒ แƒแƒ แƒฎแƒ—แƒแƒœ แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒช แƒจแƒ”แƒกแƒแƒœแƒ˜แƒจแƒœแƒแƒ•แƒ˜แƒ!

แƒ“แƒแƒจแƒ˜แƒคแƒ แƒฃแƒšแƒ˜ openvpn แƒ’แƒ•แƒ˜แƒ แƒแƒ‘แƒ˜ แƒแƒ แƒ˜แƒ•แƒ” แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒฃแƒชแƒœแƒแƒฃแƒ แƒแƒ“ แƒ˜แƒฅแƒชแƒ”แƒแƒ“แƒ.

แƒ—แƒฃ แƒ•แƒ˜แƒœแƒ›แƒ” แƒแƒžแƒ˜แƒ แƒ”แƒ‘แƒก แƒ›แƒ˜แƒก แƒ’แƒแƒ›แƒแƒชแƒ“แƒแƒก, แƒกแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒฎแƒ›แƒแƒฃแƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒกแƒ›แƒ”แƒœแƒ.

แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ IPv6 แƒ“แƒ NetPrickle แƒ˜แƒงแƒแƒก แƒฉแƒ•แƒ”แƒœแƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“!

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ