WireGuard ๋๋ฌธ์
ะะฑะพััะดะพะฒะฐะฝะธะต
- LTE ๋ชจ๋๊ณผ ๊ณต์ฉ IP ์ฃผ์๋ฅผ ๊ฐ์ถ Raspberry Pi 3. ์ฌ๊ธฐ์ VPN ์๋ฒ๊ฐ ์์ต๋๋ค(์ดํ ํ ์คํธ์์๋ ์ด๋ฅผ ํธ์ถํจ). ์ฃ์ง์์ปค)
- ๋ชจ๋ ํต์ ์ VPN์ ์ฌ์ฉํด์ผ ํ๋ Android ํด๋ํฐ
- ๋คํธ์ํฌ ๋ด์์ VPN๋ง ์ฌ์ฉํด์ผ ํ๋ Linux ๋ ธํธ๋ถ
VPN์ ์ฐ๊ฒฐ๋๋ ๋ชจ๋ ์ฅ์น๋ ๋ค๋ฅธ ๋ชจ๋ ์ฅ์น์ ์ฐ๊ฒฐํ ์ ์์ด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ ์ฅ์น๊ฐ ๋ชจ๋ VPN ๋คํธ์ํฌ์ ์ผ๋ถ์ธ ๊ฒฝ์ฐ ์ ํ๊ธฐ๋ ๋
ธํธ๋ถ์ ์น ์๋ฒ์ ์ฐ๊ฒฐํ ์ ์์ด์ผ ํฉ๋๋ค. ์ค์ ์ด ๋งค์ฐ ๊ฐ๋จํ๋ค๋ฉด (์ด๋๋ท์ ํตํด) ๋ฐ์คํฌํฑ์ VPN์ ์ฐ๊ฒฐํ๋ ๊ฒ์ ๊ณ ๋ คํด ๋ณผ ์ ์์ต๋๋ค.
์ ์ ๋ฐ ๋ฌด์ ์ฐ๊ฒฐ์ ๋ณด์์ด ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ ์ ๋ ์ทจ์ฝํด์ง๊ณ ์๋ค๋ ์ ์ ๊ณ ๋ คํ๋ฉด(
์ํํธ์จ์ด ์ค์น
WireGuard๊ฐ ์ ๊ณตํ๋
๋๋ ์ต์ Fedora Linux 31์ ๊ฐ์ง๊ณ ์๋๋ฐ ๋๋ฌด ๊ฒ์๋ฌ์ ์ค์นํ๊ธฐ ์ ์ ์ค๋ช
์๋ฅผ ์ฝ์ง ๋ชปํ์ต๋๋ค. ๋ฐฉ๊ธ ํจํค์ง๋ฅผ ์ฐพ์์ต๋๋ค. wireguard-tools
, ์ค์นํ์ง๋ง ์ ์๋ฌด๊ฒ๋ ์๋ํ์ง ์๋์ง ์ ์ ์์์ต๋๋ค. ์ถ๊ฐ ์กฐ์ฌ ๊ฒฐ๊ณผ ํจํค์ง๊ฐ ์ค์น๋์ด ์์ง ์์ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. wireguard-dkms
(๋คํธ์ํฌ ๋๋ผ์ด๋ฒ ์ฌ์ฉ) ํ์ง๋ง ๋ด ๋ฐฐํฌ ์ ์ฅ์์๋ ์์์ต๋๋ค.
์ง์นจ์ ์ฝ์๋ค๋ฉด ์ฌ๋ฐ๋ฅธ ์กฐ์น๋ฅผ ์ทจํ์ ๊ฒ์ ๋๋ค.
$ sudo dnf copr enable jdoss/wireguard
$ sudo dnf install wireguard-dkms wireguard-tools
๋ด Raspberry Pi์ Raspbian Buster ๋ฐฐํฌํ์ด ์ค์น๋์ด ์๋๋ฐ ์ด๋ฏธ ํจํค์ง๊ฐ ์์ต๋๋ค. wireguard
, ์ค์น:
$ sudo apt install wireguard
๋ด Android ํด๋ํฐ์ ์ ํ๋ฆฌ์ผ์ด์
์ ์ค์นํ์ต๋๋ค.
ํค ์ค์น
ํผ์ด ์ธ์ฆ์ ๊ฒฝ์ฐ Wireguard๋ ๊ฐ๋จํ ๊ฐ์ธ/๊ณต๊ฐ ํค ์ฒด๊ณ๋ฅผ ์ฌ์ฉํ์ฌ VPN ํผ์ด๋ฅผ ์ธ์ฆํฉ๋๋ค. ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ VPN ํค๋ฅผ ์ฝ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
$ wg genkey | tee wg-laptop-private.key | wg pubkey > wg-laptop-public.key
$ wg genkey | tee wg-server-private.key | wg pubkey > wg-server-public.key
$ wg genkey | tee wg-mobile-private.key | wg pubkey > wg-mobile-public.key
๊ทธ๋ฌ๋ฉด ์ธ ๊ฐ์ ํค ์(64๊ฐ ํ์ผ)์ด ์ ๊ณต๋ฉ๋๋ค. ๊ตฌ์ฑ์ ํ์ผ์ ์ฐธ์กฐํ์ง ์๊ณ ์ฌ๊ธฐ์ ๋ด์ฉ์ ๋ณต์ฌํฉ๋๋ค. ๊ฐ ํค๋ baseXNUMX์์ ํ ์ค์ ๋๋ค.
VPN ์๋ฒ์ฉ ๊ตฌ์ฑ ํ์ผ ์์ฑ(Raspberry Pi)
๊ตฌ์ฑ์ ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค. ๋ค์ ํ์ผ์ ๋ง๋ค์์ต๋๋ค. /etc/wireguard/wg0.conf
:
[Interface]
Address = 10.200.200.1/24
ListenPort = 51820
PrivateKey = <copy private key from wg-server-private.key>
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o wwan0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o wwan0 -j MASQUERADE
[Peer]
# laptop
PublicKey = <copy public key from wg-laptop-public.key>
AllowedIPs = 10.200.200.2/32
[Peer]
# mobile phone
PublicKey = <copy public key from wg-mobile-public.key>
AllowedIPs = 10.200.200.3/32
๋ช ๊ฐ์ง ์ฐธ๊ณ ์ฌํญ:
- ์ ์ ํ ์์น์ ํค๊ฐ ์๋ ํ์ผ์ ์ค์ ์ฝ์ ํด์ผ ํฉ๋๋ค.
- ๋ด VPN์ด ๋ด๋ถ ๋ฐด๋๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
10.200.200.0/24
- ํ์ฉ
PostUp
/PostDown
์ธ๋ถ ๋คํธ์ํฌ ์ธํฐํ์ด์ค wwan0์ด ์๋๋ฐ ๋ค๋ฅธ ์ธํฐํ์ด์ค(์: eth0)๊ฐ ์์ ์๋ ์์ต๋๋ค.
VPN ๋คํธ์ํฌ๋ ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ์ฝ๊ฒ ์์ฑ๋ฉ๋๋ค.
$ sudo wg-quick up wg0
ํ ๊ฐ์ง ์์ ์ธ๋ถ ์ฌํญ: ๋ด๊ฐ ์ฌ์ฉํ DNS ์๋ฒ๋ก dnsmasq
๋คํธ์ํฌ ์ธํฐํ์ด์ค์ ์ฐ๊ฒฐ๋จ br0
, ์ฅ์น๋ ์ถ๊ฐํ์ต๋๋ค wg0
ํ์ฉ๋ ์ฅ์น ๋ชฉ๋ก์ผ๋ก ์ด๋ํฉ๋๋ค. dnsmasq์์๋ ๊ตฌ์ฑ ํ์ผ์ ์ ๋คํธ์ํฌ ์ธํฐํ์ด์ค ์ค์ ์ถ๊ฐํ์ฌ ์ด๋ฅผ ์ํํฉ๋๋ค. /etc/dnsmasq.conf
์ :
interface=br0
interface=wg0
๋ํ UDP ์์ ํฌํธ(51280)์ ๋ํ ํธ๋ํฝ์ ํ์ฉํ๋ iptable ๊ท์น์ ์ถ๊ฐํ์ต๋๋ค.
$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPT
์ด์ ๋ชจ๋ ๊ฒ์ด ์๋ํ๋ฏ๋ก VPN ํฐ๋์ ์๋ ์์์ ์ค์ ํ ์ ์์ต๋๋ค.
$ sudo systemctl enable [email protected]
๋ ธํธ๋ถ์ ํด๋ผ์ด์ธํธ ๊ตฌ์ฑ
๋
ธํธ๋ถ์์ ๊ตฌ์ฑ ํ์ผ ๋ง๋ค๊ธฐ /etc/wireguard/wg0.conf
๋์ผํ ์ค์ ์ผ๋ก:
[Interface]
Address = 10.200.200.2/24
PrivateKey = <copy private key from wg-laptop-private.key>
[Peer]
PublicKey = <copy public key from wg-server-public.key>
AllowedIPs = 10.200.200.0/24
Endpoint = edgewalker:51820
์ฐธ๊ณ ์ฌํญ :
- Edgewalker ๋์ ๊ณต์ฉ IP ๋๋ VPN ์๋ฒ ํธ์คํธ๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค.
- ์ค์ ํ์ฌ
AllowedIPs
์10.200.200.0/24
, ์ฐ๋ฆฌ๋ VPN์ ์ฌ์ฉํ์ฌ ๋ด๋ถ ๋คํธ์ํฌ์ ์ก์ธ์คํฉ๋๋ค. ๋ค๋ฅธ ๋ชจ๋ IP ์ฃผ์/์๋ฒ์ ๋ํ ํธ๋ํฝ์ ๊ณ์ํด์ "์ผ๋ฐ" ๊ณต๊ฐ ์ฑ๋์ ํต๊ณผํฉ๋๋ค. ๋ํ ๋ ธํธ๋ถ์ ๋ฏธ๋ฆฌ ๊ตฌ์ฑ๋ DNS ์๋ฒ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
ํ
์คํธ ๋ฐ ์๋ ์คํ์ ์ํด ๋์ผํ ๋ช
๋ น์ ์ฌ์ฉํฉ๋๋ค. wg-quick
ะธ systemd
:
$ sudo wg-quick up wg0
$ sudo systemctl enable [email protected]
Android ํด๋ํฐ์์ ํด๋ผ์ด์ธํธ ์ค์
Android ํด๋ํฐ์ ๊ฒฝ์ฐ ๋งค์ฐ ์ ์ฌํ ๊ตฌ์ฑ ํ์ผ์ ์์ฑํฉ๋๋ค. mobile.conf
):
[Interface]
Address = 10.200.200.3/24
PrivateKey = <copy private key from wg-mobile-private.key>
DNS = 10.200.200.1
[Peer]
PublicKey = <copy public key from wg-server-public.key>
AllowedIPs = 0.0.0.0/0
Endpoint = edgewalker:51820
๋
ธํธ๋ถ์ ๊ตฌ์ฑ๊ณผ ๋ฌ๋ฆฌ ์ ํ๊ธฐ๋ VPN ์๋ฒ๋ฅผ DNS ์๋ฒ๋ก ์ฌ์ฉํด์ผ ํฉ๋๋ค(๋ผ์ธ DNS
), VPN ํฐ๋(AllowedIPs = 0.0.0.0/0
).
ํ์ผ์ ๋ชจ๋ฐ์ผ ์ฅ์น์ ๋ณต์ฌํ๋ ๋์ QR ์ฝ๋๋ก ๋ณํํ ์ ์์ต๋๋ค.
$ sudo apt install qrencode
$ qrencode -t ansiutf8 < mobile.conf
QR ์ฝ๋๋ ์ฝ์์ ASCII๋ก ์ถ๋ ฅ๋ฉ๋๋ค. Android VPN ์ฑ์์ ์ค์บํ ์ ์์ผ๋ฉฐ ์๋์ผ๋ก VPN ํฐ๋์ ์ค์ ํฉ๋๋ค.
์ถ๋ ฅ
WireGuard ์ค์ ์ OpenVPN์ ๋นํด ์ ๋ง ๋ง์ ์ ์
๋๋ค.
์ถ์ฒ : habr.com