๋„คํŠธ์›Œํฌ๋ฅผ ํ•˜๋‚˜์˜ L2 ๋„คํŠธ์›Œํฌ๋กœ ํ†ตํ•ฉํ•˜๊ธฐ ์œ„ํ•ด OpenVPN์—์„œ WireGuard๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

๋„คํŠธ์›Œํฌ๋ฅผ ํ•˜๋‚˜์˜ L2 ๋„คํŠธ์›Œํฌ๋กœ ํ†ตํ•ฉํ•˜๊ธฐ ์œ„ํ•ด OpenVPN์—์„œ WireGuard๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

OpenWRT๋ฅผ ๊ฒŒ์ดํŠธ์›จ์ด๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ผ์šฐํ„ฐ๋ฅผ ๊ฐ๊ฐ ์‚ฌ์šฉํ•˜๋Š” ์ง€๋ฆฌ์ ์œผ๋กœ ๋–จ์–ด์ง„ 3๊ฐœ์˜ ์•„ํŒŒํŠธ์—์„œ ๋„คํŠธ์›Œํฌ๋ฅผ ํ•˜๋‚˜์˜ ๊ณตํ†ต ๋„คํŠธ์›Œํฌ๋กœ ๊ฒฐํ•ฉํ•œ ๊ฒฝํ—˜์„ ๊ณต์œ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์„œ๋ธŒ๋„ท ๋ผ์šฐํŒ…์ด ์žˆ๋Š” L2์™€ ๋ธŒ๋ฆฌ์ง•์ด ์žˆ๋Š” LXNUMX ์‚ฌ์ด์˜ ๋„คํŠธ์›Œํฌ๋ฅผ ๊ฒฐํ•ฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ ํƒํ•  ๋•Œ ๋ชจ๋“  ๋„คํŠธ์›Œํฌ ๋…ธ๋“œ๊ฐ€ ๋™์ผํ•œ ์„œ๋ธŒ๋„ท์— ์žˆ์„ ๋•Œ ๊ตฌ์„ฑํ•˜๊ธฐ๊ฐ€ ๋” ์–ด๋ ต์ง€๋งŒ ํˆฌ๋ช…ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋งŽ์€ ๊ธฐํšŒ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋‘ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์ด ์„ ํ˜ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒ์„ฑ๋œ ๋„คํŠธ์›Œํฌ Wake-on-Lan ๋ฐ DLNA์—์„œ ๊ธฐ์ˆ  ์‚ฌ์šฉ์ด ๊ณ„ํš๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํŒŒํŠธ 1: ๋ฐฐ๊ฒฝ

OpenVPN์€ ์ฒ˜์Œ์— ์ด ์ž‘์—…์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ๋กœ ์„ ํƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ๋กœ ์•„๋ฌด ๋ฌธ์ œ ์—†์ด ๋ธŒ๋ฆฌ์ง€์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ํƒญ ์žฅ์น˜๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๊ณ  ๋‘ ๋ฒˆ์งธ๋กœ OpenVPN์ด TCP ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•œ ์ž‘์—…์„ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์–ด๋–ค ์•„ํŒŒํŠธ์—๋„ ์ „์šฉ IP ์ฃผ์†Œ๊ฐ€ ์—†์—ˆ๊ณ  STUN์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์ด์œ ๋กœ ISP๊ฐ€ ๋„คํŠธ์›Œํฌ์—์„œ ๋“ค์–ด์˜ค๋Š” UDP ์—ฐ๊ฒฐ์„ ์ฐจ๋‹จํ•˜๊ณ  TCP ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด SSH๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž„๋Œ€ํ•œ VPS์—์„œ VPN ์„œ๋ฒ„ ํฌํŠธ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์˜ˆ, ์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‘ ๋ฒˆ ์•”ํ˜ธํ™”๋˜๊ธฐ ๋•Œ๋ฌธ์— ํฐ ๋ถ€ํ•˜๋ฅผ ์ฃผ์ง€๋งŒ ์ œ XNUMX์ž๊ฐ€ ์—ฌ์ „ํžˆ ์ œ์–ดํ•  ์œ„ํ—˜์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— VPS๋ฅผ ๊ฐœ์ธ ๋„คํŠธ์›Œํฌ์— ๋„์ž…ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํ™ˆ ๋„คํŠธ์›Œํฌ์˜ ์žฅ์น˜๋Š” ๋งค์šฐ ๋ฐ”๋žŒ์งํ•˜์ง€ ์•Š์•˜๊ณ  ํฐ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์žˆ๋Š” ๋ณด์•ˆ ๋น„์šฉ์„ ์ง€๋ถˆํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

