netstat

使用netstat列出当前开放的所有端口,不限协议(可以是TCP和UDP)

netstat -lntu

  • 参数l,是指列出所有在listening的socket
  • 参数n,是指显示端口号
  • 参数t,是指TCP协议
  • 参数u, 是指UDP协议

当系统没有安装netstat包时,可以使用以下命令替代

ss -lntu

判断端口是否开发

netstat -na | grep :portnumber
netstat -na | grep :portnumber

开放端口

如果系统中安装有firewalld,则使用如下指令:

firewall-cmd --add-port=portnumber/tcp # 暂时开放
firewall-cmd --add-port=portnumber/tcp --permanent # 永久有效

如果系统中安装有iptables,则使用如下指令:

iptables -A INPUT -p tcp --dport portnumber -j ACCEPT
sudo service iptables restart

参数说明

  • A:append的简写,指将该规则追加至原规则列表。
  • p: protocol的简写,指协议,示例中指新规则为tcp协议。
  • dport: 开放目标端口。
  • j: jump的简写

测试端口是否可用

假设你在A机器上开放了4000端口,现在想测试该端口是否能在B上访问。则依次执行如下步骤。

  1. 在A机器上执行如下命令
    ls | nc -l -p 4000 # 注:nc是指netcat
    
    该命令会监听4000端口,最前面的ls会在客户端连到该端口时,将当前文件夹下的文件名传输给客户端。
  2. 在B机器上执行以下命令(二选一即可):
    telnet hostA_ip 4000
    nc hostA_ip 4000
    
    如果A机器上的4000端口开放成功,则无论是telnet还是nc,都会显示连接成功,否则显示连接失败。
  3. 也可以在hostA上执行如下命令,来检测4000端口确实开放成功
    nmap localhost -p 4000
    
Logo

更多推荐