![dnat를 수행할 때 iptables의 대상 인터페이스를 언급할 수 있습니까?](https://linux55.com/image/174334/dnat%EB%A5%BC%20%EC%88%98%ED%96%89%ED%95%A0%20%EB%95%8C%20iptables%EC%9D%98%20%EB%8C%80%EC%83%81%20%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4%EB%A5%BC%20%EC%96%B8%EA%B8%89%ED%95%A0%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
아래와 같이 dnat에 iptables를 사용하려고 합니다.
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 9000 -j DNAT --to-destination 10.0.0.1:9000
output interface
iptables나 라우팅 테이블을 사용하는 것이 유일한 방법이라고 말할 수 있습니까 ?
답변1
Can't use -o with PREROUTING
이는 다음과 같은 이유로 명령이 지시()하기 때문에 불가능합니다 .
- DNAT는 이름에서 알 수 있듯이 nat/PREROUTING에서 발생합니다.앞으로라우팅 결정.
- 라우팅 결정 전에 라우팅 스택은 결정에 사용되지 않았습니다.무엇출력 인터페이스가 됩니다(호스트 자체가 아닌 경우 iptables의 필터에는 출력 인터페이스가 전혀 없습니다). 따라서 이 정보는 nat/PREROUTING에 사용할 수 없으며, 이것이 출력 인터페이스 지정이 허용되지 않는 이유입니다. 보유하지 않은 (메타)데이터를 일치시킬 수 없습니다.
이것은개략도작동 방식을 설명하세요.
라우팅 결정은 결코 다음에 의해 이루어지지 않습니다.웹 필터또는iptables, 그러나 라우팅 스택을 통해. 따라서 특정 라우팅을 위해서는 ip route
라우팅 스택(...)을 사용해야 합니다.때때로iptables 없이 이 작업을 수행할 수 없는 경우 iptables를 사용하여 패킷에 표시를 설정함으로써 라우팅 스택을 올바른 방향으로 푸시할 수 있습니다. 그러나 라우팅 부분이 까다로울 수 있습니다.
특정 요구 사항이 있는 경우 질문에 이러한 사항을 질문해야 합니다. 질문은 또한 설명해야 합니다.왜뿐만 아니라어떻게당신은 이것을 피하기 위해 이것을하고 싶습니다XY 문제.
답변2
넌 할 수 없을 것 같아
iptables -t nat -A PREROUTING -i eth0 -o eth0 -p tcp --dport 9000 -j DNAT --to-destination 10.0.0.1:9000
iptables v1.8.4 (nf_tables): Can't use -o with PREROUTING