์„œ๋ฒ„๋ฅผ ๋ฐฐํฌํ•  ๋ผ์šฐํ„ฐ์˜ ํฌํŠธ๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด sshtunnel ํ”„๋กœ๊ทธ๋žจ์ด ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ์„ฑ์˜ ๋ณต์žก์„ฑ์— ๋Œ€ํ•ด์„œ๋Š” ์„ค๋ช…ํ•˜์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋งค์šฐ ์‰ฝ๊ฒŒ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ๊ทธ ์ž‘์—…์€ ๋ผ์šฐํ„ฐ์—์„œ VPS๋กœ TCP ํฌํŠธ 1194๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ์œผ๋กœ br-lan ๋ธŒ๋ฆฌ์ง€์— ์—ฐ๊ฒฐ๋œ tap0 ์žฅ์น˜์— OpenVPN ์„œ๋ฒ„๋ฅผ ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ๋žฉํ†ฑ์—์„œ ์ƒˆ๋กœ ์ƒ์„ฑ ๋œ ์„œ๋ฒ„์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ์„ ํ™•์ธํ•œ ํ›„ ํฌํŠธ ํฌ์›Œ๋”ฉ์— ๋Œ€ํ•œ ์•„์ด๋””์–ด ์ž์ฒด๊ฐ€ ์ •๋‹นํ•˜๊ณ  ๋‚ด ๋žฉํ†ฑ์ด ๋ฌผ๋ฆฌ์ ์œผ๋กœ๋Š” ์•„๋‹ˆ์ง€๋งŒ ๋ผ์šฐํ„ฐ ๋„คํŠธ์›Œํฌ์˜ ๊ตฌ์„ฑ์›์ด ๋œ ๊ฒƒ์ด ๋ถ„๋ช…ํ•ด์กŒ์Šต๋‹ˆ๋‹ค.

ํ•ด์•ผ ํ•  ์ผ์ด ํ•˜๋‚˜ ๋‚จ์•˜์Šต๋‹ˆ๋‹ค. IP ์ฃผ์†Œ๊ฐ€ ์ถฉ๋Œํ•˜์ง€ ์•Š๋„๋ก ์—ฌ๋Ÿฌ ์•„ํŒŒํŠธ์— ๋ฐฐํฌํ•˜๊ณ  ๋ผ์šฐํ„ฐ๋ฅผ OpenVPN ํด๋ผ์ด์–ธํŠธ๋กœ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ด ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค.
๋‹ค์Œ ๋ผ์šฐํ„ฐ IP ์ฃผ์†Œ ๋ฐ DHCP ์„œ๋ฒ„ ๋ฒ”์œ„๊ฐ€ ์„ ํƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • 192.168.10.1 ๋ฒ”์œ„ ํฌํ•จ 192.168.10.2 - 192.168.10.80 ์„œ๋ฒ„์šฉ
  • 192.168.10.100 ๋ฒ”์œ„ ํฌํ•จ 192.168.10.101 - 192.168.10.149 2ํ˜ธ ์•„ํŒŒํŠธ ๋ผ์šฐํ„ฐ์šฉ
  • 192.168.10.150 ๋ฒ”์œ„ ํฌํ•จ 192.168.10.151 - 192.168.10.199 3ํ˜ธ ์•„ํŒŒํŠธ ๋ผ์šฐํ„ฐ์šฉ

๋˜ํ•œ ํ•ด๋‹น ๊ตฌ์„ฑ์— ๋ผ์ธ์„ ์ถ”๊ฐ€ํ•˜์—ฌ OpenVPN ์„œ๋ฒ„์˜ ํด๋ผ์ด์–ธํŠธ ๋ผ์šฐํ„ฐ์— ์ด๋Ÿฌํ•œ ์ฃผ์†Œ๋ฅผ ์ •ํ™•ํžˆ ํ• ๋‹นํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

ifconfig-pool-persist /etc/openvpn/ipp.txt 0

/etc/openvpn/ipp.txt ํŒŒ์ผ์— ๋‹ค์Œ ์ค„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

flat1_id 192.168.10.100
flat2_id 192.168.10.150

์—ฌ๊ธฐ์„œ flat1_id ๋ฐ flat2_id๋Š” OpenVPN์— ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์ธ์ฆ์„œ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์ง€์ •๋œ ์žฅ์น˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ์œผ๋กœ ๋ผ์šฐํ„ฐ์—์„œ OpenVPN ํด๋ผ์ด์–ธํŠธ๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ๋‘˜ ๋‹ค์— ์žˆ๋Š” tap0 ์žฅ์น˜๋ฅผ br-lan ๋ธŒ๋ฆฌ์ง€์— ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„์—์„œ๋Š” ์„ธ ๊ฐœ์˜ ๋„คํŠธ์›Œํฌ๊ฐ€ ๋ชจ๋‘ ์„œ๋กœ๋ฅผ ๋ณด๊ณ  ์ „์ฒด์ ์œผ๋กœ ์ž‘๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์ธ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์˜€์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋‹ค์ง€ ์œ ์พŒํ•˜์ง€ ์•Š์€ ์„ธ๋ถ€ ์‚ฌํ•ญ์ด ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค. ๋•Œ๋•Œ๋กœ ์žฅ์น˜๋Š” ๋ผ์šฐํ„ฐ๊ฐ€ ์•„๋‹Œ IP ์ฃผ์†Œ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ชจ๋“  ํ›„์† ๊ฒฐ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ์ด์œ ๋กœ ์•„ํŒŒํŠธ ์ค‘ ํ•˜๋‚˜์˜ ๋ผ์šฐํ„ฐ๊ฐ€ DHCPDISCOVER์— ์ œ ์‹œ๊ฐ„์— ์‘๋‹ตํ•  ์‹œ๊ฐ„์ด ์—†์—ˆ๊ณ  ์žฅ์น˜๊ฐ€ ์ž˜๋ชป๋œ ์ฃผ์†Œ๋ฅผ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ฐ ๋ผ์šฐํ„ฐ์˜ tap0์—์„œ ์ด๋Ÿฌํ•œ ์š”์ฒญ์„ ํ•„ํ„ฐ๋งํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์ง€๋งŒ ๊ฒฐ๊ณผ์ ์œผ๋กœ iptables๋Š” ์žฅ์น˜๊ฐ€ ๋ธŒ๋ฆฌ์ง€์˜ ์ผ๋ถ€์ธ ๊ฒฝ์šฐ ์žฅ์น˜์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ebtables๊ฐ€ ๋‚˜๋ฅผ ๊ตฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์œ ๊ฐ์Šค๋Ÿฝ๊ฒŒ๋„ ๋‚ด ํŽŒ์›จ์–ด์—๋Š” ์—†์—ˆ์œผ๋ฉฐ ๊ฐ ์žฅ์น˜์˜ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์‹œ ๋นŒ๋“œํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๊ณ  ๊ฐ ๋ผ์šฐํ„ฐ์˜ /etc/rc.local์— ๋‹ค์Œ ์ค„์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

