我在用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 的模块,但在这种情况下它们也可能对您有所帮助。我还没有研究过它们,但可能有人研究过。
希望这能给你一些见解