Search
๐ŸŒ

[CKA] 59. Network Namespace

Date
2026/02/01
Category
Computer Science
Tag
CKA
Network
Linux
๋ชฉ์ฐจ

ย Network Namespace

์ปจํ…Œ์ด๋„ˆ๋Š” โ€œ๋„คํŠธ์›Œํฌ๊นŒ์ง€โ€ ๊ฒฉ๋ฆฌ๋˜์–ด์•ผ ํ•œ๋‹ค. ํ˜ธ์ŠคํŠธ๊ฐ€ ๊ฐ€์ง„ eth0, ๋ผ์šฐํŒ… ํ…Œ์ด๋ธ”, ARP ํ…Œ์ด๋ธ”์„ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ทธ๋Œ€๋กœ ๋ณด๋ฉด ์‚ฌ์‹ค์ƒ ๊ฐ™์€ ๋„คํŠธ์›Œํฌ์— ์žˆ๋Š” ๊ฑฐ๋ผ ๊ฒฉ๋ฆฌ๊ฐ€ ์•„๋‹ˆ๋‹ค.
๊ทธ๋ž˜์„œ Linux๋Š” Network Namespace๋ผ๋Š” โ€œ๋„คํŠธ์›Œํฌ ์ „์šฉ ๋ฐฉโ€์„ ์ œ๊ณตํ•œ๋‹ค.
์ปจํ…Œ์ด๋„ˆ(Docker)๋Š” ์ด๊ฑธ ์ด์šฉํ•ด์„œ ๊ฐ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ž๊ธฐ๋งŒ์˜ ์ธํ„ฐํŽ˜์ด์Šค/๋ผ์šฐํŒ…/ARP ํ…Œ์ด๋ธ”์„ ๊ฐ–๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ฒŒ ๋งŒ๋“ ๋‹ค.

Network in Namespace

ํ˜ธ์ŠคํŠธ์—์„œ ip link๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ lo, eth0๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค๋ฉด, ๊ทธ ์•ˆ์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ lo๋งŒ ๋ณด์ด๋Š” ์ƒํƒœ๋กœ ์‹œ์ž‘ํ•œ๋‹ค.

ย ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ƒ์„ฑ

์ปจํ…Œ์ด๋„ˆ์—๋Š” Linux ํ˜ธ์ŠคํŠธ์— ์ƒˆ Network Namespace๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ž์ฒด ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์žˆ์œผ๋ฉฐ ip netns add ... ๋ช…๋ น์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
$ ip netns add red $ ip netns add blue $ ip netns red blue
Bash
๋ณต์‚ฌ
ํ˜ธ์ŠคํŠธ์—์„œ ip link๋ฅผ ํ†ตํ•ด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ƒ์„ฑํ•œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ™•์ธ ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค:
ip netns exec red ip link ip -n red link
Bash
๋ณต์‚ฌ
๋‘ ๋ช…๋ น์–ด๋Š” ๋™์ผํ•œ ๋ช…๋ น์–ด์ด๋‹ค. ์œ„ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด eth0์ด ๋ณด์ด์ง€ ์•Š๋Š”๋ฐ, ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋Š” ํ˜ธ์ŠคํŠธ์˜ ๋„คํŠธ์›Œํฌ๋ฅผ โ€˜๋ณด์ง€ ๋ชปํ•˜๊ฒŒโ€™ ๋งŒ๋“  ์ƒํƒœ๋กœ ์‹œ์ž‘ํ•œ๋‹ค. ์ด๋Š” arp table๊ณผ routing table๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋‹ค.

ย veth pair

๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ผ๋ฆฌ ํ†ต์‹ ์„ ์‹œํ‚ค๋ ค๋ฉด ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ๋ฌผ๋ฆฌ ์„ธ๊ณ„์—์„œ ์ปดํ“จํ„ฐ 2๋Œ€๋ฅผ ์ผ€์ด๋ธ”๋กœ ์—ฐ๊ฒฐํ•˜๋“ฏ, Linux์—์„œ๋Š” veth pair(๊ฐ€์ƒ ์ผ€์ด๋ธ”)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
โ€ข
veth๋Š” ํ•ญ์ƒ ์Œ์œผ๋กœ ์ƒ๊ธด๋‹ค.
โ€ข
ํ•œ์ชฝ ๋์„ red, ๋‹ค๋ฅธ์ชฝ ๊ธ‘์„ blue ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋„ฃ์œผ๋ฉด โ€œ์ง๊ฒฐโ€๋œ๋‹ค.
1.
veth pair ์ƒ์„ฑ
ip link add veth-red type veth peer name veth-blue
Bash
๋ณต์‚ฌ
2.
๊ฐ๊ฐ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋„ฃ๊ธฐ
ip link set veth-red netns red ip link set veth-blue netns blue
Bash
๋ณต์‚ฌ
3.
ip ํ• ๋‹น + UP
ip -n red addr add 192.168.5.1/24 dev veth-red ip -n blue addr add 192.168.5.2/24 dev veth-blue ip -n red link set veth-red up ip -n blue link set veth-blue up
Bash
๋ณต์‚ฌ
4.
ํ†ต์‹  ํ™•์ธ
ip netns exec red ping 192.168.15.2 ip netns exec red arp ip netns exec blue arp
Bash
๋ณต์‚ฌ
โ€ข
red/blue ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ARP ํ…Œ์ด๋ธ”์— ์„œ๋กœ๊ฐ€ ์žกํžŒ๋‹ค
โ€ข
ํ˜ธ์ŠคํŠธ์˜ ARP ํ…Œ์ด๋ธ”์€ ์ด ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋„คํŠธ์›Œํฌ๋ฅผ ๋ชจ๋ฅธ๋‹ค

ย ๊ฐ€์ƒ ์Šค์œ„์น˜

๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ 2๊ฐœ๋ฉด ์ง๊ฒฐ(veth pair)๋กœ๋„ ๋˜๋Š”๋ฐ, ๊ทธ ์ด์ƒ์ด๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ?
ํ˜„์‹ค์—์„œ PC ์—ฌ๋Ÿฌ ๋Œ€๋ฅผ ์Šค์œ„์น˜์— ๋ฌผ๋ฆฌ๋“ฏ ํ˜ธ์ŠคํŠธ ์•ˆ์— ๊ฐ€์ƒ ์Šค์œ„์น˜๋ฅผ ๋งŒ๋“ค๊ณ  ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋“ค์„ ์—ฌ๊ธฐ์— ๋ถ™์ธ๋‹ค.
๋ฆฌ๋ˆ…์Šค์—์„œ๋Š” ๋Œ€ํ‘œ์ ์œผ๋กœ
โ€ข
Linux Bridge
โ€ข
Open vSwitch
๊ฐ€ ์žˆ๋‹ค.

Linux Bridge

Bridge๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—๊ฒŒ ์Šค์œ„์น˜์ง€๋งŒ, ํ˜ธ์ŠคํŠธ ์ž…์žฅ์—์„œ๋Š” ๊ทธ๋ƒฅ ์ธํ„ฐํŽ˜์ด์Šค ํ•˜๋‚˜๋‹ค.
1.
Bridge ์ƒ์„ฑ + UP
ip link add v-net-0 type bridge ip link set dev v-net-0 up
Bash
๋ณต์‚ฌ
2.
๊ธฐ์กด veth pair ์‚ญ์ œ (์กด์žฌํ•  ๊ฒฝ์šฐ)
red, blue๋ฅผ bridge ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐํ•  ๊ฒƒ์ด๋ฏ€๋กœ ์‚ญ์ œํ•œ๋‹ค.
ip link delete veth-red
Bash
๋ณต์‚ฌ
veth pair๋Š” ์Œ์œผ๋กœ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•œ ์ชฝ๋งŒ ์‚ญ์ œํ•˜๋ฉด ๋‹ค๋ฅธ ํ•œ ์ชฝ์€ ์ž๋™์œผ๋กœ ์‚ญ์ œ๋œ๋‹ค.
3.
veth pair ์ƒ์„ฑ
์ด์ œ ๊ฐ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋งˆ๋‹ค โ€œBridge๋กœ ๊ฐ€๋Š” ์ผ€์ด๋ธ”(veth pair)๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
โ€ข
Namespace ์ชฝ: veth-red
โ€ข
Bridge ์ชฝ: veth-red-br
ip link add veth-red type veth peer name veth-red-br ip link add veth-blue type veth peer name veth-blue-br
Bash
๋ณต์‚ฌ
4.
bridge ์—ฐ๊ฒฐ
๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ชฝ์€ netns๋กœ, ๋ธŒ๋ฆฌ์ง€ ์ชฝ์€ ๋ธŒ๋ฆฌ์ง€์— ์—ฐ๊ฒฐํ•œ๋‹ค.
ip link set veth-red netns red ip link set veth-blue netns blue ip link set veth-red-br master v-net-0 ip link set veth-blue-br master v-net-0
Bash
๋ณต์‚ฌ
5.
๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋‚ด๋ถ€ IP ์„ค์ • + UP
ip -n red addr add 192.168.15.1/24 dev veth-red ip -n blue addr add 192.168.15.2/24 dev veth-blue ip -n red link set veth-red up ip -n blue link set veth-blue up
Bash
๋ณต์‚ฌ
์ด์ œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋“ค์€ ๊ฐ™์€ ๋‚ด๋ถ€ ์Šค์œ„์น˜(v-net-0)์— ๋ถ™์–ด์„œ ์„œ๋กœ ํ†ต์‹ ํ•œ๋‹ค.

