질문
'redirect'
한 포트에서 다른 포트로의 트래픽을 원합니다 . 하지만 해당 포트를 통해 통신할 때 사용되는 INPUT
AND 바이트 수를 계산할 수 있어야 합니다.OUTPUT
반쯤 이해됨
iptables -t nat -A PREROUTING -p udp --dport 50000 -j REDIRECT --to-port 3478
솔루션은 모든 트래픽을 여기에 있는 모든 항목 50000
으로 리디렉션하는데 문제가 없지만 포트를 통과하는 트래픽 3478
은 셀 수 없습니다 . 이것은 중요한 질문입니다.INPUT & OUTPUT
50000
현재 설정
firewall-cmd --zone=public --add-port=50000/udp;
iptables -I INPUT -p udp --dport 50000;
iptables -I OUTPUT -p udp --sport 50000;
INPUT
이 설정을 사용하여 얼마나 많은 AND 데이터가 사용되는지 계산 OUTPUT
하지만 이는 가 아닌 경우에만 작동합니다 'redirected'
.
흐름?
Packet -> 50000(adds bytes to INPUT) -> 3478;
Packet <- 50000(adds bytes to OUTPUT) <- 3478
더 좋은 방법이 있다면 iptables
제안을 받겠습니다.
답변1
다음이 필요합니다.
# Tag UDP packets of the "connection" with mark 50000
iptables -t mangle -A PREROUTING -p udp --dport 50000 -j CONNMARK --set-mark 50000
# Make the port redirection
iptables -t nat -A PREROUTING -p udp --dport 50000 -j REDIRECT --to-port 3478
# Count the bytes with mark 50000
iptables -m connmark -t mangle -A OUTPUT -p udp --sport 3478 --mark 50000
iptables -t mangle -nvL
그러면 다음이 표시됩니다:
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
4 132 CONNMARK udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:50000 CONNMARK set 0xc350
...
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
2 66 udp -- * * 0.0.0.0/0 0.0.0.0/0 connmark match 0xc350 udp spt:3478
설명하다:
- 실제 패킷에 UDP 소스 포트 50000 네트워크 캡처가 표시 되더라도
-j REDIRECT
포트 50000의 연결을 위해 나가는 모든 패킷은 일치--sport 3478
하지만 일치하지 않기 때문에 포트 50000에서 나가는 패킷을 일치시키는 규칙을 만들 수 없습니다.--sport 50000
이것이 버그인지 예상된 동작인지 모르겠습니다(iptables 1.8.2(nf_tables)로 테스트) - 이 문제를 해결하기 위해 우리는 다음을 사용할 수 있습니다.
CONNMARK
표적PREROUTING 측에서 임의의 32비트 정수로 연결의 모든 패킷에 태그를 지정한 다음 동일한 태그를 다음과 결합합니다.코맥 모듈출력측에.