다음과 같이 Debian/Linux 4.1을 실행하는 라우터가 있습니다.
- eth0:192.168.1.1은 LAN에 연결되어 유선 클라이언트에 대해 DHCPd를 실행합니다.
- wan0: 1.2.3.4 인터넷에 연결
- wan1: 5.6.7.8 인터넷에 연결
LAN에서 호스트 H, 포트 P로의 UDP 트래픽을 복사하여 NAT를 통해 출력하고 싶습니다.둘 다wan0 및 wan1.
예를 들어, 올바른 대상 호스트/포트를 사용하여 192.168.1.2에서 패킷을 라우팅하면 다음과 같은 결과가 발생합니다.둘NAT 패킷 - 하나는 wan0을 통해, 다른 하나는 wan1을 통해 출력되며 둘 다 동일한 대상 호스트와 포트를 사용합니다.
(요구 사항은 특정 유형의 UDP 트래픽이 두 인터페이스를 통해 전송되어야 하며 대역폭을 희생하여 대기 시간을 최소화해야 한다는 것입니다. 문제의 UDP 프로토콜은 멱등성이 있으므로 다른 라우터 주소에서 NAT 중복 패킷을 행복하게 수신합니다.)
커널 4.1/iptables를 사용하여 이 작업을 어떻게 수행합니까? (이미 최신 커널과 nftables에 대한 솔루션이 있습니다.)
답변1
iptables TEE 대상을 확인하세요. 주로 로깅이나 IDS 목적으로 트래픽을 별도의 대상으로 복사하도록 설계되었지만 원하는 작업도 수행할 수 있어야 합니다. 데비안에는 기본적으로 이 모듈이 포함되어 있으므로 추가 소프트웨어가 필요하지 않습니다.
답변2
네트워크 네임스페이스가 있는 tee 대상을 사용하면 이 문제를 해결할 수 있다고 생각합니다.
- WAN 인터페이스 중 하나를 자체 네트워크 네임스페이스에 배치
- VETH 쌍을 사용하여 네트워크 네임스페이스를 연결합니다.
- 기본 네트워크 네임스페이스에서 TEE 대상을 사용하여 트래픽 복사본을 보조 네트워크 네임스페이스로 보냅니다.
- 두 번째 네트워크 네임스페이스에서 TEEd 트래픽을 위장합니다.
TEE가 두 번째 복제본의 대상 IP를 변경하는지 아니면 다음 홉만 변경하는지가 문서에서 명확하지 않습니다. 대상 IP가 변경되면 두 번째 네트워크 네임스페이스에서 작업을 실행 취소해야 합니다.