ย host namespace ํ†ต์‹ 

Bridge(v-net-0)๋Š” ํ˜ธ์ŠคํŠธ ์ž…์žฅ์—์„œ ์ธํ„ฐํŽ˜์ด์Šค๋‹ค. ํ˜ธ์ŠคํŠธ๋„ ๊ฐ™์€ ๋Œ€์—ญ IP๋ฅผ ํ• ๋‹นํ•˜๋ฉด ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋กœ ์ง์ ‘ ํ•‘์ด ๊ฐ„๋‹ค.
$ ping 192.168.15.1 Not Reachable! $ ip addr add 192.168.15.5/24 dev v-net-0 $ ping 192.168.15.1 PING 192.168.15.1 ...
Bash
๋ณต์‚ฌ

ย LAN

๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ ๋ฐ–(LAN)์œผ๋กœ ๋‚˜๊ฐ€๋Š” ๊ฒƒ์€ ํ˜„์‹ค ๋„คํŠธ์›Œํฌ์™€ ๋˜‘๊ฐ™๋‹ค.
โ€ข
๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋‚ด๋ถ€๋ง: 192.168.15.0/24
โ€ข
ํ˜ธ์ŠคํŠธ์˜ ์™ธ๋ถ€ LAN: 192.168.1.0/24
โ€ข
ํ˜ธ์ŠคํŠธ๋Š” ์–‘์ชฝ์— ๋ฐœ์ด ๊ฑธ์ณ ์žˆ์Œ
โ—ฆ
v-net-0 = 192.168.15.5
โ—ฆ
eth0 = 192.168.1.2
๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ 192.168.1.3 ๊ฐ™์€ LAN ํ˜ธ์ŠคํŠธ๋กœ pingํ•˜๋ฉด:
โ€ข
๋‹ค๋ฅธ ๋„คํŠธ์›Œํฌ๋‹ˆ๊นŒ ๊ฒŒ์ดํŠธ์›จ์ด(route)๊ฐ€ ํ•„์š”ํ•จ
1.
๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋ผ์šฐํŒ… ์ถ”๊ฐ€
ip netns exec blue ip route add 192.168.1.0/24 via 192.168.15.5
Bash
๋ณต์‚ฌ
ping์„ ๋‚ ๋ฆฌ๋ฉด network unreachable์„ ๋œจ์ง€ ์•Š์ง€๋งŒ, ์‘๋‹ต์ด ์˜ค์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค. LAN ์ž…์žฅ์—์„œ๋Š” 192.168.15.x๋ฅผ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋˜๋Œ์•„๊ฐˆ ๊ธธ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ NAT๊ฐ€ ํ•„์š”ํ•˜๋‹ค
2.
NAT ๊ธฐ๋Šฅ ์ถ”๊ฐ€
iptables๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค. postrouting chain์˜ NAT IP ํ…Œ์ด๋ธ”์— ์ƒˆ ๊ทœ์น™์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์†Œ์Šค ๋„คํŠธ์›Œํฌ์—์„œ ์˜ค๋Š” ๋ชจ๋“  ํŒจํ‚ท์˜ ๋ฐœ์‹  ์ฃผ์†Œ๋ฅผ ๋Œ€์ฒดํ•œ๋‹ค.
โ†’ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋‚ด๋ถ€๋ง์ด ๋ฐ–์œผ๋กœ ๋‚˜๊ฐˆ ๋•Œ ํ˜ธ์ŠคํŠธ IP๋กœ ๋ณ€์žฅ์‹œํ‚จ๋‹ค
iptables -t nat -A POSTROUTING -s 192.168.15.0/24 -j MASQUERADE
Bash
๋ณต์‚ฌ

