ipipou: ๋‹จ์ˆœํ•œ ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ ํ„ฐ๋„ ๊ทธ ์ด์ƒ

IPv6์˜ ์‹ ์—๊ฒŒ ์šฐ๋ฆฌ๋Š” ๋ฌด์—‡์„ ๋งํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

ipipou: ๋‹จ์ˆœํ•œ ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ ํ„ฐ๋„ ๊ทธ ์ด์ƒ
๋งž์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ์•”ํ˜ธํ™”์˜ ์‹ ์—๊ฒŒ๋„ ๋˜‘๊ฐ™์ด ๋งํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ๋Š” ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ IPv4 ํ„ฐ๋„์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์ง€๋งŒ "๋”ฐ๋œปํ•œ ๋žจํ”„" ํ„ฐ๋„์ด ์•„๋‹ˆ๋ผ ์ตœ์‹  "LED" ํ„ฐ๋„์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์—๋Š” ์›์‹œ ์†Œ์ผ“์ด ๊นœ๋ฐ•์ด๊ณ  ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์—์„œ ํŒจํ‚ท ์ž‘์—…์ด ์ง„ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  ์ทจํ–ฅ๊ณผ ์ƒ‰์ƒ์— ๋งž๋Š” N๊ฐœ์˜ ํ„ฐ๋„๋ง ํ”„๋กœํ† ์ฝœ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์Šคํƒ€์ผ๋ฆฌ์‹œํ•œ, ํŒจ์…”๋„ˆ๋ธ”ํ•œ, ์ Š์Œ ์™€์ด์–ด ๊ฐ€๋“œ
  • Swiss Knife, OpenVPN ๋ฐ SSH์™€ ๊ฐ™์€ ๋‹ค๊ธฐ๋Šฅ
  • ์˜ค๋ž˜๋˜๊ณ  ์‚ฌ์•…ํ•˜์ง€ ์•Š์€ GRE
  • ๊ฐ€์žฅ ๊ฐ„๋‹จํ•˜๊ณ  ๋น ๋ฅด๋ฉฐ ์™„์ „ํžˆ ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ IPIP
  • ์ ๊ทน์ ์œผ๋กœ ๋ฐœ์ „ ์ œ๋„ค๋ฐ”
  • ๋งŽ์€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ.

ํ•˜์ง€๋งŒ ๋‚˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ์ด๊ธฐ ๋•Œ๋ฌธ์— N์„ ์•„์ฃผ ์กฐ๊ธˆ๋งŒ ๋Š˜๋ฆฌ๊ณ  ์‹ค์ œ ํ”„๋กœํ† ์ฝœ ๊ฐœ๋ฐœ์€ Kommersant ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋งก๊ธธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•„์ง ํƒœ์–ด๋‚˜์ง€ ์•Š์€ ํ•œ ์‚ฌ๋žŒ์—๊ฒŒ์„œ ํ”„๋กœ์ ํŠธ์ง€๊ธˆ ์ œ๊ฐ€ ํ•˜๊ณ  ์žˆ๋Š” ์ผ์€ ์™ธ๋ถ€์—์„œ 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-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 โ€” ๊ณต์šฉ IP ์„œ๋ฒ„
  • 198.51.100.2 โ€” ํด๋ผ์ด์–ธํŠธ์˜ ๊ณต๊ฐœ IP
  • 192.168.0.2 โ€” ์ธํ„ฐํŽ˜์ด์Šค eth0์— ํ• ๋‹น๋œ ํด๋ผ์ด์–ธํŠธ IP
  • 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 ๊ธฐ๋ณธ ์ธ์ฆ๊ณผ ์œ ์‚ฌํ•จ)์ด๊ฑฐ๋‚˜ ๊ฐœ์ธ ํ‚ค๋กœ ์„œ๋ช…๋œ ํŠน๋ณ„ํžˆ ์„ค๊ณ„๋œ ๋ฐ์ดํ„ฐ(HTTP ๋‹ค์ด์ œ์ŠคํŠธ ์ธ์ฆ๊ณผ ์œ ์‚ฌํ•˜๋ฉฐ ๋” ๊ฐ•๋ ฅํ•จ, ๊ธฐ๋Šฅ ์ฐธ์กฐ)์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. client_auth ์ฝ”๋“œ์—์„œ).

์„œ๋ฒ„(๊ณต์šฉ IP๊ฐ€ ์žˆ๋Š” ์ชฝ)์—์„œ ipipou๊ฐ€ ์‹œ์ž‘๋˜๋ฉด nfqueue ๋Œ€๊ธฐ์—ด ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํ•„์š”ํ•œ ํŒจํ‚ท์ด ์žˆ์–ด์•ผ ํ•  ์œ„์น˜๋กœ ์ „์†ก๋˜๋„๋ก netfilter๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ํŒจํ‚ท์€ nfqueue ๋Œ€๊ธฐ์—ด์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ์„ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  [๊ฑฐ์˜] ๋‚˜๋จธ์ง€๋Š” ๋ชจ๋‘ ์ฒญ์ทจ์ž FOU๋กœ ๋ฐ”๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.

