Static ip for OpenVPN clients - XIYO/asuswrt-merlin.ng-kr GitHub Wiki
VPN ํด๋ผ์ด์ธํธ์ ๊ณ ์ IP๋ฅผ ํ ๋นํ๋ ๊ฒ์, ์๋ฅผ ๋ค์ด ํด๋ผ์ด์ธํธ๊ฐ rsync๋ฅผ ์ํ ๋ฐฑ์
๋์์ผ ๋ ์ ์ฉํ ์ ์์ต๋๋ค. Asus ๋ผ์ฐํฐ์์ Merlin ํ์จ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฅผ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
# 1. ๋ผ์ฐํฐ ์ค์
## 1.1. easy-rsa๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ฆ์ ์์ฑ
์๋ฒ์ ๊ฐ ํด๋ผ์ด์ธํธ์ฉ์ผ๋ก ๊ณ ์ ํ ์ธ์ฆ์๋ฅผ easy-rsa ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์์ฑํด์ผ ํฉ๋๋ค. ์ด ์์
์ ์ํํ๋ ค๋ฉด ๋ค์ ํํ ๋ฆฌ์ผ์ ๋ฐ๋ผํ์ญ์์ค:
[https://github.com/XIYO/asuswrt-merlin.ng-kr/wiki/Generating-OpenVPN-keys-using-Easy-RSA](https://github.com/XIYO/asuswrt-merlin.ng-kr/wiki/Generating-OpenVPN-keys-using-Easy-RSA)
์๋ฃ๋๋ฉด, ์ ํํ [ํด๋]/easy-rsa/keys์์ ์์ฑ๋ ๋ชจ๋ ํ์ผ์ ๊ฐ์ ธ์ต๋๋ค. ์ด๋ฅผ ์ํด WinSCP๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
## 1.2. ์์ฑ๋ ์ธ์ฆ์๋ฅผ ๋ผ์ฐํฐ์์ ์ฌ์ฉํ๊ธฐ
๋ค์ด๋ก๋ํ keys ํด๋์๋ ๊ฐ ํด๋ผ์ด์ธํธ์ฉ 3๊ฐ์ ํ์ผ(.csr, .crt, .key), ์๋ฒ์ฉ 3๊ฐ์ ํ์ผ(.csr, .crt, .key), ์ธ์ฆ ๊ธฐ๊ด๊ณผ ๊ด๋ จ๋ 3๊ฐ์ ํ์ผ(ca.crt, ca.key, dh1024.pem)์ด ์์ต๋๋ค. ๋ค๋ฅธ ํ์ผ๋ค์ ๋ฌด์ํ์
๋ ๋ฉ๋๋ค.
์๋ฒ์์ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ด๋ฅผ ์ํด ๋ผ์ฐํฐ์ GUI๋ก ์ด๋ํ์ฌ VPN > VPN ์๋ฒ > ์๋ฒ ์ ํ (1 ๋๋ 2), ๊ณ ๊ธ ์ค์ ์ผ๋ก ์ด๋ํ์ญ์์ค.

๊ทธ๋ฐ ๋ค์ "ํค ๋ฐ ์ธ์ฆ์"๋ฅผ ํธ์งํฉ๋๋ค.

- ์ธ์ฆ ๊ธฐ๊ด ํ๋์๋ ca.crt ํ์ผ์ ๋ด์ฉ์ ๋ถ์ฌ๋ฃ์ต๋๋ค.
- ์๋ฒ ์ธ์ฆ์์๋ ์๋ฒ.crt ํ์ผ์ ๋ด์ฉ์ ๋ถ์ฌ๋ฃ์ต๋๋ค(-----BEGIN CERTIFICATE-----๋ถํฐ -----END CERTIFICATE-----๊น์ง, ํด๋น ๋ ์ค ํฌํจ).
- ์๋ฒ ํค์๋ server.key ํ์ผ์ ๋ด์ฉ์ ๋ถ์ฌ๋ฃ์ต๋๋ค.
- ๋ง์ง๋ง์ผ๋ก, Diffie Hellman ๋งค๊ฐ๋ณ์์๋ dh1024.pem์ ๋ด์ฉ์ ๋ถ์ฌ๋ฃ์ต๋๋ค.
## 1.3. ifconfig-pool-persist ์ค์
GUI์ ๊ณ ๊ธ ์ค์ ์์, ์ฌ์ฉ์ ์ ์ ๊ตฌ์ฑ์ ๋ค์ ์ค์ ์ถ๊ฐํ์ญ์์ค:
```shell
ifconfig-pool-persist /jffs/configs/openvpn/ipp.txt
๋ง์ง๋ง์ผ๋ก, ์ด ํ๋ฉด์์ "ํด๋ผ์ด์ธํธ๋ณ ์ต์ ๊ด๋ฆฌ"๋ฅผ ์๋ก ์ ํํฉ๋๋ค. ์ดํ ๋จ๊ณ์์ ํ์ํฉ๋๋ค.
ํฐ๋ฏธ๋์์ ipp.txt ํ์ผ์ ์์ฑํฉ๋๋ค. ๋ฐ๋ผ์:
vi /jffs/configs/openvpn/ipp.txt
๊ทธ๋ฆฌ๊ณ i๋ฅผ ๋๋ฌ ํ ์คํธ๋ฅผ ์ ๋ ฅํ๊ณ ๋ค์๊ณผ ๊ฐ์ ํ์ผ์ ์์ฑํด์ผ ํฉ๋๋ค:
client1,10.8.0.x
client2,10.8.0.x
client3,10.8.0.x
๊ฐ ํด๋ผ์ด์ธํธ์ ๋ํด ์ํ๋ ์ ์ IP ์ฃผ์๋ฅผ ์ฌ์ฉํฉ๋๋ค. easy-rsa๋ฅผ ์ฌ์ฉํ์ฌ ์ค์ ํ ์ผ๋ฐ ์ด๋ฆ์ ์ฌ์ฉํ์ธ์. ESC๋ฅผ ๋๋ฅธ ๋ค์ ZZ๋ฅผ ์ ๋ ฅํ์ฌ vi์์ ๋๊ฐ๋๋ค.
๋ผ์ฐํฐ GUI์ VPN ์ค์ ์์ ์ผ๋ฐ ์ค์ ์ผ๋ก ๋์๊ฐ ๊ฐ ํด๋ผ์ด์ธํธ์ ๋ํ ์ฌ์ฉ์ ์ด๋ฆ๊ณผ ๋น๋ฐ๋ฒํธ๋ฅผ ์์ฑํฉ๋๋ค.
๊ฐ
ํด๋ผ์ด์ธํธ์ ๋ํ ccd ํ์ผ์ ์์ฑํด์ผ ํฉ๋๋ค. ์ด๋ฅผ ์ํด easy-rsa์์ ์ค์ ํ ์ผ๋ฐ ์ด๋ฆ์ผ๋ก /jffs/configs/openvpn/ccd1์ ํด๋ผ์ด์ธํธ๋น ํ๋์ ํ์ผ์ ์์ฑํฉ๋๋ค. ์ด ํ์ผ์๋ ๋ค์์ ์ ๋ ฅํฉ๋๋ค:
ifconfig-push 10.8.0.X 255.255.255.0
์ด ํด๋ผ์ด์ธํธ์ ๋ํด ์ํ๋ ์ ์ IP ์ฃผ์๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋น์ฐํ ipp.txt ํ์ผ์ ์ฃผ์์ ๋์ผํด์ผ ํฉ๋๋ค. ์ด ํ์ผ์ ์์ฑํ๊ธฐ ์ํด vi๋ฅผ ์ฌ์ฉํ์ญ์์ค.
์๋ฒ๊ฐ ์ด์ ์ค์ ๋์์ต๋๋ค. ๋ผ์ฐํฐ GUI์์ VPN ์๋ฒ ํ์ด์ง๋ก ๋์๊ฐ OpenVPN ๊ตฌ์ฑ ํ์ผ ๋ด๋ณด๋ด๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค. client1.ovpn ํ์ผ์ ์ ์ฅํ๊ณ ํธ์งํฉ๋๋ค.
ํ์ผ์ ๋ ๋ถ๋ถ์ ์ฒซ ๋ฒ์งธ ํด๋ผ์ด์ธํธ์ .crt ํ์ผ ๋ด์ฉ์ ํ๊ทธ ์ฌ์ด์, ์ฒซ ๋ฒ์งธ ํด๋ผ์ด์ธํธ์ .key ํ์ผ ๋ด์ฉ์ ํ๊ทธ ์ฌ์ด์ ๋ถ์ฌ๋ฃ์ต๋๋ค. ํ์ผ์ ์ ์ฅํ ๋ค์ VPN์ ์ฐ๊ฒฐํ๋ ๋ฐ ์ฌ์ฉํฉ๋๋ค.
์ฆ๊ธฐ์ธ์.