ebtables -A INPUT --in-interface tap0 --protocol ipv4 --ip-protocol udp --ip-destination-port 67:68 -j DROP
ebtables -A INPUT --in-interface tap0 --protocol ipv4 --ip-protocol udp --ip-source-port 67:68 -j DROP
ebtables -A FORWARD --out-interface tap0 --protocol ipv4 --ip-protocol udp --ip-destination-port 67:68 -j DROP
ebtables -A FORWARD --out-interface tap0 --protocol ipv4 --ip-protocol udp --ip-source-port 67:68 -j DROP

์ด ๊ตฌ์„ฑ์€ XNUMX๋…„ ๋™์•ˆ ์ง€์†๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

2๋ถ€: WireGuard ์†Œ๊ฐœ

์ตœ๊ทผ ์ธํ„ฐ๋„ท์€ WireGuard์— ๋Œ€ํ•ด ์ ์  ๋” ๋งŽ์ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๊ตฌ์„ฑ์˜ ๋‹จ์ˆœ์„ฑ, ๋†’์€ ์ „์†ก ์†๋„, ์œ ์‚ฌํ•œ ๋ณด์•ˆ์œผ๋กœ ๋‚ฎ์€ ํ•‘์— ๊ฐํƒ„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์— ๋Œ€ํ•œ ๋” ๋งŽ์€ ์ •๋ณด๋ฅผ ๊ฒ€์ƒ‰ํ•œ ๊ฒฐ๊ณผ ๋ธŒ๋ฆฌ์ง€ ๊ตฌ์„ฑ์›์œผ๋กœ ์ž‘๋™ํ•˜๊ฑฐ๋‚˜ TCP ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•œ ์ž‘์—…์ด ์ง€์›๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด ๋ถ„๋ช…ํ•ด์กŒ๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ์ „ํžˆ OpenVPN์— ๋Œ€ํ•œ ๋Œ€์•ˆ์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ WireGuard๋ฅผ ์•Œ๊ฒŒ ๋˜๋Š” ๊ฒƒ์„ ๋ฏธ๋ค˜์Šต๋‹ˆ๋‹ค.

๋ฉฐ์น  ์ „ IT์™€ ๊ด€๋ จ๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ํ†ตํ•ด WireGuard๊ฐ€ ๋งˆ์นจ๋‚ด ๋ฒ„์ „ 5.6๋ถ€ํ„ฐ Linux ์ปค๋„์— ํฌํ•จ๋  ๊ฒƒ์ด๋ผ๋Š” ์†Œ์‹์ด ํผ์กŒ์Šต๋‹ˆ๋‹ค. ํ•ญ์ƒ ๊ทธ๋ ‡๋“ฏ์ด ๋‰ด์Šค ๊ธฐ์‚ฌ๋Š” WireGuard๋ฅผ ์นญ์ฐฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ข‹์€ ์˜ค๋ž˜๋œ OpenVPN์„ ๋Œ€์ฒดํ•  ๋ฐฉ๋ฒ•์„ ์ฐพ๊ธฐ ์œ„ํ•ด ๋‹ค์‹œ ๋›ฐ์–ด๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ์— ๋‚˜๋Š” ๋‹ฌ๋ ค๋“ค์—ˆ๋‹ค. ์ด ๋ฌธ์„œ. GRE๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ L3๋ฅผ ํ†ตํ•œ ์ด๋”๋„ท ํ„ฐ๋„ ์ƒ์„ฑ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ์‚ฌ๋Š” ๋‚˜์—๊ฒŒ ํฌ๋ง์„ ์ฃผ์—ˆ๋‹ค. UDP ํ”„๋กœํ† ์ฝœ๋กœ ๋ฌด์—‡์„ ํ•ด์•ผ ํ• ์ง€ ๋ถˆ๋ถ„๋ช…ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ UDP ํฌํŠธ๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด SSH ํ„ฐ๋„๊ณผ ํ•จ๊ป˜ socat์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ธฐ์‚ฌ๊ฐ€ ๋‚˜์™”์ง€๋งŒ ์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋‹จ์ผ ์—ฐ๊ฒฐ ๋ชจ๋“œ์—์„œ๋งŒ ์ž‘๋™ํ•˜๋ฏ€๋กœ ์—ฌ๋Ÿฌ VPN ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. VPS์— VPN ์„œ๋ฒ„๋ฅผ ์„ค์ •ํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ์— GRE๋ฅผ ์„ค์ •ํ•˜๋Š” ์•„์ด๋””์–ด๋ฅผ ์ƒ๊ฐํ•ด ๋ƒˆ์ง€๋งŒ ์•Œ๊ณ  ๋ณด๋‹ˆ GRE๋Š” ์•”ํ˜ธํ™”๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ œXNUMX์ž๊ฐ€ ์„œ๋ฒ„์— ์•ก์„ธ์Šคํ•  ๊ฒฝ์šฐ , ๋‚ด ๋„คํŠธ์›Œํฌ ๊ฐ„์˜ ๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ์€ ๋‚˜์—๊ฒŒ ์ „ํ˜€ ์ ํ•ฉํ•˜์ง€ ์•Š์€ ์†์— ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์‹œ ํ•œ ๋ฒˆ, ๋‹ค์Œ ์ฒด๊ณ„์— ๋”ฐ๋ผ VPN over VPN์„ ์‚ฌ์šฉํ•˜์—ฌ ์ค‘๋ณต ์•”ํ˜ธํ™”๋ฅผ ์„ ํ˜ธํ•˜๋Š” ๊ฒฐ์ •์ด ๋‚ด๋ ค์กŒ์Šต๋‹ˆ๋‹ค.

