当发起通信时,操作系统会随机选择一个大于 1023 的端口号。只要它不与当时系统上使用的其他端口冲突。我想知道防火墙如何知道这个端口?或者防火墙规则应该始终允许来自内部 LAN 的任何端口?
谢谢。
答案1
当启动通信时,操作系统会随机选择一个大于 1023 的端口号。
操作系统会分配一个随机源端口,通常称为临时端口,超出保留端口范围。按照惯例,保留端口范围设置为前 1024 个端口,但这是可以调整的。至少在我最熟悉的 Linux 上是这样的。
此外,Linux 有一个可调整的内核,可以进一步控制从哪个端口范围中选择临时端口:sysctl net.ipv4.ip_local_port_range
。
Windows 具有类似的控制来管理临时端口范围,我想其他操作系统也一样。
我想知道防火墙是如何知道这个端口的?
但事实并非如此。
这就是为什么防火墙规则通常不包括源端口的原因。防火墙规则通常仅基于以下一个或多个:
- 源 IP 地址/范围
- 目标 IP 地址/范围
- 目标端口号
- 协议
仅当客户端不使用临时端口而是使用固定端口进行客户端-服务器连接时,在规则中使用源端口才有意义。(想到了 NTP。)