서로 다른 네트워크 대역에 있는 장치들이 중간 장치를 거쳐 통신하게 하는 기능이 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를 거쳐 문제없이 통신합니다.
정리
포워딩의 핵심은 두 가지예요. 경유 장치에서 포워딩을 켜고, 양 끝에서 그 장치를 향하는 경로를 추가하는 것. 방화벽이 중간에 있다면 해당 트래픽을 허용해줘야 한다는 점도 잊지 마세요. 라우터 없이 리눅스 머신 하나로 네트워크를 이어붙일 수 있어서, 테스트 환경 구성에 요긴합니다.