๋ ˆ์ด์–ด XNUMX VPN:
VPS ์ด ์„ฌ๊ธฐ๋Š” ์‚ฌ๋žŒ ๋‚ด๋ถ€ ์ฃผ์†Œ 192.168.30.1 ํฌํ•จ
MS ์ด ๊ณ ๊ฐ ๋‚ด๋ถ€ ์ฃผ์†Œ๊ฐ€ 192.168.30.2์ธ VPS
MK2 ์ด ๊ณ ๊ฐ ๋‚ด๋ถ€ ์ฃผ์†Œ๊ฐ€ 192.168.30.3์ธ VPS
MK3 ์ด ๊ณ ๊ฐ ๋‚ด๋ถ€ ์ฃผ์†Œ๊ฐ€ 192.168.30.4์ธ VPS

๋ ˆ์ด์–ด XNUMX VPN:
MS ์ด ์„ฌ๊ธฐ๋Š” ์‚ฌ๋žŒ ์™ธ๋ถ€ ์ฃผ์†Œ 192.168.30.2 ๋ฐ ๋‚ด๋ถ€ ์ฃผ์†Œ 192.168.31.1
MK2 ์ด ๊ณ ๊ฐ MS ์ฃผ์†Œ๋Š” 192.168.30.2์ด๊ณ  ๋‚ด๋ถ€ IP๋Š” 192.168.31.2์ž…๋‹ˆ๋‹ค.
MK3 ์ด ๊ณ ๊ฐ MS ์ฃผ์†Œ๋Š” 192.168.30.2์ด๊ณ  ๋‚ด๋ถ€ IP๋Š” 192.168.31.3์ž…๋‹ˆ๋‹ค.

* MS - ์•„ํŒŒํŠธ 1์˜ ๋ผ์šฐํ„ฐ ์„œ๋ฒ„, MK2 - ์•„ํŒŒํŠธ 2์˜ ๋ผ์šฐํ„ฐ, MK3 - ์•„ํŒŒํŠธ 3์˜ ๋ผ์šฐํ„ฐ
* ์žฅ์น˜ ๊ตฌ์„ฑ์€ ๊ธฐ์‚ฌ ๋์˜ ์Šคํฌ์ผ๋Ÿฌ์— ๊ฒŒ์‹œ๋ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋„คํŠธ์›Œํฌ 192.168.31.0/24์˜ ๋…ธ๋“œ ๊ฐ„ ping์ด ๋ฐœ์ƒํ•˜๋ฉด GRE ํ„ฐ๋„ ์„ค์ •์œผ๋กœ ๋„˜์–ด๊ฐˆ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. ๊ทธ ์ „์— ๋ผ์šฐํ„ฐ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์žƒ์ง€ ์•Š์œผ๋ ค๋ฉด ํฌํŠธ 22๋ฅผ VPS๋กœ ์ „๋‹ฌํ•˜๋„๋ก SSH ํ„ฐ๋„์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์•„ํŒŒํŠธ 10022์˜ ๋ผ์šฐํ„ฐ๋Š” VPS์˜ ํฌํŠธ 2์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„ํŒŒํŠธ 11122์˜ ๋ผ์šฐํ„ฐ๋Š” VPS์˜ ํฌํŠธ 3์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ์•„ํŒŒํŠธ XNUMX์˜ ๋ผ์šฐํ„ฐ ๋ผ์šฐํ„ฐ๊ฐ€ ๋–จ์–ด์งˆ ๊ฒฝ์šฐ ํ„ฐ๋„์„ ๋ณต์›ํ•˜๋ฏ€๋กœ ๋™์ผํ•œ sshtunnel๋กœ ํฌ์›Œ๋”ฉ์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์Šต๋‹ˆ๋‹ค.

