IT/CKA

CKA 준비과정 - Networking (1) / 스위칭, 라우팅

Primes 2023. 7. 8. 15:51
728x90

쿠버네티스의 Networking 구조를 알아보기 전, 리눅스에서의 네트워킹에 대해 학습한다.

 

Switching, Routing, Gateway 와 같은 네트워크 개념과 DNS 등에 대해 빠르게 짚고 넘어간다.

위와 같은 상황에서, A와 B에게 트래픽을 보내기 위해서는 어떤 과정을 거쳐야 하는지 알아본다.

 

1. A와 B가 연결되기 위해 스위치는 두 시스템을 포함하는 네트워크를 생성한다.

2. A와 B는 각각 연결하기 위한 인터페이스를 생성한다. ip link 명령어를 통해 인터페이스 확인 (eth0)

3. 인터페이스에 IP 주소를 할당한다. (ip addr)

4. 스위치를 통해 생성된 네트워크의 정보를 가지고 통신을 시작한다.

 

이것은 두 호스트 간에 통신할때의 케이스로, 네트워크 간 통신을 할 때를 알아보자.

네트워크 간 통신할 때는 "Gateway" 를 사용한다.

사진과 같이 다른 네트워크 간의 호스트들은 게이트웨이를 통해 통신하게 된다.

B와 C가 통신을 원할 때, 스위치의 네트워크 트래픽은 라우터를 통해 이동한다.

 

라우터는 두 스위치 네트워크를 연결한다.

두 네트워크를 연결하기 위해, 라우터는 스위치 네트워크의 IP주소를 가진다. (192.168.1.1 / 192.168.2.1)

라우터는 경로를 안내하는 장비이기 때문에, 경로가 등록되어 있지 않으면 통신할 수 없다.

따라서 ip route add 명령어를 통해 네트워크 경로를 설정해준다.

ip route add 192.168.2.0/24 via 192.168.1.1

A/B 호스트 네트워크에서 C/D 네트워크 대역폭인 192.168.2.0/24 를 등록하여 경로를 뚫는다.

 

route 명령어를 입력하면 경로가 설정됨을 확인할 수 있다. 위와 같은 작업은 반대쪽도 작업을 진행해주어야 양방향 통신이 가능해진다.

 

다만, 인터넷상에는 너무나 많은 호스트들이 존재하고 이들을 모두 위와같이 경로를 지정해줄 수는 없다. 따라서 Default Gateway 를 사용한다.

Default Gateway?

- 라우터가 목적지를 모를 때 사용하는 gateway

- 등록되어 있는 네트워크 외 다른 네트워크로부터의 요청은 default gateway를 통한다.

- 등록 시 default 명령어 또는 0.0.0.0 으로 설정하여 등록할 수 있다.

 

위의 C/D 네트워크 같은 상황에서 사설, 공인 네트워크를 분리하고 싶다면 아래와 같이 설정할 수 있다.

사설 네트워크를 192.168.2.2, 공인 네트워크에 대한 인터페이스를 192.168.2.1 로 부여한다. 위와 같이 설정하면 외부, 사설 네트워크를 분리하여 관리할 수 있다.

 

다음은 리눅스 호스트를 라우터로 활용하는 방법이다.

 

A-B, B-C 가 연결되어 있을 때, A-C 가 어떻게 통신할 수 있는지 알아본다. 그냥은 통신할 수 없다. 위에서 학습한 라우터와 같이 내부적으로 경로를 설정해줘야 통신이 가능하다. 여기서 B가 라우터 역할을 수행한다.

 

ip route add 192.168.2.0/24 via 192.168.1.6 : A에서 설정
ip route add 192.168.1.0/24 via 192.168.2.6 : C에서 설정

먼저 연결하고자 하는 호스트(A, C)에서 route 경로 설정이 필요하다.

하지만 위와같이 설정하여도 ping이 되지는 않는다. 이는 Linux 패킷 보안 설정 때문이다.

 

이유는, 라우터 역할을 하는 B에서 eth0 으로 받은 패킷은 eth1 으로 나갈 수 없기 때문이다.

OS 레벨에서 기본적으로 이것이 막혀있다. 이는 설정 파일에서 수정하여 통신이 가능하도록 할 수 있다.

/proc/sys/net/ipv4/ip_forward

위 경로의 파일에서 네트워크 간 설정을 수정할 수 있다.

0이면 통신을 할 수 없고, 1이면 허용한다. 따라서 1로 수정 후 ping을 시도하면 통신이 되는 것을 확인할 수 있다.

 

아래는 자주 사용되는 스위칭, 라우팅 관련 명령어이다. 기억해두는 것이 좋다.

ip link : 호스트의 인터페이스를 확인 및 수정

ip addr : 인터페이스에 IP 주소를 할당, 수정

ip addr add [IP 주소, 대역폭] dev [인터페이스] : 인터페이스에 IP 추소 추가, 명령어로 추가한 설정은 재부팅하면 사라진다. 영구 적용을 위해서는 /etc/network/interfaces 파일 수정하여 적용

ip route : 라우팅 테이블 확인

ip route add [IP 주소, 대역폭] via [IP 주소] : Gateway 추가

cat /proc/sys/net/ipv4/ip_forward : ip_forward 파일 값 확인, 0이 기본값이며 0이면 비허용

 

 

반응형