我想设置一些Linux服务到非标准端口 – 什么是最高的有效端口号?
(2 ^ 16)-1或0-65,535(-1是因为端口0被保留且不可用)。 (编辑是因为o_O Tync提醒我,我们不能使用端口0,史蒂夫·福利提醒我,你问的是最高端口,而不是端口数量)
但是你可能会用错误的方式来解决这个问题。 有人争论和反对非标准的港口。 我说他们是不相干的,除了最偶然的扫描仪,最随意的扫描仪可以通过使用最新的软件和适当的防火墙技术,以及强密码保持在海湾。 换句话说,安全最佳实践。
1-65535可用,范围1-1023中的端口是特权端口:应用程序需要以root用户身份运行才能监听这些端口。
尽pipe1-65535是合法的TCP端口,1-1023是真正的端口服务。 如果在临时端口build立后启动,您可能会遇到随机问题。 对于那些可能不知道的人来说,短暂的端口是那些在本地连接远程端点的东西(或者其他的东西)。 所以如果你编写一个在端口20001上侦听的TCP服务,你今天可能会很好,明天也可能会很好。 但有一天你的服务可能会启动,并试图绑定到20001,它会失败,因为它被视为一个短暂的端口。 有一个解决scheme。 您必须让您的pipe理员(或您自己)在您的服务器上更改系统临时端口范围策略。 在Linux系统上,分两步完成:
这两个步骤必须采取,你打算重新启动无用,在这种情况下,dynamic步骤是不需要的。 要将范围设置为40000到65535,请执行以下操作:
dynamic
echo 40000 65535 > /proc/sys/net/ipv4/ip_local_port_range
要么
sysctl -w net.ipv4.ip_local_port_range="40000 65535"
常驻
将以下内容添加到/etc/sysctl.conf中:
net.ipv4.ip_local_port_range = 40000 65535
要阅读当前设置或确认更改:
/sbin/sysctl net.ipv4.ip_local_port_range
输出将是这样的:
net.ipv4.ip_local_port_range = 9000 65500
确保你了解你的服务器的目的。 减less范围可能会导致其他问题。
快乐编码! (或者你做的任何事情)