스위칭, 라우팅, 게이트웨이, IP 포워딩
스위칭 (같은 네트워크 내 통신)
개념
- 같은 네트워크 내에서 서로 다른 두 시스템이 서로 통신하려면
- 물리적 또는 가상 네트워크 인터페이스가 필요
- 같은 네트워크 대역(IP 대역)에 있어야 함
- 스위치(Switch)를 통해 연결 됨
- 즉, 이러한 같은 네트워크 내에서의 통신을 '스위칭(Switching)'이라고 한다.
예시

- 위 그림을 예시로 들어보자.
- 주소가 192.168.1.0이라는 네트워크라고 가정하자.
- 장치A는 스위치의 eth0 네트워크 인터페이스에 연결되어있다. (
ip link- 인터페이스 확인) - 장치B는 스위치의 eth0 네트워크 인터페이스에 연결되어있다. (리눅스 시스템이 아니라 스위치 장비이기 때문에, 다른 네트워크 인터페이스(예: eth1)에 연결되어있어도 상관 없다)
- 장치A에서
ip addr add 192.168.1.10/24 dev eth0명령어로 정적 ip를 설정한다./24의 의미 - 현재 명령어를 입력하는 시스템의 대역은 192.168.1.0 ~ 192.168.1.255 임을 의미dev- 네트워크를 설정할 때 사용하는 명령어로 device의 약자
- 장치B에서
ip addr add 192.168.1.11/24 dev eth0명령어로 정적 ip를 설정한다.
정보
가정에서 공유기에 랜선만 꽂으면 위와 같은 과정 없이 연결 되던데? -> 가정용 공유기에는 DHCP 서버가 있어서 자동으로 동적 IP를 할당하기 때문
라우팅 (다른 네트워크 간 통신)
개념
- 다른 네트워크에서 통신하려면
- 라우터(Router)가 필요하다.
- 라우터는 여러 네트워크에 연결된 장치이다.
- 라우터는 각 네트워크에 하나씩 IP를 가진다.
- 장치에서 다른 네트워크로 가기위한 (라우터로의) 규칙(Route)을 설정해주어야한다.
- 즉, 이렇게 다른 네트워크간에 통신을 하기위한 규칙을 안내하는 과정을 라우팅(Routing)이라고 한다.
예시

- 위 그림을 예시로 들어보자.
- 네트워크A(192.168.1.0/24)에서의 라우터 주소는 192.168.1.1로 가정하자.
- 네트워크B(192.168.2.0/24)에서의 라우터 주소는 192.168.2.1로 가정하자.
- 장비B에서 장비C로 통신하려면 어떻게 해야할까
- 장비B와 장비C는 다른 네트워크이기 때문에 '장비B에서 장비C로 가려면 어떻게 가세요!' 라는 규칙을 알려줘야한다. (반대도 마찬가지)
- 이에 장비B의 시스템의 라우팅 테이블에 해당 규칙을 작성해야한다. (반대도 마찬가지)
ip route add 192.168.2.0/24 via 192.168.1.1명령어를 입력해줘야한다.- 네트워크B(192.168.2.0/24)로 가려면 라우터(192.168.1.1)을 통해서 가야합니다. 라는 뜻 (반대도 마찬가지)
- 이러한 라우팅 테이블을 보려면
route명령어를 입력하면 된다.
정보
그냥 연결만 하면 되는거 아닌가? 라우팅 테이블 수동으로 작성해야하나? -> 위 과정은 '정적 라우팅'과정이다. (수동으로 설정) -> 일반적으로는 Hop의 갯수를 카운팅 하는 등의 방식을 주요 기준으로하는 RIP, 네트워크 상태를 기준으로하는 OSPF 등의 프로토콜로 '동적 라우팅'이 진행된다. (자동으로 설정)
게이트웨이(Gateway)
개념
- 이전 라우팅 과정에서 적용되는 용어가 게이트웨이이다.
- 라우팅 과정에서
ip route add 192.168.2.0/24 via 192.168.1.1명령어를 입력했었다. - 여기서
192.168.1.1이 '게이트웨이'이다. - 즉, 현재 네트워크 밖으로 나가려면 어디로 가야하는가?
- 에 대한 '규칙'이 라우트(route)이라면
- '목적지(통로)'는 게이트웨이이다.
Default Gateway

- 그런데, 인터넷에는 수많은 네트워크가 존재한다.
- 모든 네트워크에 대한 라우트를 추가하는 것은 비현실적이다.
- 이에, Default Gateway를 라우팅 테이블에 추가한다.
- 즉, 알 수 없는 모든 목적지 트래픽은 Default Gateway로 보낸다.
ip route add default via 192.168.1.1
# 혹은
ip route add 0.0.0.0/0 via 192.168.1.1
Linux를 Router로 사용하기 (IP Forwarding)
예시

- 위 그림 예시를 보자.
- 장치 B는 Linux 시스템이다.
- 장치 A와 장치 B가 연결되어있다. (네트워크 192.168.1.0, 장치B의 네트워크인터페이스 eth0)
- 장치 B와 장치 C가 연결되어있다. (네트워크 192.168.2.0, 장치B의 네트워크인터페이스 eth1)
- 라우팅 규칙은 정상적으로 설정되어있다.
- 그런데, 장치 A에서 장치 C로의 통신이 되지 않는다.
- 왜냐하면, Linux 시스템에서는 기본적으로 다른 네트워크 인터페이스로 패킷을 넘겨주는 'IP Forwarding'이 비활성화 되어있기 때문이다.
활성 방법
현재 상태 확인
cat /proc/sys/net/ipv4/ip_forward
# 0이면 비활성화
임시 활성화 (째부팅 시 초기화)
echo 1 > /proc/sys/net/ipv4/ip_forward
영구 설정
vi /etc/sysctl.conf
net.ipv4.ip_forward=1 # 이 내용 주석이 되어있음, 주석 해제
sysctl --system # 적용
레퍼런스
- Udemy - Certified Kubernetes Administrator (CKA) with Practice Tests (Mumshad)