Skip to content

Net.ipv4.ip forward

이 서버가 IP 패킷을 다른 네트워크로 전달(forwarding)할 수 있는지 결정. 활성화(1)하면 라우터처럼 패킷 포워딩 가능하다. 기본값(0)은 자신에게 온 패킷만 처리 한다.

리눅스 서버를 라우터로 사용하는 방법

리눅스 서버에서 4개의 이더넷 포트로 다이렉트 통신을 설정하려면 다음과 같은 단계를 따를 수 있습니다. 이러한 구성은 서버가 여러 네트워크를 다루거나 특수한 네트워크 요구 사항을 충족해야 하는 경우에 유용할 수 있습니다.

먼저, 서버에 연결된 네트워크 인터페이스를 확인합니다. 이를 위해 ifconfig 명령을 사용할 수 있습니다.

ifconfig

인터페이스 목록과 각 인터페이스의 이름 (예: eth0, eth1, eth2, eth3)을 확인합니다.

이제 각 이더넷 인터페이스를 활성화합니다. 예를 들어, 각각의 이더넷 인터페이스를 활성화하려면 다음과 같이 실행합니다.

sudo ifconfig eth0 up
sudo ifconfig eth1 up
sudo ifconfig eth2 up
sudo ifconfig eth3 up

위 명령은 각각의 인터페이스를 활성화합니다.

다이렉트 통신을 위해 각 인터페이스에 고유한 IP 주소를 할당합니다. 이러한 주소는 서로 다른 서브넷에 속해야 합니다. 예를 들어:

sudo ifconfig eth0 192.168.1.1 netmask 255.255.255.0
sudo ifconfig eth1 192.168.2.1 netmask 255.255.255.0
sudo ifconfig eth2 192.168.3.1 netmask 255.255.255.0
sudo ifconfig eth3 192.168.4.1 netmask 255.255.255.0

위 명령은 각각의 인터페이스에 IP 주소를 할당합니다.

서로 다른 서브넷에 속한 인터페이스 간 통신을 가능하게 하려면 라우팅을 설정해야 합니다. 이를 위해 패키지 전달을 활성화하고 IP 포워딩을 활성화합니다. /etc/sysctl.conf 파일을 수정하여 다음 라인을 추가합니다.

net.ipv4.ip_forward=1

그리고 변경사항을 적용합니다.

sudo sysctl -p

Kubernetes에서 왜 필요한가?

  • Kubernetes 노드는 여러 Pod 간, Pod와 외부 간 트래픽을 중계해야 함
  • 컨테이너 네트워크는 호스트를 거쳐서 통신함
  • 이 설정 없이는 Pod가 외부와 통신 불가

실제 동작 예시

인터넷 <--> [K8s Node (라우터 역할)] <--> Pod 네트워크
            ip_forward=1이 필요한 지점

설정 안하면 생기는 문제

  • Pod가 외부 네트워크 접근 불가
  • Pod 간 크로스 노드 통신 불가
  • NAT가 작동 안 함

See also

Favorite site