
저는 kerenl 3.14.18을 실행하고 있으며 --static-enable --disable-shared 옵션으로 구축된 iptables 1.4.21을 사용하고 있습니다. 이 명령을 실행하면: /sbin/iptables -A PREROUTING -m -d 127.3.0.2/24 -j DNAT --to-destination 10.0.0.1 -p udp -dport 69 이 오류 메시지가 나타납니다: iptables v1.4.21: '-d' 일치 항목을 로드할 수 없습니다. 해당 파일이나 디렉터리가 없습니다.
내가 무엇을 놓치고 있는지 설명하는 데 도움을 줄 수 있나요? 미리 감사드립니다.
답변1
안녕하세요, 저는 eth0과 eth1이라는 2개의 인터페이스를 가진 호스트 시스템을 가지고 있습니다. eth0은 IP가 127.3.xx인 패킷을 수신합니다. 이 패킷을 eth1에서 서버(10.0.1)로 전달하고 싶습니다. eth1의 IP는 192.168.0.100입니다. 서버는 패킷이 호스트(192.168.0.100)에서 오는 것처럼 보아야 합니다. -m 플래그를 제거할 수 있다고 생각하는데 그렇게 하면 다음 오류가 발생합니다: iptables v1.4.21: 여러 -d 플래그는 허용되지 않습니다.
이를 달성하려면 다음과 같은 iptables 규칙을 사용합니다.
iptables -t nat -A PREROUTING -d 127.3.0.2/24 -p udp --dport 69 -j DNAT --to-destination 10.0.0.1 iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 192.168.0.100
하지만 127.3.0.2/24를 단일 IP(예: 127.3.0.2) 또는 유효한 CIDR 범위(예: 127.3.0.0/24)로 바꿔야 합니다. /24는 127.3.0.0-127.3.0.254를 포괄하므로 127.3.0.2/24는 유효한 CIDR 범위가 아닙니다. 또한 해당 범위에 있는 모든 IP로의 모든 트래픽을 10.0.0.1의 포트 69로 리디렉션합니다.
또한 포트 69는 TFTP이므로 언급할 의무가 있다고 생각합니다. PXE 부팅이나 기타 DHCP 기반 솔루션에 이 포트를 사용하려는 경우 대부분의 공급업체가 PXE를 사용하여 서브넷을 통과하는 데 문제가 있기 때문에 작동하지 않을 가능성이 높습니다. .