ํ„ฐ๋„์ด ๊ตฌ์„ฑ๋˜๋ฉด ์ „๋‹ฌ๋œ ํฌํŠธ๋ฅผ ํ†ตํ•ด SSH์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ssh root@ะœะžะ™_VPS -p 10022

๋‹ค์Œ์œผ๋กœ OpenVPN์„ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

/etc/init.d/openvpn stop

์ด์ œ ์•„ํŒŒํŠธ 2์˜ ๋ผ์šฐํ„ฐ์— GRE ํ„ฐ๋„์„ ์„ค์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

ip link add grelan0 type gretap remote 192.168.31.1 local 192.168.31.2
ip link set grelan0 up

๊ทธ๋ฆฌ๊ณ  ์ƒ์„ฑ๋œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ธŒ๋ฆฌ์ง€์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

brctl addif br-lan grelan0

์„œ๋ฒ„ ๋ผ์šฐํ„ฐ์—์„œ ์œ ์‚ฌํ•œ ์ ˆ์ฐจ๋ฅผ ์ˆ˜ํ–‰ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

ip link add grelan0 type gretap remote 192.168.31.2 local 192.168.31.1
ip link set grelan0 up

๋˜ํ•œ ์ƒ์„ฑ๋œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ธŒ๋ฆฌ์ง€์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

brctl addif br-lan grelan0

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

$ telnet 192.168.10.110 22
SSH-2.0-OpenSSH_8.1

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

๋ธŒ๋ฆฌ์ง€์—์„œ grelan0 ์žฅ์น˜๋ฅผ ๊บผ๋‚ด ์•„ํŒŒํŠธ 2์˜ ๋ผ์šฐํ„ฐ์—์„œ OpenVPN์„ ์‹œ์ž‘ํ•˜๊ณ  ๋„คํŠธ์›Œํฌ๊ฐ€ ๋‹ค์‹œ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๊ณ  ์—ฐ๊ฒฐ์ด ๋Š๊ธฐ์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๊ฒ€์ƒ‰ ์ค‘ ์‚ฌ๋žŒ๋“ค์ด ๋™์ผํ•œ ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋ถˆํ‰ํ•˜๊ณ  MTU๋ฅผ ๋†’์ด๋ผ๋Š” ์กฐ์–ธ์„ ๋ฐ›๋Š” ํฌ๋Ÿผ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋งํ•œ ๊ฒƒ๋ณด๋‹ค ๋นจ๋ฆฌ. ๊ทธ๋Ÿฌ๋‚˜ MTU๊ฐ€ gretap ์žฅ์น˜์— ๋Œ€ํ•ด ์ถฉ๋ถ„ํžˆ ํฐ ๊ฐ’์ธ 7000์œผ๋กœ ์„ค์ •๋  ๋•Œ๊นŒ์ง€ TCP ์—ฐ๊ฒฐ์ด ๋Š์–ด์ง€๊ฑฐ๋‚˜ ๋Š๋ฆฐ ์ „์†ก์ด ๊ด€์ฐฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. gretap์— ๋Œ€ํ•œ ๋†’์€ MTU๋กœ ์ธํ•ด ์ฒซ ๋ฒˆ์งธ ๋ฐ ๋‘ ๋ฒˆ์งธ ์ˆ˜์ค€์˜ WireGuard ์—ฐ๊ฒฐ์— ๋Œ€ํ•œ MTU๋Š” ๊ฐ๊ฐ 8000 ๋ฐ 7500์œผ๋กœ ์„ค์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์•„ํŒŒํŠธ 3์˜ ๋ผ์šฐํ„ฐ์—์„œ ๋น„์Šทํ•œ ์„ค์ •์„ ์ˆ˜ํ–‰ํ–ˆ์œผ๋ฉฐ ์œ ์ผํ•œ ์ฐจ์ด์ ์€ grelan1์ด๋ผ๋Š” ๋‘ ๋ฒˆ์งธ gretap ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์„œ๋ฒ„ ๋ผ์šฐํ„ฐ์— ์ถ”๊ฐ€๋˜์—ˆ๊ณ  br-lan ๋ธŒ๋ฆฌ์ง€์—๋„ ์ถ”๊ฐ€๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  ๊ฒƒ์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ gretap ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ์ž๋™ ๋กœ๋“œ์— ๋„ฃ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด:

์•„ํŒŒํŠธ 2์— ์žˆ๋Š” ๋ผ์šฐํ„ฐ์˜ /etc/rc.local์— ๋‹ค์Œ ์ค„์„ ๋ฐฐ์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

ip link add grelan0 type gretap remote 192.168.31.1 local 192.168.31.2
ip link set dev grelan0 mtu 7000
ip link set grelan0 up
brctl addif br-lan grelan0

์ด๊ฒƒ์„ ์•„ํŒŒํŠธ 3์˜ ๋ผ์šฐํ„ฐ์— ์žˆ๋Š” /etc/rc.local์— ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

ip link add grelan0 type gretap remote 192.168.31.1 local 192.168.31.3
ip link set dev grelan0 mtu 7000
ip link set grelan0 up
brctl addif br-lan grelan0

๊ทธ๋ฆฌ๊ณ  ์„œ๋ฒ„ ๋ผ์šฐํ„ฐ์—์„œ:

ip link add grelan0 type gretap remote 192.168.31.2 local 192.168.31.1
ip link set dev grelan0 mtu 7000
ip link set grelan0 up
brctl addif br-lan grelan0

ip link add grelan1 type gretap remote 192.168.31.3 local 192.168.31.1
ip link set dev grelan1 mtu 7000
ip link set grelan1 up
brctl addif br-lan grelan1

ํด๋ผ์ด์–ธํŠธ ๋ผ์šฐํ„ฐ๋ฅผ ์žฌ๋ถ€ํŒ…ํ•œ ํ›„ ์–ด๋–ค ์ด์œ ๋กœ ์„œ๋ฒ„์— ์—ฐ๊ฒฐ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. SSH์— ์—ฐ๊ฒฐํ•˜๋ฉด(๋‹คํ–‰ํžˆ๋„ ์ด์ „์— ์ด๋ฅผ ์œ„ํ•ด sshtunnel์„ ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค) WireGuard๊ฐ€ ์–ด๋–ค ์ด์œ ๋กœ ์—”๋“œํฌ์ธํŠธ์— ๋Œ€ํ•œ ๊ฒฝ๋กœ๋ฅผ ์ƒ์„ฑํ•˜์ง€๋งŒ ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 192.168.30.2์˜ ๊ฒฝ์šฐ ๊ฒฝ๋กœ ํ…Œ์ด๋ธ”์€ pppoe-wan ์ธํ„ฐํŽ˜์ด์Šค, ์ฆ‰ ์ธํ„ฐ๋„ท์„ ํ†ตํ•ด ๊ฒฝ๋กœ ํ…Œ์ด๋ธ”์— ์ง€์ •๋˜์—ˆ์ง€๋งŒ ๊ฒฝ๋กœ๋Š” wg0 ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ์ง€์ •๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ๋กœ๋ฅผ ์‚ญ์ œํ•œ ํ›„ ์—ฐ๊ฒฐ์ด ๋ณต์›๋˜์—ˆ์Šต๋‹ˆ๋‹ค. WireGuard๊ฐ€ ์ด๋Ÿฌํ•œ ๊ฒฝ๋กœ๋ฅผ ๋งŒ๋“ค์ง€ ์•Š๋„๋ก ๊ฐ•์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์นจ์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด๊ฒƒ์ด OpenWRT์˜ ๊ธฐ๋Šฅ์ธ์ง€ WireGuard ์ž์ฒด์˜ ๊ธฐ๋Šฅ์ธ์ง€์กฐ์ฐจ ์ดํ•ดํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋žœ ์‹œ๊ฐ„ ๋™์•ˆ ์ด ๋ฌธ์ œ๋ฅผ ์ฒ˜๋ฆฌํ•  ํ•„์š” ์—†์ด ํƒ€์ด๋จธ์— ์˜ํ•ด ๋ฐ˜๋ณต๋˜๋Š” ์Šคํฌ๋ฆฝํŠธ์—์„œ ์ด ๊ฒฝ๋กœ๋ฅผ ์‚ญ์ œํ•˜๋Š” ์ค„์„ ๋‘ ๋ผ์šฐํ„ฐ์— ๊ฐ„๋‹จํžˆ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

route del 192.168.30.2

์ตœ๋Œ€ ํ•ฉ๊ณ„

๋‚˜๋Š” ๋•Œ๋•Œ๋กœ ๋žฉํ†ฑ์ด๋‚˜ ์ „ํ™”์—์„œ ์ƒˆ ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐํ•ด์•ผํ•˜๊ณ  ์ผ๋ฐ˜์ ์œผ๋กœ gretap ์žฅ์น˜๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— OpenVPN์„ ์™„์ „ํžˆ ๊ฑฐ๋ถ€ํ•˜์ง€๋Š” ์•Š์•˜์ง€๋งŒ ๋ฐ์ดํ„ฐ ์ „์†ก์—์„œ ์ด์ ์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด VNC๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์ด์ƒ ๋ถˆํŽธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Ping์ด ์•ฝ๊ฐ„ ๊ฐ์†Œํ–ˆ์ง€๋งŒ ๋” ์•ˆ์ •์ ์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

OpenVPN์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ:

[r0ck3r@desktop ~]$ ping -c 20 192.168.10.110
PING 192.168.10.110 (192.168.10.110) 56(84) bytes of data.
64 bytes from 192.168.10.110: icmp_seq=1 ttl=64 time=133 ms
...
64 bytes from 192.168.10.110: icmp_seq=20 ttl=64 time=125 ms

--- 192.168.10.110 ping statistics ---
20 packets transmitted, 20 received, 0% packet loss, time 19006ms
rtt min/avg/max/mdev = 124.722/126.152/136.907/3.065 ms

WireGuard๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ:

[r0ck3r@desktop ~]$ ping -c 20 192.168.10.110
PING 192.168.10.110 (192.168.10.110) 56(84) bytes of data.
64 bytes from 192.168.10.110: icmp_seq=1 ttl=64 time=124 ms
...
64 bytes from 192.168.10.110: icmp_seq=20 ttl=64 time=124 ms
--- 192.168.10.110 ping statistics ---
20 packets transmitted, 20 received, 0% packet loss, time 19003ms
rtt min/avg/max/mdev = 123.954/124.423/126.708/0.675 ms

