Study: ComputerScience(CS)/CS: Linux

[Linux] ๋ผ์šฐํŒ…(Routing) ์ด๋ž€? ๋ฆฌ๋ˆ…์Šค ๋ผ์šฐํŒ… ์„ค์ • (feat. route)

DrawingProcess 2022. 10. 7. 08:57
๋ฐ˜์‘ํ˜•
๐Ÿ’ก ๋ณธ ๋ฌธ์„œ๋Š” '๋ฆฌ๋ˆ…์Šค ๋ผ์šฐํŒ… ์„ค์ •'์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋†“์€ ๊ธ€์ž…๋‹ˆ๋‹ค.
์ด๋Š” ๋ผ์šฐํŒ…์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ณ  ๋ผ์šฐํŒ… ํ…Œ์ด๋ธ” ์„ค์ • ๋ฐ ํŠน์ • ๋ชฉ์ ์ง€๊นŒ์ง€ ๋ผ์šฐํŒ… ๊ฒฝ๋กœ๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•๊นŒ์ง€ ๋‹ค๋ค„์—ˆ์œผ๋‹ˆ ์ฐธ๊ณ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

1. ๋ผ์šฐํŒ… (Routing)์ด๋ž€?

๋ผ์šฐํŒ…์ด๋ž€? ํ•œ ๋„คํŠธ์›Œํฌ์—์„œ ๋‹ค๋ฅธ ๋„คํŠธ์›Œํฌ๋กœ ์ตœ์ ์˜ ๊ฒฝ๋กœ๋ฅผ ํƒ์ƒ‰ํ•˜์—ฌ ์ง€์ •ํ•œ ํ›„ ๋„คํŠธ์›Œํฌ ์•ˆ์˜ ํ˜ธ์ŠคํŠธ์—๊ฒŒ ํŒจํ‚ท๋“ค์„ ์ „๋‹ฌํ•˜๋Š” ๊ณผ์ •์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌ๋ˆ…์Šค ์‹œ์Šคํ…œ์€ ๋ฏธ๋ฆฌ ์„ค์ •๋˜์–ด ์žˆ๋Š” ๋ผ์šฐํŒ… ํ…Œ์ด๋ธ”์ด๋ผ๋Š” ์ง€๋„๋ฅผ ๋ณด๊ณ  ํŒจํ‚ท์„ ์–ด๋–ค ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฑฐ์ณ ๋ชฉ์ ์ง€๋กœ ๋ณด๋‚ผ์ง€ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

2. ๋ฆฌ๋ˆ…์Šค ๋ผ์šฐํŒ… ์„ค์ •

2.1 ๋ผ์šฐํŒ… ํ…Œ์ด๋ธ” ํ™•์ธ

route ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ํ˜„์žฌ ์‹œ์Šคํ…œ์— ์„ค์ •๋œ ๋ผ์šฐํŒ… ํ…Œ์ด๋ธ”์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 enp0s3
  • Destination: ๋ชฉ์ ์ง€
  • Gateway: ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ์™€ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๊ฒŒ์ดํŠธ์›จ์ด ์ฃผ์†Œ
  • Genmask: ๋ชฉ์ ์ง€ ๋„คํŠธ์›Œํฌ์˜ ๋„ท๋งˆ์Šคํฌ ์ฃผ์†Œ. "255.255.255.255"๋กœ ์ง€์ •๋˜์–ด ์žˆ์œผ๋ฉด ๋ชฉ์ ์ง€ ํ˜ธ์ŠคํŠธ์˜ ์ฃผ์†Œ, 0.0.0.0์œผ๋กœ ์ง€์ •๋˜์–ด ์žˆ์œผ๋ฉด ๊ธฐ๋ณธ ๊ฒŒ์ดํŠธ์›จ์ด ์ฃผ์†Œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
  • Flags: ํ•ด๋‹น ๊ฒฝ๋กœ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ๊ธฐํ˜ธ.
    • U(up): ์ด ๊ฒฝ๋กœ๊ฐ€ ์‚ด์•„์žˆ๋Š” ์ƒํƒœ
    • H(host): ๋ชฉ์ ์ง€๊ฐ€ ํ˜ธ์ŠคํŠธ ์ฃผ์†Œ๋ผ๋Š” ๋œป
    • G(gateway): ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ํ–ฅํ•˜๋Š” ๊ฒฝ๋กœ๋ฅผ ์˜๋ฏธ
  • Metric: ๋ชฉ์ ์ง€ ๋„คํŠธ์›Œํฌ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ
  • Ref: ๊ฒฝ๋กœ๋ฅผ ์ฐธ์กฐํ•œ ํšŸ์ˆ˜
  • Use: ๊ฒฝ๋กœ๋ฅผ ํƒ์ƒ‰ํ•œ ํšŸ์ˆ˜
  • Iface: ์‚ฌ์šฉํ•  ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค์ด๋ฉฐ, ifconfig๋ฅผ ํ†ตํ•ด ํ™•์ธ๊ฐ€๋Šฅ

