현재 다음 설정(모든 주소는 로 시작함 192.168.
)을 사용하여 하드웨어 장치(DUT - Device Under Test)의 라우팅 성능을 테스트하고 있습니다.
eth0 (29.2) <---> eth1 (29.1) eth2 (30.1) <---> eth0 (30.2)
HOST1 |~~~~~~~~~DUT~~~~~~~~~~| HOST2
Iperf
이 설정에서는 잘 작동합니다.
그러나 HOST1에 사용 가능한 다른 이더넷 카드가 있으므로 HOST2를 제거하고 싶습니다. 이것이 내가 달성하고 싶은 것입니다:
eth0 (29.2) <---> eth1 (29.1) eth2 (30.1) <---> eth1 (30.2)
HOST1 |~~~~~~~~~DUT~~~~~~~~~~| HOST1
eth0에서 eth1까지의 패킷이 내부적으로 커널을 통과하는 대신 DUT를 통과하도록 HOST1에서 Linux 라우팅을 구성하려면 어떻게 해야 합니까?
저는 3.0 커널로 데비안을 실행하고 있습니다. iproute2 버전은 ss110629
.
답변1
snat/dnat와 결합된 라우팅이 효과적입니다. 여기서의 기본 아이디어는 HOST1의 각 장치에 두 번째 서브넷의 두 번째 "가상" IP 주소를 할당하는 것입니다. 가상 주소는 호스트1을 떠나거나 들어가기 전/후에 실제 주소로 변환됩니다. 다음 설정을 사용하고 iperf 트래픽을 192.168.9.2 또는 192.168.10.2로 지정합니다(원하는 트래픽 방향에 따라 다름).
IP 주소 할당
호스트 1
eth0 192.168.29.2/24 (이 장치의 "가상" 주소는 192.168.9.2입니다)
eth1 192.168.30.2/24 (이 장치의 "가상" 주소는 192.168.10.2입니다)
테스트 중인 장치
- 이더넷 1 192.168.29.2/24
- 이더리움 2 192.168.30.2/24
정적 라우팅
호스트 1
- 192.168.10.2/24 경유 192.168.29.1
- 192.168.30.1을 통한 192.168.9.2/24
테스트 중인 장치
- 192.168.9.2/24(192.168.29.2 경유)
- 192.168.10.3/24 경유 192.168.30.2
HOST1의 iptables 규칙
후면 배선
- 192.168.9.2에서 192.168.10.2로 전송된 SNAT 패킷
- 192.168.10.2에서 192.168.9.2로 전송된 SNAT 패킷
사전 라우팅
- 192.168.9.2에서 192.168.29.2로 전송된 DNAT 패킷
- 192.168.10.2에서 192.168.30.2로 전송된 DNAT 패킷