์ฃผ๋กœ ์•ฝ 61.5ms์ธ VPS์— ๋Œ€ํ•œ ๋†’์€ ํ•‘์˜ ์˜ํ–ฅ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์†๋„๋Š” ํฌ๊ฒŒ ์ฆ๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ผ์šฐํ„ฐ ์„œ๋ฒ„๊ฐ€ ์žˆ๋Š” ์•„ํŒŒํŠธ์—์„œ๋Š” โ€‹โ€‹์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ ์†๋„๊ฐ€ 30Mbps์ด๊ณ  ๋‹ค๋ฅธ ์•„ํŒŒํŠธ์—์„œ๋Š” โ€‹โ€‹5Mbps์ž…๋‹ˆ๋‹ค. ๋™์‹œ์— OpenVPN์„ ์‚ฌ์šฉํ•˜๋Š” ๋™์•ˆ iperf์— ๋”ฐ๋ฅด๋ฉด 3,8Mbps ์ด์ƒ์˜ ๋„คํŠธ์›Œํฌ ๊ฐ„ ๋ฐ์ดํ„ฐ ์ „์†ก ์†๋„๋ฅผ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์—†์—ˆ์ง€๋งŒ WireGuard๋Š” ๋™์ผํ•œ 5Mbps๊นŒ์ง€ "ํŽŒํ•‘"ํ–ˆ์Šต๋‹ˆ๋‹ค.

VPS์˜ WireGuard ๊ตฌ์„ฑ[Interface] Address = 192.168.30.1/24
ListenPort = 51820
PrivateKey = <ะ—ะะšะ ะซะขะซะ™_ะšะ›ะฎะง_ะ”ะ›ะฏ_VPS>

[Peer] PublicKey = <ะžะขะšะ ะซะขะซะ™_ะšะ›ะฎะง_VPN_1_ะœะก>
AllowedIPs = 192.168.30.2/32

[Peer] PublicKey = <ะžะขะšะ ะซะขะซะ™_ะšะ›ะฎะง_VPN_2_ะœะš2>
AllowedIPs = 192.168.30.3/32

[Peer] PublicKey = <ะžะขะšะ ะซะขะซะ™_ะšะ›ะฎะง_VPN_2_ะœะš3>
AllowedIPs = 192.168.30.4/32

MS์˜ WireGuard ๊ตฌ์„ฑ(/etc/config/network์— ์ถ”๊ฐ€๋จ)

#VPN ะฟะตั€ะฒะพะณะพ ัƒั€ะพะฒะฝั - ะบะปะธะตะฝั‚
config interface 'wg0'
        option proto 'wireguard'
        list addresses '192.168.30.2/24'
        option private_key 'ะ—ะะšะ ะซะขะซะ™_ะšะ›ะฎะง_VPN_1_ะœะก'
        option auto '1'
        option mtu '8000'

config wireguard_wg0
        option public_key 'ะžะขะšะ ะซะขะซะ™_ะšะ›ะฎะง_VPN_1_VPS'
        option endpoint_port '51820'
        option route_allowed_ips '1'
        option persistent_keepalive '25'
        list allowed_ips '192.168.30.0/24'
        option endpoint_host 'IP_ะะ”ะ ะ•ะก_VPS'

#VPN ะฒั‚ะพั€ะพะณะพ ัƒั€ะพะฒะฝั - ัะตั€ะฒะตั€
config interface 'wg1'
        option proto 'wireguard'
        option private_key 'ะ—ะะšะ ะซะขะซะ™_ะšะ›ะฎะง_VPN_2_ะœะก'
        option listen_port '51821'
        list addresses '192.168.31.1/24'
        option auto '1'
        option mtu '7500'

config wireguard_wg1
        option public_key 'ะžะขะšะ ะซะขะซะ™_ะšะ›ะฎะง_VPN_2_ะœะš2'
        list allowed_ips '192.168.31.2'

config wireguard_wg1ip link add grelan0 type gretap remote 192.168.31.1 local 192.168.31.3

        option public_key 'ะžะขะšะ ะซะขะซะ™_ะšะ›ะฎะง_VPN_2_ะœะš3'
        list allowed_ips '192.168.31.3'

MK2์˜ WireGuard ๊ตฌ์„ฑ(/etc/config/network์— ์ถ”๊ฐ€๋จ)

#VPN ะฟะตั€ะฒะพะณะพ ัƒั€ะพะฒะฝั - ะบะปะธะตะฝั‚
config interface 'wg0'
        option proto 'wireguard'
        list addresses '192.168.30.3/24'
        option private_key 'ะ—ะะšะ ะซะขะซะ™_ะšะ›ะฎะง_VPN_1_ะœะš2'
        option auto '1'
        option mtu '8000'

config wireguard_wg0
        option public_key 'ะžะขะšะ ะซะขะซะ™_ะšะ›ะฎะง_VPN_1_VPS'
        option endpoint_port '51820'
        option persistent_keepalive '25'
        list allowed_ips '192.168.30.0/24'
        option endpoint_host 'IP_ะะ”ะ ะ•ะก_VPS'