์ด ์‹œ์Šคํ…œ์—์„œ๋Š” 192.168.1.1๋ถ€ํ„ฐ 192.168.1.254๊นŒ์ง€ ํ–ฅํ•˜๋Š” ํŒจํ‚ท์€ enp0s3 ์œผ๋กœ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ทธ ์™ธ์— ๋‹ค๋ฅธ ๊ณณ์œผ๋กœ๋Š” ํŒจํ‚ท์„ ์ „๋‹ฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

2.2 ๋ผ์šฐํŒ… ํ…Œ์ด๋ธ” ๋ณ€๊ฒฝ ๋ฐ ํ™•์ธ

2.2.1 ๊ธฐ๋ณธ gateway ์ถ”๊ฐ€ ๋ฐ ํ™•์ธ

์•„๋ž˜ ๋ช…๋ น์–ด๋กœ ๊ธฐ๋ณธ gateway IP๋ฅผ ์ถ”๊ฐ€ํ•ด๋ด…์‹œ๋‹ค.

$ sudo route add default gw 192.168.1.1

route ๋ช…๋ น์„ ํ†ตํ•ด ์ถ”๊ฐ€๋œ default gateway๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         _gateway        0.0.0.0         UG    0      0        0 enp0s3
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 enp0s3

route ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ํ™•์ธํ•˜๋ฉด IP๊ฐ’์ด "_gateway"์™€ ๊ฐ™์ด Domain Name์œผ๋กœ ์ถœ๋ ฅ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”๋ฐ, ๋ฆฌ๋ˆ…์Šค์—์„œ๋Š” "route -n" ๋ช…๋ น์–ด๋กœ IP์ฃผ์†Œ๋ฅผ ํ™•์ธ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. 

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 enp0s3
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 enp0s3

๋ฐ”๋€ ๋ผ์šฐํŒ… ํ…Œ์ด๋ธ”์„ ์‚ดํŽด๋ณด๋ฉด 192.168.1.0 ๋„คํŠธ์›Œํฌ๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ๋„คํŠธ์›Œํฌ๋กœ ๋‚˜๊ฐ€๋Š” ํŒจํ‚ท์€ ๋ชจ๋‘ default๋กœ ์ง€์ •๋˜์–ด ์žˆ๋Š” 192.168.1.1๋กœ enp0s3 ์„ ํ†ตํ•ด ๋ณด๋‚ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

2.2.1 ๋ผ์šฐํŒ… ์ •๋ณด ์ถ”๊ฐ€ ๋ฐ ํ™•์ธ

123.45.123.0, 234.56.234.0 ์œผ๋กœ ํŒจํ‚ท์„ ๋ณด๋‚ผ๋•Œ๋Š” 192.168.1.1 gw๋กœ ๋ณด๋‚ด์•ผ ๋œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค.

$ sudo route -n add -net 123.45.123.0 netmask 255.255.255.0 gw 192.168.1.1
$ sudo route -n add -net 234.56.234.0 netmask 255.255.255.0 gw 192.168.1.1

 

๋ผ์šฐํŒ… ํ…Œ์ด๋ธ”์„ ๋‹ค์‹œ ์กฐํšŒํ•ด ๋ณด์•˜์„๋•Œ ์•„๋ž˜์™€ ๊ฐ™์ด ์ถ”๊ฐ€๋œ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 enp0s3
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 enp0s3
123.45.123.0    192.168.1.1     255.255.255.0   UG    0      0        0 enp0s3
234.56.234.0    192.168.1.1     255.255.255.0   UG    0      0        0 enp0s3

2.3 ๋ผ์šฐํŒ… ๊ฒฝ๋กœ ์ถ”์  (feat. traceroute)

traceroute๋Š” ๋ผ์šฐํŒ… ํ…Œ์ด๋ธ” ์„ค์ • ํ›„ ๋ชฉ์ ์ง€๊นŒ์ง€ ์ •์ƒ์ ์œผ๋กœ ํŒจํ‚ท์ด ์ „์†ก๋˜๋Š”์ง€ ๋„คํŠธ์›Œํฌ ๊ฒฝ๋กœ๋ฅผ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด๋กœ ์‹ค๋ฌด์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

$ traceroute 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 64 hops max, 52 byte packets
192.168.45.1 (192.168.45.1)  12.223 ms  3.673 ms  3.571 ms
...

 

์ฐธ๊ณ 

๋ฐ˜์‘ํ˜•