์ž˜ ๋ชจ๋ฅด๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ์„ค๋ช…ํ•˜์ž๋ฉด, nfqueue(๋˜๋Š” NetfilterQueue)๋Š” ์ปค๋„ ๋ชจ๋“ˆ ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅด๋Š” ์•„๋งˆ์ถ”์–ด๋ฅผ ์œ„ํ•œ ํŠน๋ณ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. netfilter(nftables/iptables)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋„คํŠธ์›Œํฌ ํŒจํ‚ท์„ ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์œผ๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ•˜๊ณ  ์ด๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์ˆ˜๋‹จ์€ ์ˆ˜์ •(์„ ํƒ ์‚ฌํ•ญ)ํ•˜์—ฌ ์ปค๋„์— ๋‹ค์‹œ ์ œ๊ณตํ•˜๊ฑฐ๋‚˜ ํ๊ธฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ผ๋ถ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—๋Š” nfqueue ์ž‘์—…์„ ์œ„ํ•œ ๋ฐ”์ธ๋”ฉ์ด ์žˆ์ง€๋งŒ bash์—๋Š” ์•„๋ฌด๊ฒƒ๋„ ์—†์—ˆ์Šต๋‹ˆ๋‹ค(ํฅ, ๋†€๋ž์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค). Python์„ ์‚ฌ์šฉํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ipipou๋Š” ๋‹ค์Œ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋„ทํ•„ํ„ฐํ.

์„ฑ๋Šฅ์ด ์ค‘์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ์‹คํ—˜์ ์ธ ๋ฐ์ดํ„ฐ ์ „์†ก ํ”„๋กœํ† ์ฝœ์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ ๋น„ํ‘œ์ค€ ๋™์ž‘์œผ๋กœ ๋กœ์ปฌ ๋ฐ ์›๊ฒฉ ์„œ๋น„์Šค๋ฅผ ํŠธ๋กค๋งํ•˜๋Š” ๋“ฑ ์ƒ๋‹นํžˆ ๋‚ฎ์€ ์ˆ˜์ค€์—์„œ ํŒจํ‚ท ์ž‘์—…์„ ์œ„ํ•œ ์ž์ฒด ๋…ผ๋ฆฌ๋ฅผ ์ƒ๋Œ€์ ์œผ๋กœ ๋น ๋ฅด๊ณ  ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์›์‹œ ์†Œ์ผ“์€ nfqueue์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ„ฐ๋„์ด ์ด๋ฏธ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ณ  FOU๊ฐ€ ์›ํ•˜๋Š” ํฌํŠธ์—์„œ ์ˆ˜์‹  ๋Œ€๊ธฐ ์ค‘์ธ ๊ฒฝ์šฐ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ๋™์ผํ•œ ํฌํŠธ์—์„œ ํŒจํ‚ท์„ ๋ณด๋‚ผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ ์ค‘์ด์ง€๋งŒ ๋ฌด์ž‘์œ„๋กœ ์ƒ์„ฑ๋œ ํŒจํ‚ท์„ ์›์‹œ ์†Œ์ผ“์„ ์‚ฌ์šฉํ•˜์—ฌ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ง์ ‘ ๊ฐ€์ ธ์™€ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ํŒจํ‚ท์„ ์ƒ์„ฑํ•˜๋ ค๋ฉด ์•ฝ๊ฐ„์˜ ์ˆ˜์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ipipou์—์„œ ์ธ์ฆ์ด ํฌํ•จ๋œ ํŒจํ‚ท์ด ์ƒ์„ฑ๋˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

