Linux 服务器端口的基本信息

查看当前服务正在使用的端口状态,命令如下:

1
sudo netstat -tunlp

如图所示:

image

Linux 服务器端口 port 最大值可以设定为多少

端口号用来表示和区别网络中的不同应用程序。TCP/IP 协议中的端口在报头中占 2 个字节即 16 位,范围是从 0-65535。port 的最大值,可以达到 65535,即(2^16 - 1)。这个数字与操作系统无关,不管 linux 系统是 32 位还是 64 位,是由网络 tcp 协议决定的,tcp 协议头部中的 16 位表示端口号,这就决定了其最大值为 65535。

端口按端口号可以分为 3 大类:

  1. 公认端口(Well Known Ports)端口号从 0 到 1023。这些端口由 IANA 分配管理。IANA 把这些端口分配给最重要的一些应用程序,让所有的用户都知道,当一种新的应用程序出现后,IANA 必须为它指派一个公认端口。一般为系统服务所使用,如 FTP 服务对应的端口号为 21。
  2. 注册端口(Registered Ports)端口号从 1024 到 49151。 这些端口是公司和其他用户向互联网名称与数字地址分配机构(ICANN)登记的端口号,利用因特网的传输控制协议(TCP)和用户数据报协议(UDP)进行通信的应用软件需要使用这些端口。在大多数情况下,这些应用软件和普通程序一样可以被非特权用户打开。
  3. 动态或私有端口(Dynamic and/or Private Ports)端口号从 49152 到 65535。这些端口号仅在客户进程运行时才动态选择,因此又叫做短暂端口号。被保留给客户端进程选择暂时使用的。

Linux 默认的可用端口范围为 32768 到 61000,查看命令如下:

1
2
3
4
sudo sysctl -a | grep range
# 输出:
net.ipv4.ip_local_port_range = 32768 61000
net.ipv4.ping_group_range = 1 0

修改远程默认端口 22

以把 22 端口,修改为 50123 端口为例。

修改 sshd 配置,命令如下:

1
sudo vim /etc/ssh/sshd_config

找到# Port 22,把注释去掉,并新增一行,比如设置端口为 50123,结果如下:

1
2
Port 22
Port 50123

保存退出::wq重启服务:service sshd restart

修改 iptables 防火墙信息(如果开启了防火墙),命令如下:

1
vim /etc/sysconfig/iptables

找到-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT 这一行并复制,把 22 修改为 50123,结果如下:

1
2
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 50123 -j ACCEPT

保存退出::wq

重启服务:service iptables restart

连接测试

对新增的端口 50123,进行连接测试。如果测试通过后,把 22 端口给注释掉。涉及如下:

  1. vim /etc/ssh/sshd_config,修改为如下:
1
2
#Port 22
Port 50123

保存退出::wq 重启服务:service sshd restart 2. vim /etc/sysconfig/iptables,(如果开启了防火墙)修改为如下:

1
#-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 50123 -j ACCEPT

保存退出::wq 重启服务:service iptables restart

此时,再用 22 端口,进行连接测试,会发现已经无法连接了。

特别说明: 在新的端口测试成功前,千万不要注释默认端口 22。

此外,自定义端口号的范围最好在 1024 到 49151 之间,并且避免与已知服务冲突。

原文链接