#VPN ะฒั‚ะพั€ะพะณะพ ัƒั€ะพะฒะฝั - ะบะปะธะตะฝั‚
config interface 'wg1'
        option proto 'wireguard'
        option private_key 'ะ—ะะšะ ะซะขะซะ™_ะšะ›ะฎะง_VPN_2_ะœะš2'
        list addresses '192.168.31.2/24'
        option auto '1'
        option listen_port '51821'
        option mtu '7500'

config wireguard_wg1
        option public_key 'ะžะขะšะ ะซะขะซะ™_ะšะ›ะฎะง_VPN_2_ะœะก'
        option endpoint_host '192.168.30.2'
        option endpoint_port '51821'
        option persistent_keepalive '25'
        list allowed_ips '192.168.31.0/24'

MK3์˜ WireGuard ๊ตฌ์„ฑ(/etc/config/network์— ์ถ”๊ฐ€๋จ)

#VPN ะฟะตั€ะฒะพะณะพ ัƒั€ะพะฒะฝั - ะบะปะธะตะฝั‚
config interface 'wg0'
        option proto 'wireguard'
        list addresses '192.168.30.4/24'
        option private_key 'ะ—ะะšะ ะซะขะซะ™_ะšะ›ะฎะง_VPN_1_ะœะš3'
        option auto '1'
        option mtu '8000'

config wireguard_wg0
        option public_key 'ะžะขะšะ ะซะขะซะ™_ะšะ›ะฎะง_VPN_1_VPS'
        option endpoint_port '51820'
        option persistent_keepalive '25'
        list allowed_ips '192.168.30.0/24'
        option endpoint_host 'IP_ะะ”ะ ะ•ะก_VPS'

#VPN ะฒั‚ะพั€ะพะณะพ ัƒั€ะพะฒะฝั - ะบะปะธะตะฝั‚
config interface 'wg1'
        option proto 'wireguard'
        option private_key 'ะ—ะะšะ ะซะขะซะ™_ะšะ›ะฎะง_VPN_2_ะœะš3'
        list addresses '192.168.31.3/24'
        option auto '1'
        option listen_port '51821'
        option mtu '7500'

config wireguard_wg1
        option public_key 'ะžะขะšะ ะซะขะซะ™_ะšะ›ะฎะง_VPN_2_ะœะก'
        option endpoint_host '192.168.30.2'
        option endpoint_port '51821'
        option persistent_keepalive '25'
        list allowed_ips '192.168.31.0/24'

๋‘ ๋ฒˆ์งธ ์ˆ˜์ค€ VPN์— ๋Œ€ํ•ด ์„ค๋ช…๋œ ๊ตฌ์„ฑ์—์„œ WireGuard ํด๋ผ์ด์–ธํŠธ์— ํฌํŠธ 51821์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.์ด๋ก ์ ์œผ๋กœ ์ด๊ฒƒ์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ถŒํ•œ์ด ์—†๋Š” ๋ฌด๋ฃŒ ํฌํŠธ์—์„œ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•„์š”ํ•˜์ง€ ์•Š์ง€๋งŒ ๋“ค์–ด์˜ค๋Š” ๋ชจ๋“  ์—ฐ๊ฒฐ์ด ํฌํŠธ 0์—์„œ ๋“ค์–ด์˜ค๋Š” UDP ์—ฐ๊ฒฐ์„ ์ œ์™ธํ•˜๊ณ  ๋ชจ๋“  ๋ผ์šฐํ„ฐ์˜ wg51821 ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ๊ฑฐ๋ถ€๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ธฐ์‚ฌ๊ฐ€ ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ์œ ์šฉํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

PS ๋˜ํ•œ ๋‚ด ๋„คํŠธ์›Œํฌ์— ์ƒˆ ์žฅ์น˜๊ฐ€ ๋‚˜ํƒ€๋‚  ๋•Œ WirePusher ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋‚ด ์ „ํ™”๋กœ PUSH ์•Œ๋ฆผ์„ ๋ณด๋‚ด๋Š” ๋‚ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ณต์œ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์Šคํฌ๋ฆฝํŠธ์— ๋Œ€ํ•œ ๋งํฌ์ž…๋‹ˆ๋‹ค. github.com/r0ck3r/device_discover.

UPDATE : OpenVPN ์„œ๋ฒ„ ๋ฐ ํด๋ผ์ด์–ธํŠธ ๊ตฌ์„ฑ

OpenVPN ์„œ๋ฒ„

client-to-client

ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/vpn-server.crt
dh /etc/openvpn/server/dh.pem
key /etc/openvpn/server/vpn-server.key

dev tap
ifconfig-pool-persist /etc/openvpn/ipp.txt 0
keepalive 10 60
proto tcp4
server-bridge 192.168.10.1 255.255.255.0 192.168.10.80 192.168.10.254
status /var/log/openvpn-status.log
verb 3
comp-lzo

OpenVPN ํด๋ผ์ด์–ธํŠธ

client
tls-client
dev tap
proto tcp
remote VPS_IP 1194 # Change to your router's External IP
resolv-retry infinite
nobind

ca client/ca.crt
cert client/client.crt
key client/client.key
dh client/dh.pem

comp-lzo
persist-tun
persist-key
verb 3

easy-rsa๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์ฆ์„œ๋ฅผ ์ƒ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

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