在iptables中,目标DNAT和REDIRECT有什么区别?

Cla*_*are 4 networking iptables port-forwarding

更具体地说,是

-A PREROUTING -i $INT -p $PROTO --dport $PORT -j REDIRECT --to-ports $NEWPORT
Run Code Online (Sandbox Code Playgroud)

相当于其中之一或两者?

-A PREROUTING -i $INT -p $PROTO --dport $PORT -j DNAT --to-destination :$NEWPORT
-A PREROUTING -i $INT -p $PROTO --dport $PORT -j DNAT --to-destination $IP_OF_INT:$NEWPORT
Run Code Online (Sandbox Code Playgroud)

svq*_*svq 5

根据 netfilter 文档,重定向是目标 NAT 的特例。REDIRECT相当于对DNAT传入接口做。

Linux 2.4 NAT HOWTO——目标NAT

所以这意味着第一个和第二个字符串是等效的。

-A PREROUTING -i $INT -p $PROTO --dport $PORT -j REDIRECT --to-ports $NEWPORT
-A PREROUTING -i $INT -p $PROTO --dport $PORT -j DNAT --to-destination :$NEWPORT
Run Code Online (Sandbox Code Playgroud)

字符串:

-A PREROUTING -i $INT -p $PROTO --dport $PORT -j DNAT --to-destination $IP_OF_INT:$NEWPORT
Run Code Online (Sandbox Code Playgroud)

$IP_OF_INT- 是传入接口上的 IP 地址(的 IP $INT时才执行相同的工作。