ipipou๋Š” ์—ฐ๊ฒฐ์˜ ์ฒซ ๋ฒˆ์งธ ํŒจํ‚ท(๋ฐ ์—ฐ๊ฒฐ์ด ์„ค์ •๋˜๊ธฐ ์ „์— ๋Œ€๊ธฐ์—ด๋กœ ๋ˆ„์ถœ๋œ ํŒจํ‚ท)๋งŒ ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ ์„ฑ๋Šฅ์ด ๊ฑฐ์˜ ์ €ํ•˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ipipou ์„œ๋ฒ„๊ฐ€ ์ธ์ฆ๋œ ํŒจํ‚ท์„ ์ˆ˜์‹ ํ•˜์ž๋งˆ์ž ํ„ฐ๋„์ด ์ƒ์„ฑ๋˜๊ณ  ์—ฐ๊ฒฐ์˜ ๋ชจ๋“  ํ›„์† ํŒจํ‚ท์€ ์ด๋ฏธ nfqueue๋ฅผ ์šฐํšŒํ•˜๋Š” ์ปค๋„์— ์˜ํ•ด ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ์ด ์‹คํŒจํ•˜๋ฉด ์„ค์ •์— ๋”ฐ๋ผ ๋‹ค์Œ ํŒจํ‚ท์˜ ์ฒซ ๋ฒˆ์งธ ํŒจํ‚ท์ด nfqueue ๋Œ€๊ธฐ์—ด๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ์ธ์ฆ๋œ ํŒจํ‚ท์ด ์•„๋‹Œ ๊ฒฝ์šฐ ๋งˆ์ง€๋ง‰์œผ๋กœ ๊ธฐ์–ต๋œ IP ๋ฐ ํด๋ผ์ด์–ธํŠธ ํฌํŠธ์—์„œ ์ „๋‹ฌ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผœ๊ฑฐ๋‚˜ ํ๊ธฐํ•ฉ๋‹ˆ๋‹ค. ์ธ์ฆ๋œ ํŒจํ‚ท์ด ์ƒˆ IP ๋ฐ ํฌํŠธ์—์„œ ์˜ค๋Š” ๊ฒฝ์šฐ ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ„ฐ๋„์ด ์žฌ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์ธ IPIP-over-FOU์—๋Š” NAT๋กœ ์ž‘์—…ํ•  ๋•Œ ํ•œ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ๋” ์žˆ์Šต๋‹ˆ๋‹ค. FOU์™€ IPIP ๋ชจ๋“ˆ์ด ์„œ๋กœ ์ƒ๋‹นํžˆ ๊ฒฉ๋ฆฌ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋™์ผํ•œ IP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ UDP๋กœ ์บก์Šํ™”๋œ ๋‘ ๊ฐœ์˜ IPIP ํ„ฐ๋„์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ €๊ฒƒ๋“ค. ๋™์ผํ•œ ๊ณต์šฉ IP ๋’ค์— ์žˆ๋Š” ํ•œ ์Œ์˜ ํด๋ผ์ด์–ธํŠธ๋Š” ์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ ๋™์ผํ•œ ์„œ๋ฒ„์— ๋™์‹œ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์•ž์œผ๋กœ๋Š”, ์–ด์ฉŒ๋ฉด, ์ปค๋„ ์ˆ˜์ค€์—์„œ ํ•ด๊ฒฐ๋  ์˜ˆ์ •์ด์ง€๋งŒ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋™์•ˆ NAT ๋ฌธ์ œ๋Š” NAT๋ฅผ ํ†ตํ•ด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. IP ์ฃผ์†Œ ์Œ์ด ์ด๋ฏธ ๋‹ค๋ฅธ ํ„ฐ๋„์—์„œ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ ipipou๋Š” ๊ณต์šฉ์—์„œ ๋Œ€์ฒด ๊ฐœ์ธ IP๋กœ NAT๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์งœ์ž”! - ํฌํŠธ๊ฐ€ ๋‹ค ๋–จ์–ด์งˆ ๋•Œ๊นŒ์ง€ ํ„ฐ๋„์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์™œ๋ƒํ•˜๋ฉด ์—ฐ๊ฒฐ์˜ ๋ชจ๋“  ํŒจํ‚ท์ด ์„œ๋ช…๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ด ๊ฐ„๋‹จํ•œ ๋ณดํ˜ธ๋Š” MITM์— ์ทจ์•ฝํ•˜๋ฏ€๋กœ ํŠธ๋ž˜ํ”ฝ์„ ๋“ฃ๊ณ  ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ์‚ฌ์ด์˜ ๊ฒฝ๋กœ์— ์ˆจ์–ด ์žˆ๋Š” ์•…๋‹น์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ธ์ฆ๋œ ํŒจํ‚ท์„ ๋‹ค์Œ์„ ํ†ตํ•ด ๋ฆฌ๋””๋ ‰์…˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ํ˜ธ์ŠคํŠธ์—์„œ ํ„ฐ๋„์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

ํŠธ๋ž˜ํ”ฝ์˜ ๋Œ€๋ถ€๋ถ„์„ ์ฝ”์–ด์— ๋‚จ๊ฒจ๋‘๋ฉด์„œ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๊ฐ€ ์žˆ๋Š” ์‚ฌ๋žŒ์ด ์žˆ๋‹ค๋ฉด ์ฃผ์ €ํ•˜์ง€ ๋ง๊ณ  ์•Œ๋ ค์ฃผ์„ธ์š”.

๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , UDP์˜ ์บก์Šํ™”๋Š” ๋งค์šฐ ์ž˜ ์ž…์ฆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. IP๋ฅผ ํ†ตํ•œ ์บก์Šํ™”์™€ ๋น„๊ตํ•˜๋ฉด UDP ํ—ค๋”์˜ ์ถ”๊ฐ€ ์˜ค๋ฒ„ํ—ค๋“œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ํ›จ์”ฌ ๋” ์•ˆ์ •์ ์ด๊ณ  ๋” ๋น ๋ฅธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ธํ„ฐ๋„ท์˜ ๋Œ€๋ถ€๋ถ„์˜ ํ˜ธ์ŠคํŠธ๊ฐ€ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์„ธ ๊ฐ€์ง€ ํ”„๋กœํ† ์ฝœ์ธ TCP, UDP, ICMP์—์„œ๋งŒ ์ž˜ ์ž‘๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์œ ํ˜•์ ์ธ ๋ถ€๋ถ„์€ ์ด ์„ธ ๊ฐ€์ง€์—๋งŒ ์ตœ์ ํ™”๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ์„ ์™„์ „ํžˆ ๋ฒ„๋ฆฌ๊ฑฐ๋‚˜ ๋” ๋Š๋ฆฌ๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, HTTP/3์˜ ๊ธฐ๋ฐ˜์ด ๋˜๋Š” QUICK์ด IP๊ฐ€ ์•„๋‹Œ UDP ์œ„์— ๋งŒ๋“ค์–ด์ง„ ์ด์œ ๊ฐ€ ์—ฌ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธ€์Ž„์š”, ์ด์ œ ๊ทธ๊ฒƒ์ด "์‹ค์ œ ์„ธ๊ณ„"์—์„œ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์•Œ์•„๋ณผ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค.

์ „ํˆฌ

์‹ค์ œ ์„ธ๊ณ„๋ฅผ ์—๋ฎฌ๋ ˆ์ดํŠธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. iperf3. ํ˜„์‹ค๊ณผ์˜ ์นœ๋ฐ€๋„ ์ธก๋ฉด์—์„œ ์ด๊ฒƒ์€ Minecraft์—์„œ ํ˜„์‹ค ์„ธ๊ณ„๋ฅผ ์—๋ฎฌ๋ ˆ์ดํŠธํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฑฐ์˜ ๋™์ผํ•˜์ง€๋งŒ ์ง€๊ธˆ์€ ๊ทธ๋ ‡๊ฒŒ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋Œ€ํšŒ ์ฐธ๊ฐ€์ž:

  • ์ฐธ์กฐ ๋ฉ”์ธ ์ฑ„๋„
  • ์ด๋ฒˆ ๊ธ€์˜ ์ฃผ์ธ๊ณต์€ ์ดํ”ผํฌ์ž…๋‹ˆ๋‹ค
  • ์ธ์ฆ์€ ์žˆ์ง€๋งŒ ์•”ํ˜ธํ™”๋Š” ์—†๋Š” OpenVPN
  • ํฌ๊ด„์  ๋ชจ๋“œ์˜ OpenVPN
  • PresharedKey๊ฐ€ ์—†๋Š” WireGuard, 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

20Mbps ์ฑ„๋„

ipipou: ๋‹จ์ˆœํ•œ ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ ํ„ฐ๋„ ๊ทธ ์ด์ƒ

ipipou: ๋‹จ์ˆœํ•œ ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ ํ„ฐ๋„ ๊ทธ ์ด์ƒ

1๊ฐœ ๋‚™๊ด€์  Gbps๋‹น ์ฑ„๋„

ipipou: ๋‹จ์ˆœํ•œ ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ ํ„ฐ๋„ ๊ทธ ์ด์ƒ

ipipou: ๋‹จ์ˆœํ•œ ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ ํ„ฐ๋„ ๊ทธ ์ด์ƒ

๋ชจ๋“  ๊ฒฝ์šฐ์— ์žˆ์–ด์„œ ipipou๋Š” ์„ฑ๋Šฅ ๋ฉด์—์„œ ๊ธฐ๋ณธ ์ฑ„๋„๊ณผ ๋งค์šฐ ์œ ์‚ฌํ•˜๋ฉฐ ์ด๋Š” ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค!

์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ openvpn ํ„ฐ๋„์€ ๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘ ๋งค์šฐ ์ด์ƒํ•˜๊ฒŒ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ˆ„๊ตฌ๋“ ์ง€ ํ…Œ์ŠคํŠธํ•˜๋ ค๊ณ  ํ•œ๋‹ค๋ฉด ํ”ผ๋“œ๋ฐฑ์„ ๋“ฃ๋Š” ๊ฒƒ์ด ํฅ๋ฏธ๋กœ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

IPv6์™€ NetPrickle์ด ์šฐ๋ฆฌ์™€ ํ•จ๊ป˜ํ•˜๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค!

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€