์ง์ฅ์์ Linux๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ง๋ง ํ์ฌ VPN์ด ํ์ฉํ์ง ์์ต๋๊น? ๊ทธ๋ ๋ค๋ฉด ์ด ๊ธฐ์ฌ๊ฐ ๋์์ด ๋ ์ ์์ง๋ง ํ์คํ์ง๋ ์์ต๋๋ค. ์ ๊ฐ ๋คํธ์ํฌ ๊ด๋ฆฌ ๋ฌธ์ ๋ฅผ ์ ์ดํดํ์ง ๋ชปํด์ ๋ชจ๋ ์ผ์ ์๋ชปํ์ ๊ฐ๋ฅ์ฑ์ด ์๋ค๋ ์ ์ ๋ฏธ๋ฆฌ ๋ง์๋๋ฆฌ๊ณ ์ถ์ต๋๋ค. ํํธ, ์ผ๋ฐ ์ฌ๋๋ค๋ ์ดํดํ ์ ์๋ ๋ฐฉ์์ผ๋ก ๊ฐ์ด๋๋ฅผ ์์ฑํ ์๋ ์์ผ๋ ๊ผญ ์๋ํด ๋ณด์๊ธธ ๊ถํฉ๋๋ค.
๊ธฐ์ฌ์๋ ๋ถํ์ํ ์ ๋ณด๊ฐ ๋ง์ด ํฌํจ๋์ด ์์ง๋ง, ์ด ์ง์์ด ์์๋ค๋ฉด VPN ์ค์ ์ ์๊ธฐ์น ์๊ฒ ๋ฐ์ํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์์ ๊ฒ์ ๋๋ค. ์ด ๊ฐ์ด๋๋ฅผ ์ฌ์ฉํ๋ ค๋ ์ฌ๋์ ๋๊ตฌ๋ ๋ด๊ฐ ๊ฒช์ง ์์ ๋ฌธ์ ๋ฅผ ๊ฒช๊ฒ ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ฉฐ, ์ด ์ถ๊ฐ ์ ๋ณด๊ฐ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ์ค์ค๋ก ํด๊ฒฐํ๋ ๋ฐ ๋์์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ด ๊ฐ์ด๋์ ์ฌ์ฉ๋ ๋๋ถ๋ถ์ ๋ช ๋ น์ ๊ฐ๊ฒฐ์ฑ์ ์ํด ์ ๊ฑฐ๋ sudo๋ฅผ ํตํด ์คํํด์ผ ํฉ๋๋ค. ๋ช ์ฌํ์ธ์.
๋๋ถ๋ถ์ IP ์ฃผ์๋ ์ฌ๊ฐํ๊ฒ ๋๋ ํ๋์ด ์์ผ๋ฏ๋ก 435.435.435.435์ ๊ฐ์ ์ฃผ์๊ฐ ํ์๋๋ฉด ํด๋น ์ฌ๋ก์ ๋ง๋ ์ผ๋ฐ IP๊ฐ ์์ด์ผ ํฉ๋๋ค.
Ubuntu 18.04๊ฐ ์์ง๋ง ์ฝ๊ฐ๋ง ๋ณ๊ฒฝํ๋ฉด ์ด ๊ฐ์ด๋๋ฅผ ๋ค๋ฅธ ๋ฐฐํฌํ์๋ ์ ์ฉํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด ํ ์คํธ์์๋ Linux == Ubuntu์ ๋๋ค.
์์ค์ฝ ์ปค๋ฅํธ
Windows ๋๋ MacOS๋ฅผ ์ฌ์ฉํ๋ ์ฌ์ฉ์๋ Cisco Connect๋ฅผ ํตํด ํ์ฌ VPN์ ์ฐ๊ฒฐํ ์ ์์ผ๋ฉฐ, ๊ฒ์ดํธ์จ์ด ์ฃผ์๋ฅผ ์ง์ ํ๊ณ ์ฐ๊ฒฐํ ๋๋ง๋ค ๊ณ ์ ๋ ๋ถ๋ถ๊ณผ Google Authenticator์์ ์์ฑ๋ ์ฝ๋๋ก ๊ตฌ์ฑ๋ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํด์ผ ํฉ๋๋ค.
Linux์ ๊ฒฝ์ฐ Cisco Connect๋ฅผ ์คํํ ์ ์์์ง๋ง Cisco Connect๋ฅผ ๋์ฒดํ๊ธฐ ์ํด ํน๋ณํ ๋ง๋ค์ด์ง openconnect๋ฅผ ์ฌ์ฉํ๋ผ๋ ๊ถ์ฅ ์ฌํญ์ Google์ ๊ฒ์ํ์ต๋๋ค.
์คํ์ปค๋ฅํธ
์ด๋ก ์ ์ผ๋ก Ubuntu์๋ openconnect๋ฅผ ์ํ ํน๋ณํ ๊ทธ๋ํฝ ์ธํฐํ์ด์ค๊ฐ ์์ง๋ง ๋์๊ฒ๋ ์๋ํ์ง ์์์ต๋๋ค. ์๋ง๋ ๊ทธ๊ฒ์ ๋ ๋์ ๊ฒ์ผ ์๋ ์์ต๋๋ค.
Ubuntu์์๋ openconnect๊ฐ ํจํค์ง ๊ด๋ฆฌ์์์ ์ค์น๋ฉ๋๋ค.
apt install openconnect
์ค์น ํ ์ฆ์ VPN์ ์ฐ๊ฒฐํด ๋ณผ ์ ์์ต๋๋ค.
openconnect --user poxvuibr vpn.evilcorp.com
vpn.evilcorp.com์ ๊ฐ์ VPN์ ์ฃผ์์
๋๋ค.
poxvuibr - ๊ฐ์์ ์ฌ์ฉ์ ์ด๋ฆ
openconnect๋ ๊ณ ์ ๋ ๋ถ๋ถ๊ณผ Google Authenticator์ ์ฝ๋๋ก ๊ตฌ์ฑ๋ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํ๋ผ๋ ๋ฉ์์ง๋ฅผ ํ์ํ ๋ค์ VPN์ ์ฐ๊ฒฐ์ ์๋ํฉ๋๋ค. ์๋ํ๋ค๋ฉด ์ถํํฉ๋๋ค. ๋ง์ ๊ณ ํต์ด ๋ฐ๋ฅด๋ ์ค๊ฐ์ ๊ฑด๋๋ฐ๊ณ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ๋๋ openconnect์ ๋ํ ์์ ์ผ๋ก ๋์ด๊ฐ ์ ์์ต๋๋ค. ์๋ํ์ง ์์ผ๋ฉด ๊ณ์ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ง์ฅ์ ๊ฒ์คํธ Wi-Fi์์ ์ฐ๊ฒฐํ ๋ ์๋ํ๋ค๋ฉด ๊ธฐ๋ปํ๊ธฐ์๋ ๋๋ฌด ์ด๋ฅด ์ ์์ผ๋ฏ๋ก ์ง์์ ์ ์ฐจ๋ฅผ ๋ฐ๋ณตํด์ผํฉ๋๋ค.
์๊ฒฉ์ฆ
์๋ฌด๊ฒ๋ ์์๋์ง ์์ ๊ฐ๋ฅ์ฑ์ด ๋์ผ๋ฉฐ openconnect ์ถ๋ ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
POST https://vpn.evilcorp.com/
Connected to 777.777.777.777:443
SSL negotiation with vpn.evilcorp.com
Server certificate verify failed: signer not found
Certificate from VPN server "vpn.evilcorp.com" failed verification.
Reason: signer not found
To trust this server in future, perhaps add this to your command line:
--servercert sha256:4444444444444444444444444444444444444444444444444444444444444444
Enter 'yes' to accept, 'no' to abort; anything else to view: fgets (stdin): Operation now in progress
ํํธ์ผ๋ก๋ VPN์ ์ฐ๊ฒฐ๋์ง ์์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ถ์พํ์ง๋ง ๋ค๋ฅธ ํํธ์ผ๋ก๋ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์์น์ ์ผ๋ก ๋ถ๋ช ํฉ๋๋ค.
์ฌ๊ธฐ์์ ์๋ฒ๋ ์ฐ๋ฆฌ์๊ฒ ์ธ์ฆ์๋ฅผ ๋ณด๋์ต๋๋ค. ์ด๋ฅผ ํตํด ์ฌ์ ํ ์ฌ๊ธฐ๊พผ์ด ์๋ ๊ธฐ๋ณธ ํ์ฌ์ ์๋ฒ์ ์ฐ๊ฒฐ๋๊ณ ์๋์ง ํ์ธํ ์ ์์ผ๋ฉฐ ์ด ์ธ์ฆ์๋ ์์คํ ์ ์๋ ค์ง์ง ์์์ต๋๋ค. ๋ฐ๋ผ์ ์๋ฒ๊ฐ ์ค์ ์ธ์ง ์ฌ๋ถ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. ๋ง์ผ์ ๊ฒฝ์ฐ์ ๋๋นํ์ฌ ์๋์ด ์ค์ง๋ฉ๋๋ค.
openconnect๊ฐ ์๋ฒ์ ์ฐ๊ฒฐํ๋ ค๋ฉด โservercert ํค๋ฅผ ์ฌ์ฉํ์ฌ VPN ์๋ฒ์์ ์ด๋ค ์ธ์ฆ์๋ฅผ ๊ฐ์ ธ์์ผ ํ๋์ง ๋ช ์์ ์ผ๋ก ์๋ ค์ผ ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ openconnect๊ฐ ์ธ์ํ ๊ฒ์์ ์๋ฒ๊ฐ ์ฐ๋ฆฌ์๊ฒ ์ง์ ๋ณด๋ธ ์ธ์ฆ์๊ฐ ๋ฌด์์ธ์ง ํ์ธํ ์ ์์ต๋๋ค. ์ด ์ํ์ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
To trust this server in future, perhaps add this to your command line:
--servercert sha256:4444444444444444444444444444444444444444444444444444444444444444
Enter 'yes' to accept, 'no' to abort; anything else to view: fgets (stdin): Operation now in progress
์ด ๋ช ๋ น์ ์ฌ์ฉํ๋ฉด ๋ค์ ์ฐ๊ฒฐ์ ์๋ํ ์ ์์ต๋๋ค
openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 --user poxvuibr vpn.evilcorp.com
์๋ง๋ ์ด์ ์๋ ์ค์ผ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ฉด ๋๊น์ง ์งํํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ๊ฐ์ธ์ ์ผ๋ก ์ฐ๋ถํ๊ฐ ์ด๋ฐ ํํ์ ๋ฌดํ๊ณผ๋ฅผ ๋ณด์ฌ์คฌ์ด์
POST https://vpn.evilcorp.com/
Connected to 777.777.777.777:443
SSL negotiation with vpn.evilcorp.com
Server certificate verify failed: signer not found
Connected to HTTPS on vpn.evilcorp.com
XML POST enabled
Please enter your username and password.
POST https://vpn.evilcorp.com/
Got CONNECT response: HTTP/1.1 200 OK
CSTP connected. DPD 300, Keepalive 30
Set up DTLS failed; using SSL instead
Connected as 192.168.333.222, using SSL
NOSSSSSHHHHHHHDDDDD
3
NOSSSSSHHHHHHHDDDDD
3
RTNETLINK answers: File exists
/etc/resolvconf/update.d/libc: Warning: /etc/resolv.conf is not a symbolic link to /run/resolvconf/resolv.conf
/ ๊ธฐํ / resolv.conf์
# Generated by NetworkManager
search gst.evilcorpguest.com
nameserver 127.0.0.53
/run/resolvconf/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.
nameserver 192.168.430.534
nameserver 127.0.0.53
search evilcorp.com gst.publicevilcorp.com
habr.com์ ํด๊ฒฐ๋์ง๋ง ๊ฑฐ๊ธฐ๋ก ๊ฐ ์๋ ์์ต๋๋ค. jira.evilcorp.com๊ณผ ๊ฐ์ ์ฃผ์๋ ์ ํ ํ์ธ๋์ง ์์ต๋๋ค.
์ฌ๊ธฐ์ ์ผ์ด๋ ์ผ์ ๋์๊ฒ ๋ช ํํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์คํ์ ๋ฐ๋ฅด๋ฉด /etc/resolv.conf์ ํด๋น ํ์ ์ถ๊ฐํ๋ฉด
nameserver 192.168.430.534
๊ทธ๋ฌ๋ฉด VPN ๋ด๋ถ์ ์ฃผ์๊ฐ ๋ง๋ฒ์ฒ๋ผ ํ์ธ๋๊ธฐ ์์ํ๊ณ ์ด๋ฅผ ์ดํด๋ณผ ์ ์์ต๋๋ค. ์ฆ, ์ฃผ์ ํ์ธ์ ์ํด DNS๊ฐ ์ฐพ๊ณ ์๋ ์ฃผ์๋ ๋ค๋ฅธ ๊ณณ์ด ์๋ /etc/resolv.conf์์ ๊ตฌ์ฒด์ ์ผ๋ก ์ฐพ์ต๋๋ค.
VPN์ ๋ํ ์ฐ๊ฒฐ์ด ์๊ณ /etc/resolv.conf๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ๋ ์๋ํ๋์ง ํ์ธํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ ค๋ฉด VPN์ ๋ฆฌ์์ค ๊ธฐํธ ์ด๋ฆ์ด ์๋ ํด๋น IP ์ฃผ์๋ฅผ ๋ธ๋ผ์ฐ์ ์ ์ ๋ ฅํ๋ฉด ๋ฉ๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ๋ ๊ฐ์ง ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
- VPN์ ์ฐ๊ฒฐํ ๋ ํด๋น DNS๊ฐ ์ ํ๋์ง ์์ต๋๋ค
- ๋ชจ๋ ํธ๋ํฝ์ VPN์ ํต๊ณผํ๋ฏ๋ก ์ธํฐ๋ท ์ก์ธ์ค๊ฐ ํ์ฉ๋์ง ์์ต๋๋ค.
์ง๊ธ ๋ฌด์์ ํด์ผ ํ ์ง ๋ง์๋๋ฆฌ๊ฒ ์ต๋๋ค. ๋จผ์ ์ฝ๊ฐ์ ์๋ํ๋ฅผ ํด๋ณด๊ฒ ์ต๋๋ค.
๊ณ ์ ๋ ๋น๋ฐ๋ฒํธ ๋ถ๋ถ ์๋ ์ ๋ ฅ
์ง๊ธ์ฏค์ด๋ฉด ์ด๋ฏธ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ค์ฏ ๋ฒ ์ด์ ์ ๋ ฅํ์ ๊ฒ์ด๋ฉฐ ์ด ์ ์ฐจ๋ก ์ธํด ์ด๋ฏธ ์ง์ณค์ ๊ฒ์ ๋๋ค. ์ฒซ์งธ, ๋น๋ฐ๋ฒํธ๊ฐ ๊ธธ๊ธฐ ๋๋ฌธ์ด๊ณ , ๋์งธ, ์ ๋ ฅํ ๋ ์ ํด์ง ์๊ฐ ๋ด์ ๋ค์ด๊ฐ์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ฌธ์ ์ ๋ํ ์ต์ข ํด๊ฒฐ์ฑ ์ ๊ธฐ์ฌ์ ํฌํจ๋์ง ์์์ง๋ง ๊ณ ์ ๋ ๋น๋ฐ๋ฒํธ ๋ถ๋ถ์ ์ฌ๋ฌ ๋ฒ ์ ๋ ฅํ์ง ์์๋ ๋๋ค๋ ์ ์ ํ์ธํ ์ ์์ต๋๋ค.
๋น๋ฐ๋ฒํธ์ ๊ณ ์ ๋ ๋ถ๋ถ์ดfixedPassword์ด๊ณ Google Authenticator์ ๋ถ๋ถ์ด 567์ด๋ผ๊ณ ๊ฐ์ ํ๋ฉด --passwd-on-stdin ์ธ์๋ฅผ ์ฌ์ฉํ์ฌ ํ์ค ์ ๋ ฅ์ ํตํด ์ ์ฒด ๋น๋ฐ๋ฒํธ๋ฅผ openconnect์ ์ ๋ฌํ ์ ์์ต๋๋ค.
echo "fixedPassword567987" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 --user poxvuibr vpn.evilcorp.com --passwd-on-stdin
์ด์ ๋ง์ง๋ง์ผ๋ก ์ ๋ ฅํ ๋ช ๋ น์ผ๋ก ๊ณ์ ๋์๊ฐ์ Google Authenticator์ ์ผ๋ถ๋ง ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
๊ธฐ์ VPN์ ์ธํฐ๋ท ์ํ์ ํ์ฉํ์ง ์์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก Habr์ ๊ฐ๊ธฐ ์ํด ๋ณ๋์ ์ปดํจํฐ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ์๋ ํฌ๊ฒ ๋ถํธํ์ง ์์ต๋๋ค. stackoverfow์์ ๋ณต์ฌํ์ฌ ๋ถ์ฌ๋ฃ์ ์ ์์ผ๋ฉด ์ผ๋ฐ์ ์ผ๋ก ์์ ์ด ๋ง๋น๋ ์ ์์ผ๋ฏ๋ก ๋ญ๊ฐ ์กฐ์น๋ฅผ ์ทจํด์ผ ํฉ๋๋ค.
๋ด๋ถ ๋คํธ์ํฌ์์ ๋ฆฌ์์ค์ ์ก์ธ์คํด์ผ ํ ๋ Linux๊ฐ VPN์ผ๋ก ์ด๋ํ๊ณ Habr๋ก ์ด๋ํด์ผ ํ ๋ ์ธํฐ๋ท์ผ๋ก ์ด๋ํ๋๋ก ์ด๋ป๊ฒ๋ ๊ตฌ์ฑํด์ผ ํฉ๋๋ค.
openconnect๋ VPN์ ์์ํ๊ณ ์ฐ๊ฒฐํ ํ /usr/share/vpnc-scripts/vpnc-script์ ์๋ ํน์ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํฉ๋๋ค. ์ผ๋ถ ๋ณ์๋ ์ ๋ ฅ์ผ๋ก ์คํฌ๋ฆฝํธ์ ์ ๋ฌ๋๋ฉฐ VPN์ ๊ตฌ์ฑํฉ๋๋ค. ์ํ๊น๊ฒ๋ ๊ธฐ๋ณธ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ์ VPN๊ณผ ๋๋จธ์ง ์ธํฐ๋ท ๊ฐ์ ํธ๋ํฝ ํ๋ฆ์ ๋ถํ ํ๋ ๋ฐฉ๋ฒ์ ์ ์ ์์์ต๋๋ค.
๋ถ๋ช ํ VPN-Slice ์ ํธ๋ฆฌํฐ๋ ์ ์ ๊ฐ์ ์ฌ๋๋ค์ ์ํด ํน๋ณํ ๊ฐ๋ฐ๋์์ผ๋ฉฐ, ์ด๋ฅผ ํตํด ํฌ๋ฒ๋ฆฐ์ ์ฐ์ฃผํ์ง ์๊ณ ๋ ๋ ์ฑ๋์ ํตํด ํธ๋ํฝ์ ๋ณด๋ผ ์ ์์ต๋๋ค. ์ฆ, ์ถค์ ์ถฐ์ผ ํ์ง๋ง ๋ฌด๋น์ด ๋ ํ์๋ ์์ต๋๋ค.
VPN-Slice๋ฅผ ์ฌ์ฉํ ํธ๋ํฝ ๋ถ๋ฆฌ
๋จผ์ , VPN-Slice๋ฅผ ์ค์นํด์ผ ํ๋ฉฐ, ์ด๋ฅผ ์ค์ค๋ก ์์๋ด์ผ ํฉ๋๋ค. ๋๊ธ์ ์ง๋ฌธ์ด ์์ผ๋ฉด ์ด์ ๋ํด ๋ณ๋์ ๊ฒ์๋ฌผ์ ์์ฑํ๊ฒ ์ต๋๋ค. ํ์ง๋ง ์ด๊ฒ์ ์ผ๋ฐ์ ์ธ Python ํ๋ก๊ทธ๋จ์ด๋ฏ๋ก ์๋ฌด๋ฐ ์ด๋ ค์์ด ์์ ๊ฒ์ ๋๋ค. ์ ๋ virtualenv๋ฅผ ์ด์ฉํ์ฌ ์ค์นํ์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ ํ์ค ์คํฌ๋ฆฝํธ ๋์ vpn-slice๋ฅผ ์ฌ์ฉํด์ผ ํจ์ openconnect์ ๋ํ๋ด๋ -script ์ค์์น๋ฅผ ์ฌ์ฉํ์ฌ ์ ํธ๋ฆฌํฐ๋ฅผ ์ ์ฉํด์ผ ํฉ๋๋ค.
echo "fixedPassword567987" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 --user poxvuibr --passwd-on-stdin
--script "./bin/vpn-slice 192.168.430.0/24 " vpn.evilcorp.com
--script์๋ ์คํฌ๋ฆฝํธ ๋์ ํธ์ถํด์ผ ํ๋ ๋ช ๋ น์ด ํฌํจ๋ ๋ฌธ์์ด์ด ์ ๋ฌ๋ฉ๋๋ค. ./bin/vpn-slice - vpn-slice ์คํ ํ์ผ์ ๊ฒฝ๋ก 192.168.430.0/24 - VPN์์ ์ด๋ํ ์ฃผ์ ๋ง์คํฌ. ์ฌ๊ธฐ์๋ ์ฃผ์๊ฐ 192.168.430์ผ๋ก ์์ํ๋ ๊ฒฝ์ฐ ์ด ์ฃผ์๋ฅผ ๊ฐ์ง ๋ฆฌ์์ค๋ฅผ VPN ๋ด์์ ๊ฒ์ํด์ผ ํจ์ ์๋ฏธํฉ๋๋ค.
์ด์ ์ํฉ์ ๊ฑฐ์ ์ ์์ด ๋์์ต๋๋ค. ๊ฑฐ์. ์ด์ Habr๋ก ๊ฐ ์ ์๊ณ , ๊ธฐ์ ๋ด๋ถ ๋ฆฌ์์ค๋ IP๋ก ๊ฐ ์ ์์ง๋ง, ์ฌ๋ณผ๋ฆญ ์ด๋ฆ์ผ๋ก๋ ๊ธฐ์ ๋ด๋ถ ๋ฆฌ์์ค๋ก ๊ฐ ์ ์์ต๋๋ค. ํธ์คํธ์ ๊ธฐํธ ์ด๋ฆ๊ณผ ์ฃผ์๊ฐ ์ผ์นํ๋๋ก ์ง์ ํ๋ฉด ๋ชจ๋ ๊ฒ์ด ์๋ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ IP๊ฐ ๋ฐ๋ ๋๊น์ง ์์ ํ์ธ์. ์ด์ Linux๋ IP์ ๋ฐ๋ผ ์ธํฐ๋ท์ด๋ ์ธํธ๋ผ๋ท์ ์ก์ธ์คํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฃผ์๋ฅผ ํ์ธํ๋ ๋ฐ๋ ์ฌ์ ํ ๋น๊ธฐ์ DNS๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
๋ฌธ์ ๋ ๋ค์๊ณผ ๊ฐ์ ํํ๋ก ๋ํ๋ ์๋ ์์ต๋๋ค. ์ง์ฅ์์๋ ๋ชจ๋ ๊ฒ์ด ์ ์์ด์ง๋ง ์ง์์๋ IP๋ฅผ ํตํด์๋ง ๋ด๋ถ ํ์ฌ ๋ฆฌ์์ค์ ์ก์ธ์คํ ์ ์์ต๋๋ค. ๊ธฐ์ Wi-Fi์ ์ฐ๊ฒฐํ๋ฉด VPN์ ์ฌ์ฉํ์ง ์๊ณ ํด๋น ์ฃผ์๋ก ์ด๋ํ ์ ์์์๋ ๋ถ๊ตฌํ๊ณ ๊ธฐ์ DNS๋ ์ฌ์ฉ๋๋ฉฐ VPN์ ๊ธฐํธ ์ฃผ์๊ฐ VPN์์ ํ์ธ๋๊ธฐ ๋๋ฌธ์ ๋๋ค.
ํธ์คํธ ํ์ผ์ ์๋ ์์
vpn-slice๊ฐ ์ ์คํ๊ฒ ์์ฒญ๋๋ฉด VPN์ ์ฌ๋ฆฐ ํ DNS๋ก ์ด๋ํ์ฌ ๊ธฐํธ ์ด๋ฆ์ผ๋ก ํ์ํ ๋ฆฌ์์ค์ IP ์ฃผ์๋ฅผ ์ฐพ์ ํธ์คํธ์ ์ ๋ ฅํ ์ ์์ต๋๋ค. VPN์ ๋๋ฉด ํด๋น ์ฃผ์๊ฐ ํธ์คํธ์์ ์ ๊ฑฐ๋ฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ ค๋ฉด vpn-slice์ ๊ธฐํธ ์ด๋ฆ์ ์ธ์๋ก ์ ๋ฌํด์ผ ํฉ๋๋ค. ์ด์ ๊ฐ์ด.
echo "fixedPassword567987" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 --user poxvuibr --passwd-on-stdin
--script "./bin/vpn-slice 192.168.430.0/24 jira.vpn.evilcorp.com git.vpn.evilcorp.com " vpn.evilcorp.com
์ด์ ์ฌ๋ฌด์ค๊ณผ ํด๋ณ ๋ชจ๋์์ ๋ชจ๋ ๊ฒ์ด ์๋ํ ๊ฒ์ ๋๋ค.
VPN์ด ์ ๊ณตํ DNS์ ๋ชจ๋ ํ์ ๋๋ฉ์ธ ์ฃผ์๋ฅผ ๊ฒ์ํ์ธ์.
๋คํธ์ํฌ ๋ด์ ์ฃผ์๊ฐ ๊ฑฐ์ ์๋ ๊ฒฝ์ฐ ํธ์คํธ ํ์ผ์ ์๋์ผ๋ก ์์ ํ๋ ์ ๊ทผ ๋ฐฉ์์ด ๋งค์ฐ ํจ๊ณผ์ ์ ๋๋ค. ๊ทธ๋ฌ๋ ๋คํธ์ํฌ์ ๋ฆฌ์์ค๊ฐ ๋ง์ผ๋ฉด zoidberg.test.evilcorp.com๊ณผ ๊ฐ์ ์ค์ ์คํฌ๋ฆฝํธ์ ์ง์์ ์ผ๋ก ์ถ๊ฐํด์ผ ํฉ๋๋ค. zoidberg๋ ํ ์คํธ ๋ฒค์น ์ค ํ๋์ ์ด๋ฆ์ ๋๋ค.
๊ทธ๋ฌ๋ ์ด์ ์ฐ๋ฆฌ๋ ์ด๋ฌํ ํ์์ฑ์ด ์ ๊ฑฐ๋ ์ ์๋ ์ด์ ๋ฅผ ์กฐ๊ธ ์ดํดํ์ต๋๋ค.
VPN์ ์ฌ๋ฆฐ ํ /etc/hosts๋ฅผ ๋ณด๋ฉด ๋ค์ ์ค์ ๋ณผ ์ ์์ต๋๋ค.
192.168.430.534 dns0.tun0 # vpn-slice-tun0 ์๋ ์์ฑ๋จ
๊ทธ๋ฆฌ๊ณ resolv.conf์ ์๋ก์ด ์ค์ด ์ถ๊ฐ๋์์ต๋๋ค. ๊ฐ๋จํ ๋งํด์, vpn-slice๋ VPN์ฉ DNS ์๋ฒ์ ์์น๋ฅผ โโ์ด๋ป๊ฒ๋ ๊ฒฐ์ ํ์ต๋๋ค.
์ด์ evilcorp.com์ผ๋ก ๋๋๋ ๋๋ฉ์ธ ์ด๋ฆ์ IP ์ฃผ์๋ฅผ ์ฐพ์ผ๋ ค๋ฉด Linux๊ฐ ๊ธฐ์ DNS๋ก ์ด๋ํ๊ณ , ๋ค๋ฅธ ๊ฒ์ด ํ์ํ ๊ฒฝ์ฐ ๊ธฐ๋ณธ DNS๋ก ์ด๋ํ๋์ง ํ์ธํด์ผ ํฉ๋๋ค.
๋๋ ๊ฝค ์ค๋ซ๋์ ๊ตฌ๊ธ๋ง์ ํ๊ณ ๊ทธ๋ฌํ ๊ธฐ๋ฅ์ด ์ฐ๋ถํฌ์์ ์ฆ์ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ๋ฐ๊ฒฌํ์ต๋๋ค. ์ด๋ ๋ก์ปฌ DNS ์๋ฒ dnsmasq๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฆ์ ํ์ธํ๋ ๊ธฐ๋ฅ์ ์๋ฏธํฉ๋๋ค.
์ฆ, Linux๊ฐ IP ์ฃผ์๋ฅผ ์ฐพ๊ธฐ ์ํด ํญ์ ๋ก์ปฌ DNS ์๋ฒ๋ก ์ด๋ํ๋๋ก ํ ์ ์์ผ๋ฉฐ, ๊ทธ๋ฌ๋ฉด ๋๋ฉ์ธ ์ด๋ฆ์ ๋ฐ๋ผ ํด๋น ์ธ๋ถ DNS ์๋ฒ์์ IP๋ฅผ ์ฐพ์ต๋๋ค.
๋คํธ์ํฌ ๋ฐ ๋คํธ์ํฌ ์ฐ๊ฒฐ๊ณผ ๊ด๋ จ๋ ๋ชจ๋ ๊ฒ์ ๊ด๋ฆฌํ๊ธฐ ์ํด Ubuntu๋ NetworkManager๋ฅผ ์ฌ์ฉํ๋ฉฐ, ์๋ฅผ ๋ค์ด Wi-Fi ์ฐ๊ฒฐ์ ์ ํํ๊ธฐ ์ํ ๊ทธ๋ํฝ ์ธํฐํ์ด์ค๋ ๋จ์ง ํ๋ฐํธ ์๋์ผ ๋ฟ์ ๋๋ค.
์ฐ๋ฆฌ๋ ๊ทธ ๊ตฌ์ฑ์ ์ฌ๋ผ๊ฐ์ผ ํ ๊ฒ์ ๋๋ค.
- /etc/NetworkManager/dnsmasq.d/evilcorp์ ํ์ผ์ ์์ฑํฉ๋๋ค.
์ฃผ์=/.evilcorp.com/192.168.430.534
evilcorp ์์ ์ง์ ์ ์ฃผ๋ชฉํ์ธ์. evilcorp.com์ ๋ชจ๋ ํ์ ๋๋ฉ์ธ์ ๊ธฐ์ DNS์์ ๊ฒ์ํด์ผ ํจ์ dnsmasq์ ์๋ฆฝ๋๋ค.
- NetworkManager์๊ฒ ์ด๋ฆ ํ์ธ์ ์ํด dnsmasq๋ฅผ ์ฌ์ฉํ๋๋ก ์ง์
๋คํธ์ํฌ ๊ด๋ฆฌ์ ๊ตฌ์ฑ์ /etc/NetworkManager/NetworkManager.conf์ ์์ต๋๋ค. ์ฌ๊ธฐ์ ๋ค์์ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
[๋ฉ์ธ] dns=dnsmasq
- NetworkManager ๋ค์ ์์
service network-manager restart
์ด์ openconnect ๋ฐ vpn-slice๋ฅผ ์ฌ์ฉํ์ฌ VPN์ ์ฐ๊ฒฐํ๋ฉด vpnslice์ ๋ํ ์ธ์์ ๊ธฐํธ ์ฃผ์๋ฅผ ์ถ๊ฐํ์ง ์์๋ IP๊ฐ ์ ์์ ์ผ๋ก ๊ฒฐ์ ๋ฉ๋๋ค.
VPN์ ํตํด ๊ฐ๋ณ ์๋น์ค์ ์ก์ธ์คํ๋ ๋ฐฉ๋ฒ
VPN์ ์ฐ๊ฒฐํ ํ ์ดํ ๋์ ๋งค์ฐ ๊ธฐ๋ปค์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ์ฌ๋ฌด์ค ๋คํธ์ํฌ ์ธ๋ถ์์ VPN์ ์ฐ๊ฒฐํ๋ฉด ๋ฉ์ผ์ด ์๋ํ์ง ์๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ๊ทธ ์ฆ์์ ์ต์ํ์ง ์์ต๋๊น?
์ฐ๋ฆฌ ๋ฉ์ผ์ mail.publicevilcorp.com์ ์์นํ๋๋ฐ, ์ด๋ dnsmasq์ ๊ท์น์ ์ํ์ง ์์ผ๋ฉฐ ๊ณต๊ฐ DNS๋ฅผ ํตํด ๋ฉ์ผ ์๋ฒ ์ฃผ์๋ฅผ ๊ฒ์ํ๋ค๋ ์๋ฏธ์ ๋๋ค.
์, ์ฌ๋ฌด์ค์์๋ ์ฌ์ ํ ์ด ์ฃผ์๊ฐ ํฌํจ๋ DNS๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ทธ๊ฒ์ด ๋ด๊ฐ ์๊ฐํ ๊ฒ์ ๋๋ค. ์ค์ ๋ก dnsmasq์ ํด๋น ๋ผ์ธ์ ์ถ๊ฐํ ํ
์ฃผ์=/mail.publicevilcorp.com/192.168.430.534
์ํฉ์ ์ ํ ๋ณํ์ง ์์์ต๋๋ค. ip๋ ๋์ผํ๊ฒ ์ ์ง๋์์ต๋๋ค. ๋๋ ์ผํ๋ฌ ๊ฐ์ผํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋์ค์์ผ ์ํฉ์ ๋ ๊น์ด ํ๊ณ ๋ค์ด ๋ฌธ์ ๋ฅผ ์กฐ๊ธ ์ดํดํ์ ๋ ํ ๋๋ํ ์ฌ๋์ด ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์๋ ค์ฃผ์์ต๋๋ค. ๋ฉ์ผ ์๋ฒ์ ๊ทธ๋ ๊ฒ ์ฐ๊ฒฐํ๋ ๊ฒ์ด ์๋๋ผ VPN์ ํตํด ์ฐ๊ฒฐํด์ผ ํ์ต๋๋ค.
์ ๋ vpn-slice๋ฅผ ์ฌ์ฉํ์ฌ VPN์ ํตํด 192.168.430์ผ๋ก ์์ํ๋ ์ฃผ์๋ก ์ด๋ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฉ์ผ ์๋ฒ์๋ evilcorp์ ํ์ ๋๋ฉ์ธ์ด ์๋ ์ฌ๋ณผ๋ฆญ ์ฃผ์๊ฐ ์์ ๋ฟ๋ง ์๋๋ผ, 192.168.430์ผ๋ก ์์ํ๋ IP ์ฃผ์๋ ์์ต๋๋ค. ๋ฌผ๋ก ๊ทธ๋ ์ผ๋ฐ ๋คํธ์ํฌ์ ์ด๋ ๋๊ตฌ๋ ์์ ์๊ฒ ์ค๋ ๊ฒ์ ํ์ฉํ์ง ์์ต๋๋ค.
Linux๊ฐ VPN์ ํต๊ณผํ์ฌ ๋ฉ์ผ ์๋ฒ๋ก ์ด๋ํ๋ ค๋ฉด VPN-Slice์๋ ์ด๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค. ์ฐํธ๋ฌผ์ ์ฃผ์๊ฐ 555.555.555.555๋ผ๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค.
echo "fixedPassword567987" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 --user poxvuibr --passwd-on-stdin
--script "./bin/vpn-slice 555.555.555.555 192.168.430.0/24" vpn.evilcorp.com
ํ๋์ ์ธ์๋ก VPN์ ๋์ด๊ธฐ ์ํ ์คํฌ๋ฆฝํธ
๋ฌผ๋ก ์ด ๋ชจ๋ ๊ฒ์ด ๊ทธ๋ค์ง ํธ๋ฆฌํ์ง๋ ์์ต๋๋ค. ์, ํ ์คํธ๋ฅผ ํ์ผ์ ์ ์ฅํ๊ณ ์ง์ ์ ๋ ฅํ๋ ๋์ ์ฝ์์ ๋ณต์ฌํ์ฌ ๋ถ์ฌ๋ฃ์ ์ ์์ง๋ง ์ฌ์ ํ ๋ณ๋ก ์ฆ๊ฒ์ง ์์ต๋๋ค. ํ๋ก์ธ์ค๋ฅผ ๋ ์ฝ๊ฒ ๋ง๋ค๊ธฐ ์ํด PATH์ ์๋ ์คํฌ๋ฆฝํธ์ ๋ช ๋ น์ ๋ํํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ Google OTP์์ ๋ฐ์ ์ฝ๋๋ง ์ ๋ ฅํ๋ฉด ๋ฉ๋๋ค.
#!/bin/sh
echo "fixedPassword$1" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 --user poxvuibr --passwd-on-stdin
--script "./bin/vpn-slice 192.168.430.0/24 jira.vpn.evilcorp.com git.vpn.evilcorp.com " vpn.evilcorp.com
connect~evilcorp~์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ฃ์ผ๋ฉด ์ฝ์์์ ๊ฐ๋จํ๊ฒ ์์ฑํ๋ฉด ๋ฉ๋๋ค.
connect_evil_corp 567987
ํ์ง๋ง ์ด์ ์ด๋ค ์ด์ ๋ก๋ openconnect๊ฐ ์คํ ์ค์ธ ์ฝ์์ ์ด์ด ๋์ด์ผ ํฉ๋๋ค.
๋ฐฑ๊ทธ๋ผ์ด๋์์ openconnect ์คํ
๋คํ์ค๋ฝ๊ฒ๋ openconnect์ ์์ฑ์๊ฐ ์ฐ๋ฆฌ๋ฅผ ๋๋ณด๊ณ ํ๋ก๊ทธ๋จ ๋ฐฑ๊ทธ๋ผ์ด๋์ ํน์ ํค๋ฅผ ์ถ๊ฐํ์ฌ ํ๋ก๊ทธ๋จ์ด ์คํ ํ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์๋ํ๋๋ก ํ์ต๋๋ค. ์ด๋ ๊ฒ ์คํํ๋ฉด ์คํ ํ ์ฝ์์ ๋ซ์๋ ๋ฉ๋๋ค.
#!/bin/sh
echo "fixedPassword$1" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444
--user poxvuibr
--passwd-on-stdin
--background
--script "./bin/vpn-slice 192.168.430.0/24 jira.vpn.evilcorp.com git.vpn.evilcorp.com " vpn.evilcorp.com
์ด์ ๋ก๊ทธ๊ฐ ์ด๋๋ก ๊ฐ๋์ง ๋ช ํํ์ง ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ก๊ทธ๋ ์ค์ ๋ก ํ์ํ์ง ์์ง๋ง ์ ์๋ ์์ต๋๋ค. openconnect๋ ์ด๋ฅผ syslog๋ก ๋ฆฌ๋๋ ์ ํ์ฌ ์์ ํ๊ฒ ๋ณด๊ดํ ์ ์์ต๋๋ค. ๋ช ๋ น์ โsyslog ์ค์์น๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
#!/bin/sh
echo "fixedPassword$1" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444
--user poxvuibr
--passwd-on-stdin
--background
--syslog
--script "./bin/vpn-slice 192.168.430.0/24 jira.vpn.evilcorp.com git.vpn.evilcorp.com " vpn.evilcorp.com
๋ฐ๋ผ์ openconnect๊ฐ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ด๋๊ฐ์์ ์๋ํ๊ณ ์์ผ๋ฉฐ ๋๊ตฌ์๊ฒ๋ ๋ฐฉํด๊ฐ ๋์ง ์๋ ๊ฒ์ผ๋ก ๋ฐํ์ก์ง๋ง ์ด๋ฅผ ์ค์งํ๋ ๋ฐฉ๋ฒ์ ๋ช ํํ์ง ์์ต๋๋ค. ์ฆ, ๋ฌผ๋ก grep์ ์ฌ์ฉํ์ฌ ps ์ถ๋ ฅ์ ํํฐ๋งํ๊ณ ์ด๋ฆ์ openconnect๊ฐ ํฌํจ๋ ํ๋ก์ธ์ค๋ฅผ ์ฐพ์ ์ ์์ง๋ง ์ด๋ ๋ค์ ์ง๋ฃจํ ์์ ์ ๋๋ค. ์ด๋ฐ ์๊ฐ์ ํด์ฃผ์ ์๊ฐ๋๋ค๊ป๋ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. Openconnect์๋ -pid-file ํค๊ฐ ์์ผ๋ฉฐ, ์ด๋ฅผ ์ฌ์ฉํ์ฌ openconnect์ ํ๋ก์ธ์ค ์๋ณ์๋ฅผ ํ์ผ์ ์ฐ๋๋ก ์ง์ํ ์ ์์ต๋๋ค.
#!/bin/sh
echo "fixedPassword$1" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444
--user poxvuibr
--passwd-on-stdin
--background
--syslog
--script "./bin/vpn-slice 192.168.430.0/24 jira.vpn.evilcorp.com git.vpn.evilcorp.com " vpn.evilcorp.com
--pid-file ~/vpn-pid
์ด์ ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ์ธ์ ๋ ์ง ํ๋ก์ธ์ค๋ฅผ ์ข ๋ฃํ ์ ์์ต๋๋ค.
kill $(cat ~/vpn-pid)
ํ๋ก์ธ์ค๊ฐ ์์ผ๋ฉด kill์ ์ ์ฃผ๋ฅผ ํผ๋ถ์ง๋ง ์ค๋ฅ๋ฅผ ๋ฐ์์ํค์ง๋ ์์ต๋๋ค. ํ์ผ์ด ์์ผ๋ฉด ๋์ ์ผ๋ ์ผ์ด๋์ง ์์ผ๋ฏ๋ก ์คํฌ๋ฆฝํธ์ ์ฒซ ๋ฒ์งธ ์ค์์ ํ๋ก์ธ์ค๋ฅผ ์์ ํ๊ฒ ์ข ๋ฃํ ์ ์์ต๋๋ค.
kill $(cat ~/vpn-pid)
#!/bin/sh
echo "fixedPassword$1" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444
--user poxvuibr
--passwd-on-stdin
--background
--syslog
--script "./bin/vpn-slice 192.168.430.0/24 jira.vpn.evilcorp.com git.vpn.evilcorp.com " vpn.evilcorp.com
--pid-file ~/vpn-pid
์ด์ ์ปดํจํฐ๋ฅผ ์ผ๊ณ ์ฝ์์ ์ด๊ณ ๋ช ๋ น์ ์คํํ์ฌ Google Authenticator์ ์ฝ๋๋ฅผ ์ ๋ฌํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ฝ์์ ๋ชป ๋ฐ์ ์ ์์ต๋๋ค.
VPN ์ฌ๋ผ์ด์ค๊ฐ ์์ต๋๋ค. ๋ท๋ง ๋์
VPN-์ฌ๋ผ์ด์ค ์์ด ์ด์๊ฐ๋ ๋ฐฉ๋ฒ์ ์ดํดํ๋ ๊ฒ์ ๋งค์ฐ ์ด๋ ค์ ์ต๋๋ค. ๋๋ ์ฑ ์ ๋ง์ด ์ฝ๊ณ ๊ตฌ๊ธ๋ง์ ํด์ผ ํ๋ค. ๋คํ์ค๋ฝ๊ฒ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๋๋ฌด ๋ง์ ์๊ฐ์ ์๋นํ ํ์๋ ๊ธฐ์ ๋งค๋ด์ผ๊ณผ ์ฌ์ง์ด man openconnect๋ ํฅ๋ฏธ์ง์งํ ์์ค์ฒ๋ผ ์ฝํ์ต๋๋ค.
๊ทธ ๊ฒฐ๊ณผ, vpn-slice๋ ๋ค์ดํฐ๋ธ ์คํฌ๋ฆฝํธ์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ผ์ฐํ ํ ์ด๋ธ์ ๋ณ๋์ ๋คํธ์ํฌ๋ก ์์ ํ๋ค๋ ์ฌ์ค์ ์๊ฒ ๋์์ต๋๋ค.
๋ผ์ฐํ ํ ์ด๋ธ
๊ฐ๋จํ ๋งํด์ ์ด๊ฒ์ Linux๊ฐ ํต๊ณผํ๋ ค๋ ์ฃผ์๊ฐ ๋ฌด์์ผ๋ก ์์๋์ด์ผ ํ๋์ง๋ฅผ ํฌํจํ๋ ์ฒซ ๋ฒ์งธ ์ด์ ํ ์ด๋ธ์ด๊ณ , ์ด ์ฃผ์์์ ํต๊ณผํ ๋คํธ์ํฌ ์ด๋ํฐ๊ฐ ๋ ๋ฒ์งธ ์ด์ ์๋ ํ ์ด๋ธ์ ๋๋ค. ์ค์ ๋ก ๋ ๋ง์ ์คํผ์ปค๊ฐ ์์ง๋ง ์ด๊ฒ์ด ๋ณธ์ง์ ๋ฐ๊พธ์ง๋ ์์ต๋๋ค.
๋ผ์ฐํ ํ ์ด๋ธ์ ๋ณด๋ ค๋ฉด ip Route ๋ช ๋ น์ ์คํํด์ผ ํฉ๋๋ค.
default via 192.168.1.1 dev wlp3s0 proto dhcp metric 600
192.168.430.0/24 dev tun0 scope link
192.168.1.0/24 dev wlp3s0 proto kernel scope link src 192.168.1.534 metric 600
192.168.430.534 dev tun0 scope link
์ฌ๊ธฐ์ ๊ฐ ์ค์ ํน์ ์ฃผ์๋ก ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ธฐ ์ํด ์ด๋๋ก ๊ฐ์ผ ํ๋์ง๋ฅผ ๋ด๋นํฉ๋๋ค. ์ฒซ ๋ฒ์งธ๋ ์ฃผ์๊ฐ ์์๋์ด์ผ ํ๋ ์์น์ ๋ํ ์ค๋ช ์ ๋๋ค. 192.168.0.0/16์ด ์ฃผ์๊ฐ 192.168๋ก ์์ํด์ผ ํจ์ ์๋ฏธํ๋์ง ํ์ธํ๋ ค๋ฉด IP ์ฃผ์ ๋ง์คํฌ๊ฐ ๋ฌด์์ธ์ง Google์ ๊ฒ์ํด์ผ ํฉ๋๋ค. dev ๋ค์๋ ๋ฉ์์ง๋ฅผ ๋ณด๋ด์ผ ํ๋ ์ด๋ํฐ์ ์ด๋ฆ์ด ์์ต๋๋ค.
VPN์ ๊ฒฝ์ฐ Linux๋ ๊ฐ์ ์ด๋ํฐ์ธ tun0์ ๋ง๋ค์์ต๋๋ค. ์ด ๋ผ์ธ์ 192.168๋ก ์์ํ๋ ๋ชจ๋ ์ฃผ์์ ๋ํ ํธ๋ํฝ์ด ์ด๋ฅผ ํต๊ณผํ๋๋ก ๋ณด์ฅํฉ๋๋ค.
192.168.0.0/16 dev tun0 scope link
๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ๋ผ์ฐํ ํ ์ด๋ธ์ ํ์ฌ ์ํ๋ฅผ ํ์ธํ ์๋ ์์ต๋๋ค. ๋ ธ์ -n (IP ์ฃผ์๋ ๊ต๋ฌํ๊ฒ ์ต๋ช ํ๋ฉ๋๋ค.) ์ด ๋ช ๋ น์ ๋ค๋ฅธ ํ์์ผ๋ก ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ํด๋น ์ถ๋ ฅ์ ์ข ์ข ์ธํฐ๋ท ๋งค๋ด์ผ์์ ๋ฐ๊ฒฌ๋๋ฏ๋ก ์ฝ์ ์ ์์ด์ผ ํฉ๋๋ค.
๊ฒฝ๋ก์ IP ์ฃผ์๊ฐ ์์๋์ด์ผ ํ๋ ์์น๋ ๋์ ๋ฐ Genmask ์ด์ ์กฐํฉ์ผ๋ก ์ดํดํ ์ ์์ต๋๋ค. Genmask์ ์ซ์ 255์ ํด๋นํ๋ IP ์ฃผ์ ๋ถ๋ถ์ ๊ณ ๋ ค๋์ง๋ง 0์ธ ๋ถ๋ถ์ ๊ณ ๋ ค๋์ง ์์ต๋๋ค. ์ฆ, ๋์ 192.168.0.0๊ณผ Genmask 255.255.255.0์ ์กฐํฉ์ ์ฃผ์๊ฐ 192.168.0์ผ๋ก ์์ํ๋ฉด ์ด์ ๋ํ ์์ฒญ์ด ์ด ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ผ ์งํ๋จ์ ์๋ฏธํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋์์ด 192.168.0.0์ด์ง๋ง Genmask๊ฐ 255.255.0.0์ธ ๊ฒฝ์ฐ 192.168๋ก ์์ํ๋ ์ฃผ์์ ๋ํ ์์ฒญ์ ์ด ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ผ ์งํ๋ฉ๋๋ค.
VPN-slice๊ฐ ์ค์ ๋ก ๋ฌด์์ ํ๋์ง ์์๋ณด๊ธฐ ์ํด, ์ ํ์ ํ ์ด๋ธ ์ํ๋ฅผ ์ดํด๋ณด๊ธฐ๋ก ํ์ต๋๋ค.
VPN์ ์ผ๊ธฐ ์ ์ ์ํฉ์ ์ด๋ฌ์ต๋๋ค.
route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 222.222.222.1 0.0.0.0 UG 600 0 0 wlp3s0
222.222.222.0 0.0.0.0 255.255.255.0 U 600 0 0 wlp3s0
333.333.333.333 222.222.222.1 255.255.255.255 UGH 0 0 0 wlp3s0
VPN-Slice ์์ด openconnect๋ฅผ ํธ์ถํ ํ ๋ค์๊ณผ ๊ฐ์ด ๋์์ต๋๋ค.
route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 tun0
0.0.0.0 222.222.222.1 0.0.0.0 UG 600 0 0 wlp3s0
222.222.222.0 0.0.0.0 255.255.255.0 U 600 0 0 wlp3s0
333.333.333.333 222.222.222.1 255.255.255.255 UGH 0 0 0 wlp3s0
192.168.430.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0
192.168.430.534 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
๊ทธ๋ฆฌ๊ณ ์ด๋ ๊ฒ VPN-Slice์ ๊ฒฐํฉํ์ฌ openconnect๋ฅผ ํธ์ถํ ํ
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 222.222.222.1 0.0.0.0 UG 600 0 0 wlp3s0
222.222.222.0 0.0.0.0 255.255.255.0 U 600 0 0 wlp3s0
333.333.333.333 222.222.222.1 255.255.255.255 UGH 0 0 0 wlp3s0
192.168.430.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0
192.168.430.534 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
vpn-slice๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฉด openconnect๋ ํน๋ณํ ํ์๋ ์ฃผ์๋ฅผ ์ ์ธํ ๋ชจ๋ ์ฃผ์๊ฐ VPN์ ํตํด ์ก์ธ์ค๋์ด์ผ ํจ์ ๋ช ์์ ์ผ๋ก ๊ธฐ๋กํ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
์ฌ๊ธฐ์๋ค :
0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 tun0
๊ทธ ์์๋ Linux๊ฐ ํต๊ณผํ๋ ค๋ ์ฃผ์๊ฐ ํ ์ด๋ธ์ ๋ง์คํฌ์ ์ผ์นํ์ง ์๋ ๊ฒฝ์ฐ ์ฌ์ฉํด์ผ ํ๋ ๋ค๋ฅธ ๊ฒฝ๋ก๊ฐ ์ฆ์ ํ์๋ฉ๋๋ค.
0.0.0.0 222.222.222.1 0.0.0.0 UG 600 0 0 wlp3s0
์ด ๊ฒฝ์ฐ ํ์ค Wi-Fi ์ด๋ํฐ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค๋ ๋ด์ฉ์ด ์ฌ๊ธฐ์ ์ด๋ฏธ ๊ธฐ๋ก๋์ด ์์ต๋๋ค.
VPN ๊ฒฝ๋ก๋ ๋ผ์ฐํ ํ ์ด๋ธ์ ์ฒซ ๋ฒ์งธ ๊ฒฝ๋ก์ด๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ๋๋ ๊ฒ์ผ๋ก ์๊ฐ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ก ์ ์ผ๋ก ๋ผ์ฐํ ํ ์ด๋ธ์์ ์ด ๊ธฐ๋ณธ ๊ฒฝ๋ก๋ฅผ ์ ๊ฑฐํ๋ฉด dnsmasq openconnect์ ํจ๊ป ์ ์์ ์ธ ์๋์ ๋ณด์ฅํด์ผ ํฉ๋๋ค.
๋๋ ์๋ํ๋ค
route del default
๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ๊ฒ์ด ์๋ํ์ต๋๋ค.
VPN-Slice ์์ด ๋ฉ์ผ ์๋ฒ๋ก ์์ฒญ ๋ผ์ฐํ
ํ์ง๋ง ์ฃผ์๊ฐ 555.555.555.555์ธ ๋ฉ์ผ ์๋ฒ๋ ์๋๋ฐ, ์ด ์๋ฒ์๋ VPN์ ํตํด ์ก์ธ์คํด์ผ ํฉ๋๋ค. ํด๋น ๊ฒฝ๋ก๋ ์๋์ผ๋ก ์ถ๊ฐํด์ผ ํฉ๋๋ค.
ip route add 555.555.555.555 via dev tun0
์ด์ ๋ชจ๋ ๊ฒ์ด ๊ด์ฐฎ์ต๋๋ค. ๊ทธ๋์ VPN-Slice ์์ด๋ ํ ์ ์์ง๋ง, ๋ฌด์์ ํ๊ณ ์๋์ง ์ ์์์ผ ํฉ๋๋ค. ์ด์ ๊ธฐ๋ณธ openconnect ์คํฌ๋ฆฝํธ์ ๋ง์ง๋ง ์ค์ ๊ธฐ๋ณธ ๊ฒฝ๋ก๋ฅผ ์ ๊ฑฐํ๊ณ VPN์ ์ฐ๊ฒฐํ ํ ๋ฉ์ผ๋ฌ์ ๋ํ ๊ฒฝ๋ก๋ฅผ ์ถ๊ฐํ์ฌ ์์ ๊ฑฐ์์ ์์ง์ด๋ ๋ถํ์ ์ค์ด๋ ค๊ณ ํฉ๋๋ค.
์๋ง๋ ๋๊ตฐ๊ฐ๊ฐ VPN ์ค์ ๋ฐฉ๋ฒ์ ์ดํดํ๋ ๋ฐ๋ ์ด ํ๊ธฐ๊ฐ ์ถฉ๋ถํ ๊ฒ์ ๋๋ค. ํ์ง๋ง ๋ฌด์์ ์ด๋ป๊ฒ ํด์ผ ํ๋์ง ์ดํดํ๋ ค๊ณ ๋ ธ๋ ฅํ๋ ๋์ ์ ์์๊ฒ๋ ํจ๊ณผ๊ฐ ์์ง๋ง ์ด๋ค ์ด์ ๋ก ๋์๊ฒ๋ ํจ๊ณผ๊ฐ ์๋ ๊ฐ์ด๋๋ฅผ ๋ง์ด ์ฝ์๊ณ , ๋ด๊ฐ ์ฐพ์ ๋ชจ๋ ๋ถ๋ถ์ ์ฌ๊ธฐ์ ์ถ๊ฐํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ๋๋ ๊ทธ๋ฐ ์ผ์ ๋งค์ฐ ๊ธฐ๋ปํ ๊ฒ์ ๋๋ค.
์ถ์ฒ : habr.com