리눅스 IP 포워딩과 라우팅

서로 다른 네트워크 대역에 있는 장치들이 중간 장치를 거쳐 통신하게 하는 기능이 IP 포워딩입니다. 들어온 패킷을 다른 네트워크로 전달해주는 거죠. 리눅스는 보안상 기본적으로 이 기능이 꺼져 있습니다.

예제 구성

머신 3대가 이렇게 연결돼 있다고 해볼게요.

  • 머신1: 192.168.26.129 (VMNET4)
  • 머신2: 192.168.26.128 (VMNET4) + 192.168.136.129 (VMNET5)
  • 머신3: 192.168.136.128 (VMNET5)

머신1과 머신3은 대역이 달라 직접 통신이 안 됩니다. 하지만 두 대역에 모두 발을 걸친 머신2를 경유하면 통신할 수 있어요. 그래서 머신2에서 포워딩을 켭니다.

1. 머신2에서 IP 포워딩 활성화

일시적으로 켜려면:

sysctl -w net.ipv4.ip_forward=1

재부팅 후에도 유지하려면 설정 파일에 넣습니다.

# /etc/sysctl.conf 에 추가
net.ipv4.ip_forward = 1

sysctl -p    # 변경사항 적용

2. 양 끝 머신에 라우팅 규칙 추가

각 머신에게 “저 대역으로 가려면 머신2를 거쳐라”라고 알려줍니다.

# 머신1: 136 대역으로 가려면 머신2(26.128)를 경유
ip route add 192.168.136.0/24 via 192.168.26.128

# 머신3: 26 대역으로 가려면 머신2(136.129)를 경유
ip route add 192.168.26.0/24 via 192.168.136.129

이제 머신1과 머신3이 머신2를 거쳐 문제없이 통신합니다.

정리

포워딩의 핵심은 두 가지예요. 경유 장치에서 포워딩을 켜고, 양 끝에서 그 장치를 향하는 경로를 추가하는 것. 방화벽이 중간에 있다면 해당 트래픽을 허용해줘야 한다는 점도 잊지 마세요. 라우터 없이 리눅스 머신 하나로 네트워크를 이어붙일 수 있어서, 테스트 환경 구성에 요긴합니다.