๐ฆ IP ํฌ์๋ฉ, ๋์ฒด ๋ฌด์์ด๊ณ ์ ํ์ํ๊ฐ์?
์ฝ๊ฒ ๋น์ ํ๋ฉด, ๋ฆฌ๋ ์ค ์๋ฒ๋ฅผ ๊ตํต๊ฒฝ์ฐฐ(๐ฎโโ๏ธ)๋ก ๋ง๋๋ ๊ฒ๋๋ค.
๋ฆฌ๋ ์ค ์๋ฒ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ ์๊ฒ ์จ ํจํท๋ง ์ฒ๋ฆฌํฉ๋๋ค.
์ฆ, ๋ชฉ์ ์ง IP ์ฃผ์๊ฐ ์๊ธฐ ์์ ์ด ์๋๋ฉด ๊ทธ๋ฅ ๋ฒ๋ ค๋ฒ๋ฆฐ๋ค๋ ๋ป์ด์ฃ .
ํ์ง๋ง IP ํฌ์๋ฉ์ ํ์ฑํํ๋ฉด ์ด์ผ๊ธฐ๋ ๋ฌ๋ผ์ง๋๋ค.
์๋ฒ์ ๋คํธ์ํฌ ์ธํฐํ์ด์ค(๋์นด๋)๊ฐ ๋ ๊ฐ ์ด์ ์์ ๋,
ํ์ชฝ ์ธํฐํ์ด์ค๋ก ๋ค์ด์จ ํจํท์ ๋ชฉ์ ์ง๊ฐ ์์ ์ด ์๋๋ผ ๋ค๋ฅธ ๋คํธ์ํฌ ๋์ญ์ด๋ผ๋ฉด? IP ํฌ์๋ฉ์ด ์ผ์ง ์๋ฒ๋ ๊ทธ ํจํท์ ๋ฒ๋ฆฌ์ง ์์ต๋๋ค.
๋ฒ๋ฆฌ์ ์๊ณ ์ด๋ป๊ฒ ํ๋ค? "์ ์ด ํจํท์ ์ ์ชฝ ๋คํธ์ํฌ๋ก ๊ฐ์ผ ํ๋๊ตฌ๋! ํ๊ณ ์ฌ๋ฐ๋ฅธ ๊ฒฝ๋ก๋ก ์ ๋ฌ(Forwarding)ํด ์ค๋๋ค.
์ด ๊ธฐ๋ฅ์ด ํ์ํ ๋ํ์ ์ธ ๊ฒฝ์ฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ผ์ฐํฐ(Router) ๋ฐ ๊ฒ์ดํธ์จ์ด(Gateway) ๊ตฌ์ถ
์๋ฅผ ๋ค์ด, ์ธํฐ๋ท์ ์ฐ๊ฒฐ๋ ๋์นด๋(eth0
)์ ๋ด๋ถ ์ฌ์ค๋ง์ ์ฐ๊ฒฐ๋ ๋์นด๋(eth1
)๋ฅผ ๊ฐ์ง ๋ฆฌ๋
์ค ์๋ฒ๊ฐ ์๋ค๊ณ ๊ฐ์ ํด ๋ด
์๋ค.
๋ด๋ถ๋ง์ ์ปดํจํฐ๋ค์ด ์ธํฐ๋ท์ ์ ์ํ๋ ค๋ฉด, ์ด ๋ฆฌ๋ ์ค ์๋ฒ๊ฐ ์ค๊ฐ์์ ํจํท์ ์ ๋ฌํด์ค์ผ๋ง ํฉ๋๋ค. ์ด๋ IP ํฌ์๋ฉ์ ํ์์ ๋๋ค.
VPN ์๋ฒ ์ด์
L2TP/IPSec
, OpenVPN
, WireGuard
๊ฐ์ VPN ์๋ฒ๋ ์ธ๋ถ์์ ์ ์ํ ํด๋ผ์ด์ธํธ์ ํธ๋ํฝ์ ๋ด๋ถ๋ง์ด๋ ์ธํฐ๋ท์ผ๋ก ์ ๋ฌํด์ฃผ๋ ์ญํ ์ ํฉ๋๋ค. ์ด ๊ณผ์ ์์ ๋ฐ๋์ IP ํฌ์๋ฉ์ด ํ์ํฉ๋๋ค.
๋ฐฉํ๋ฒฝ(Firewall) ๋ฐ NAT(Network Address Translation)
๋ฆฌ๋ ์ค๋ฅผ ๋ฐฉํ๋ฒฝ์ผ๋ก ์ฌ์ฉํ ๋, ๋จ์ํ ํจํท์ ์ฐจ๋จ/ํ์ฉํ๋ ๊ฒ๋ฟ๋ง ์๋๋ผ ํน์ ๊ท์น์ ๋ฐ๋ผ ํจํท์ ๋ค๋ฅธ ๊ณณ์ผ๋ก ์ ๋ฌํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
ํนํ ์ฌ๋ฌ ๋์ ์ฌ์ค IP๋ฅผ ํ๋์ ๊ณต์ธ IP๋ก ๋ฐ๊ฟ์ฃผ๋ NAT ํ๊ฒฝ์์๋ IP ํฌ์๋ฉ์ด ํต์ฌ์ ์ธ ์ญํ ์ ํฉ๋๋ค.
์ปจํ ์ด๋ ๋ฐ ๊ฐ์ํ (Docker, KVM)
๋์ปค(Docker) ์ปจํ ์ด๋๋ ๊ฐ์๋จธ์ (VM)์ด ์ธ๋ถ์ ํต์ ํด์ผ ํ ๋, ํธ์คํธ ์ด์์ฒด์ ์ธ ๋ฆฌ๋ ์ค๋ ์ด๋ค์ ํธ๋ํฝ์ ๋ฌผ๋ฆฌ ๋คํธ์ํฌ๋ก ์ ๋ฌํด์ฃผ๋ ์ญํ ์ ํฉ๋๋ค. ์ด ์ญ์ IP ํฌ์๋ฉ์ ์ผ์ข ์ด๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค.
โ๏ธ sysctl๊ณผ /etc/sysctl.d/ ํํค์น๊ธฐ
IP ํฌ์๋ฉ์ ํฌํจํ ๋ฆฌ๋ ์ค์ ์๋ง์ ์ปค๋ ๋์ ๋ฐฉ์์ ์ปค๋ ํ๋ผ๋ฏธํฐ(Kernel Parameters) ๋ฅผ ํตํด ์ ์ด๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ํ๋ผ๋ฏธํฐ๋ฅผ ํ์ธํ๊ณ ์ค์๊ฐ์ผ๋ก ๋ณ๊ฒฝํ๋ ๋ช
๋ น์ด๊ฐ ๋ฐ๋ก sysctl
์
๋๋ค.
ํ์ง๋ง sysctl
๋ช
๋ น์ด๋ก ๋ณ๊ฒฝํ ์ค์ ์ ์ฌ๋ถํ
ํ๋ฉด ์ฌ๋ผ์ง๋ ์ผํ์ฑ ์ค์ ์
๋๋ค.
์ค์ ์ ์๊ตฌ์ ์ผ๋ก ์ ์งํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น์? ๋ฐ๋ก ์ค์ ํ์ผ์ ๊ธฐ๋กํด๋๋ ๊ฒ์ ๋๋ค.
๊ณผ๊ฑฐ์๋ ๋ชจ๋ ์ค์ ์ /etc/sysctl.conf
๋ผ๋ ๋จ์ผ ํ์ผ์ ๊ธฐ๋กํ์ต๋๋ค. ํ์ง๋ง ์์ฆ ์์คํ
๋ค์ /etc/sysctl.d/
๋๋ ํ ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
/etc/sysctl.d/ ๋๋ ํฐ๋ฆฌ๋ ์ด๋ป๊ฒ ์๋ํ ๊น์?
์ด ๋๋ ํฐ๋ฆฌ์ ์๋ ๋ฐฉ์์ ์์ฃผ ๊ฐ๋จํ๊ณ ํจ์จ์ ์ ๋๋ค.
- ๋ชจ๋ํ๋ ์ค์ : ์์คํ
๋ถํ
์ ๋๋
sysctl
์ ์ฉ ๋ช ๋ น ์, ์์คํ ์/etc/sysctl.conf
ํ์ผ๊ณผ ํจ๊ป/etc/sysctl.d/
๋๋ ํฐ๋ฆฌ ์์ ์๋ ๋ชจ๋.conf
ํ์ผ์ ์ฝ์ด๋ค์ ๋๋ค. - ์ด๋ฆ ์์๋๋ก ์ ์ฉ: ํ์ผ๋ค์ ์ด๋ฆ ์์(์ํ๋ฒณ, ์ซ์ ์)๋๋ก ๋ก๋๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด
10-network.conf
๊ฐ99-custom.conf
๋ณด๋ค ๋จผ์ ์ ์ฉ๋ฉ๋๋ค. - ๋ฎ์ด์ฐ๊ธฐ(Override): ๋ง์ฝ ์ฌ๋ฌ ํ์ผ์ ๋์ผํ ์ค์ ์ด ์๋ค๋ฉด, ๋์ค์ ์ฝํ ํ์ผ์ ์ค์ ์ด ์ด์ ์ ์ฝํ ์ค์ ์ ๋ฎ์ด์๋๋ค. ์๋ฅผ ๋ค์ด,
10-network.conf
์net.ipv4.ip_forward = 0
์ด ์๊ณ99-custom.conf
์net.ipv4.ip_forward = 1
์ด ์๋ค๋ฉด, ์ต์ข ์ ์ผ๋ก๋ 1์ด ์ ์ฉ๋ฉ๋๋ค.
์ด๋ฌํ ๋ฐฉ์ ๋๋ถ์ ์ฐ๋ฆฌ๋ ๊ธฐ๋ณธ ์์คํ
์ค์ ์ ๊ฑด๋๋ฆฌ์ง ์๊ณ , 99-my-settings.conf
์ ๊ฐ์ ํ์ผ์ ๋ง๋ค์ด ์ํ๋ ์ค์ ์ ์ถ๊ฐํ๊ฑฐ๋ ๋ฎ์ด์ธ ์ ์์ต๋๋ค.
ํจํค์ง๋ฅผ ์ค์นํ ๋๋ ํด๋น ํจํค์ง์ ํ์ํ ์ปค๋ ์ค์ ์ด 50-docker.conf
์ ๊ฐ์ ํ์ผ๋ก ๊น๋ํ๊ฒ ์ถ๊ฐ๋ ์ ์์ด ๊ด๋ฆฌ๊ฐ ๋งค์ฐ ์ฉ์ดํฉ๋๋ค.
๐ ๏ธ IP ํฌ์๋ฉ ํ์ฑํ ๋ฐ ์ํ ํ์ธํ๊ธฐ
1๋จ๊ณ: ํ์ฌ IP ํฌ์๋ฉ ์ํ ํ์ธํ๊ธฐ
๋จผ์ ํ์ฌ ์ค์ ๊ฐ์ด ๋ฌด์์ธ์ง ํ์ธํฉ๋๋ค. 0์ ๋นํ์ฑํ, 1์ ํ์ฑํ ์ํ๋ฅผ ์๋ฏธํฉ๋๋ค.
# sysctl ๋ช
๋ น์ด๋ก ํ์ธ
sysctl net.ipv4.ip_forward
# /proc ํ์ผ์์คํ
์ ์ง์ ์ฝ์ด์ ํ์ธ
cat /proc/sys/net/ipv4/ip_forward
2๋จ๊ณ: IP ํฌ์๋ฉ ์๊ตฌ์ ์ผ๋ก ํ์ฑํํ๊ธฐ
์ฌ๋ถํ
ํ์๋ ์ค์ ์ด ์ ์ง๋๋๋ก /etc/sysctl.d/
๋๋ ํฐ๋ฆฌ์ ์ค์ ํ์ผ์ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค.
ํ์ผ ์ด๋ฆ ์์ 99๋ ๋ค๋ฅธ ๊ธฐ๋ณธ ์ค์ ๋ค๋ณด๋ค ๋์ค์ ์ ์ฉ๋๋๋ก ํ๊ธฐ ์ํ ๊ด๋ก์ ๋๋ค.
# ํ
์คํธ ํธ์ง๊ธฐ(nano, vim ๋ฑ)๋ก ์ ์ค์ ํ์ผ์ ์ฝ๋๋ค.
sudo nano /etc/sysctl.d/99-custom-forwarding.conf
ํ์ผ ์์ ๋ค์ ๋ด์ฉ์ ํ ์ค ์ถ๊ฐํ๊ณ ์ ์ฅํฉ๋๋ค.
net.ipv4.ip_forward = 1
3๋จ๊ณ: ๋ณ๊ฒฝ๋ ์ค์ ์ฆ์ ์ ์ฉํ๊ธฐ
๋ฐฉ๊ธ ๋ง๋ ์ค์ ํ์ผ์ ์์คํ ์ ๋ฐ๋ก ์ ์ฉํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ฌ๋ถํ ํ ํ์๊ฐ ์์ต๋๋ค.
# ์์คํ
์ ๋ชจ๋ .conf ํ์ผ์ ๋ค์ ์ฝ์ด ์ ์ฉ (๊ถ์ฅ ๋ฐฉ์)
sudo sysctl --system
# ๋๋ ์๋ ๋ช
๋ น์ด๋ ๋์ผํ ์ญํ ์ ํฉ๋๋ค.
# sudo sysctl -p