我正在用C开发一个服务器,它绑定在一个随机端口上。
我担心所选的随机端口可能与iptables规则相冲突。我的意思是,如果选择的端口已经存在于iptables中,作为一个用于措辞的端口。
如何用C来检查iptables规则中是否不存在选择的端口?
发布于 2016-03-11 13:07:04
如果您的服务器正在使用已经分配了官方端口号的标准协议,那么您应该使用官方端口号。
如果服务器使用的是非标准协议而没有官方端口号,则应该使用49152-65535范围内的端口号,该范围是指定的:动态端口和/或专用端口。
IANA没有指定哪些数字用于动态分配,哪些用于本地定义的服务。不管你的操作系统是什么。在Linux的情况下,动态分配给向外连接的客户端的任何端口号都将从/proc/sys/net/ipv4/ip_local_port_range中指定的范围内取出。
默认情况下,这个范围是32768 61000,因此您需要避免该范围内或以下的任何内容。端口号在61000以上应该是安全的使用。
通常,您需要配置中的静态端口号,以便需要从外部与其联系的任何人都知道要联系哪个端口号。但是,您可以从范围中选择一个随机数,并将其放入配置文件中,以使其在需要使用从同一范围选择端口号的另一个服务时,不太可能通过端口扫描找到,或者导致冲突。
我通常使用这个命令为任何本地定义的服务选择一个端口号:
echo $[61002+RANDOM%4532]发布于 2016-03-10 16:24:33
检查http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml并选择一个使用不多的端口。(最好超过1024人)
只需像其他linux一样,创建并读取一个.conf来配置端口,以防用户想要更改它。
https://serverfault.com/questions/762841
复制相似问题