ย ์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ

LAN ๋Œ€์—ญ ๋ง๊ณ  โ€œ๋ชจ๋“  ์™ธ๋ถ€โ€๋กœ ๋‚˜๊ฐ€๋ ค๋ฉด ๊ธฐ๋ณธ ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ์žก์•„์•ผ ํ•œ๋‹ค.
ip netns exec blue ip route add default via 192.168.15.5
Bash
๋ณต์‚ฌ
๋„ค์ž„์ŠคํŽ˜์ด์Šค๋Š” ํ˜ธ์ŠคํŠธ๊ฐ€ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ณณ์€ ๋‹ค ๊ฐ™์ด ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ๊ฐ€ ๋œ๋‹ค. ์ด๋•Œ ํ˜ธ์ŠคํŠธ๋Š” ๊ฒŒ์ดํŠธ์›จ์ด ์—ญํ• ์„ ํ•œ๋‹ค.

ย ์™ธ๋ถ€์—์„œ์˜ ์ ‘๊ทผ

๋„ค์ž„์ŠคํŽ˜์ด์Šค๋Š” ๋‚ด๋ถ€ ์‚ฌ์„ค๋ง์— ์žˆ์œผ๋‹ˆ ๋‹ค๋ฅธ LAN ํ˜ธ์ŠคํŠธ๋Š” ์›๋ž˜ ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค
1.
๋‹ค๋ฅธ ํ˜ธ์ŠคํŠธ์—๊ฒŒ ๋‚ด๋ถ€๋ง ์•Œ๋ ค์ฃผ๊ธฐ
๋‹ค๋ฅธ LAN ํ˜ธ์ŠคํŠธ(์˜ˆ: 192.168.1.3)๊ฐ€ 192.168.15.0/24๋กœ ๊ฐ€๋Š” ๊ธธ์€ 192.168.1.2(ํ˜ธ์ŠคํŠธ)๋ผ๊ณ  ๋ผ์šฐํŒ…์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.
โ†’ ํ˜„์‹ค์ ์œผ๋กœ ๊ด€๋ฆฌ ๋ถ€๋‹ด ๋ฐ ๋ณด์•ˆ ์ด์Šˆ๋กœ ์ธํ•ด ๊ถŒ์žฅ๋˜์ง€ ์•Š๋Š”๋‹ค
2.
ํฌํŠธ ํฌ์›Œ๋”ฉ์œผ๋กœ ์„œ๋น„์Šค๋งŒ ๋…ธ์ถœ
์˜ˆ: blue ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ 192.168.15.2:80์—์„œ ์›น ์„œ๋น„์Šค๋ฅผ ๋„์šด๋‹ค๋ฉด
ํ˜ธ์ŠคํŠธ์˜ :80์œผ๋กœ ๋“ค์–ด์˜ค๋Š” ํŠธ๋ž˜ํ”ฝ์„ blue๋กœ ์ „๋‹ฌ:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 \ -j DNAT --to-destination 192.168.15.2:80
Bash
๋ณต์‚ฌ
๋ณดํ†ต ์ด ๋ฐฉ์‹์ด โ€œ์ปจํ…Œ์ด๋„ˆ ํฌํŠธ ๋…ธ์ถœโ€๊ณผ ๊ฐ™์€ ๋ชจ๋ธ๋กœ ์ด์–ด์ง„๋‹ค.
๋‹ค์Œ ๊ฒŒ์‹œ๋ฌผ