Net.ipv4.ip forward
이 서버가 IP 패킷을 다른 네트워크로 전달(forwarding)할 수 있는지 결정. 활성화(1)하면 라우터처럼 패킷 포워딩 가능하다. 기본값(0)은 자신에게 온 패킷만 처리 한다.
리눅스 서버를 라우터로 사용하는 방법
리눅스 서버에서 4개의 이더넷 포트로 다이렉트 통신을 설정하려면 다음과 같은 단계를 따를 수 있습니다. 이러한 구성은 서버가 여러 네트워크를 다루거나 특수한 네트워크 요구 사항을 충족해야 하는 경우에 유용할 수 있습니다.
먼저, 서버에 연결된 네트워크 인터페이스를 확인합니다. 이를 위해 ifconfig 명령을 사용할 수 있습니다.
인터페이스 목록과 각 인터페이스의 이름 (예: eth0, eth1, eth2, eth3)을 확인합니다.
이제 각 이더넷 인터페이스를 활성화합니다. 예를 들어, 각각의 이더넷 인터페이스를 활성화하려면 다음과 같이 실행합니다.
위 명령은 각각의 인터페이스를 활성화합니다.
다이렉트 통신을 위해 각 인터페이스에 고유한 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 파일을 수정하여 다음 라인을 추가합니다.
그리고 변경사항을 적용합니다.
Kubernetes에서 왜 필요한가?
- Kubernetes 노드는 여러 Pod 간, Pod와 외부 간 트래픽을 중계해야 함
- 컨테이너 네트워크는 호스트를 거쳐서 통신함
- 이 설정 없이는 Pod가 외부와 통신 불가
실제 동작 예시
설정 안하면 생기는 문제
- Pod가 외부 네트워크 접근 불가
- Pod 간 크로스 노드 통신 불가
- NAT가 작동 안 함
See also
- Sysctl
- Computer Network
- NAT
- Router
- net.bridge.bridge-nf-call-ip6tables
- net.bridge.bridge-nf-call-iptables
- net.ipv4.ip_forward
- Kubernetes