ipfw nat 将使用什么端口范围作为别名?

ipfw nat 将使用什么端口范围作为别名?

我在用ipfw nat具有以下配置

ipfw -q nat 1 config if em0

NAT 将从哪些 TCP 和 UDP 范围中选择其别名端口?我希望它始终在 49152–65535 范围内,以便我可以执行以下操作:

add allow tcp from any to me 22
add allow tcp from any to me 80
add deny tcp from any to me 1-49151
add nat 1 tcp from any to me recv em0 established

ipfw支持这个容易吗?如果没有,有什么方法可以强制执行这种行为吗?

答案1

sysctl 的这些设置可能会对您有所帮助。

net.inet.ip.portrange.first=32768
net.inet.ip.portrange.last=49151
net.inet.ip.portrange.hifirst=49152
net.inet.ip.portrange.hilast=65535

但我不认为这是容易实现的,也不是强迫 ipfw 实现的。 ipfw 中有 src-port/dst-port 选项,但我认为它们不适合您的情况,并且通常适用于诸如 redirect_port 之类的东西.... natd(8) 和 divert( 4)套接字至少没有我所知道的这样的参数。 natd 有 -m 参数,这意味着保留端口,并有 -out_port -o 参数,但这些参数用于 divert(4) 套接字以及如何处理 ipfw 堆栈中的传出数据包。

可能有一些基于 netgraph 的模块,但在这种情况下它们也可能对您有所帮助。我还没有研究过它们,但可能有人研究过。

希望这能给你一些见解

相关内容