【Linux进阶篇】Linux网络配置+端口监听实战:ip/ss/iptables常用命令一次吃透


🍃 予枫个人主页
📚 个人专栏 : 《Java 从入门到起飞》《读研码农的干货日常

💻 Debug 这个世界,Return 更好的自己!


引言

做开发和运维的同学,几乎每天都会和网络打交道:部署服务后端口不通、服务器IP配置异常、接口调用失败、防火墙拦截请求......这些问题看似棘手,其实只要掌握核心的网络配置与端口监听命令,就能快速排查解决。本文汇总了IP查看、DNS配置、端口监听、连通性测试、防火墙放行的实操技巧,全程干货无废话,新手可直接抄作业,老鸟可查漏补缺,建议收藏备用!

文章目录

一、基础网络配置:IP地址与DNS配置(必学)

无论是开发环境还是生产环境,首先要搞定服务器的基础网络------知道自己的IP、能正常解析域名,这是所有网络操作的前提。这里重点讲Linux系统(CentOS/Ubuntu通用)的实操命令,Windows可自行对应类比。

1.1 查看IP地址(2种常用方式)

最常用的两个命令:ip addrifconfig,推荐优先用 ip addr(ifconfig在部分新系统中已被废弃)。

实操演示(代码块可直接复制执行)

bash 复制代码
# 方式1:推荐,查看所有网卡的IP信息(包括IPv4、IPv6)
ip addr

# 方式2:兼容旧系统,查看IP(部分系统需先安装net-tools工具)
ifconfig

# 补充:只查看指定网卡(比如eth0、ens33,根据自己的网卡名修改)
ip addr show eth0

关键解读(避坑重点)

  • 执行 ip addr 后,标注「inet」的就是IPv4地址(比如 192.168.1.100/24),这是我们日常用的IP;
  • 标注「inet6」的是IPv6地址,日常开发中很少用到,可暂时忽略;
  • 若提示「ifconfig: command not found」,说明系统没有net-tools工具,执行 yum install net-tools -y(CentOS)或 apt install net-tools -y(Ubuntu)即可安装。

1.2 DNS配置(解决"域名解析失败"问题)

很多时候,我们能ping通IP,但ping不通域名(比如 ping baidu.com 失败),大概率是DNS配置有问题。DNS的作用就是将域名(如baidu.com)解析为IP地址,方便我们访问。

实操演示(修改DNS配置)

bash 复制代码
# 1. 编辑DNS配置文件(所有系统通用,需root权限)
vim /etc/resolv.conf

# 2. 在文件中添加以下内容(添加常用的公共DNS,二选一即可)
nameserver 8.8.8.8  # 谷歌公共DNS(全球通用,速度快)
nameserver 114.114.114.114  # 国内公共DNS(适合国内服务器,稳定性高)

# 3. 保存退出(vim操作:按ESC,输入:wq,回车)
# 补充:配置后立即生效,无需重启网络

注意事项

  • /etc/resolv.conf 文件默认可能为空,直接添加上述两行即可;
  • 若配置后仍无法解析域名,可重启网络服务:systemctl restart network(CentOS)或 systemctl restart networking(Ubuntu);
  • 避免同时添加过多DNS服务器,2个足够,多了可能会影响解析速度。

小贴士:这里建议点赞收藏,下次遇到"域名解析失败",直接翻这部分内容,不用再到处查资料~

二、端口监听:netstat与ss命令详解(核心)

部署服务后(比如Tomcat、Nginx、Java服务),最常遇到的问题就是"端口占用""服务启动了但端口没监听"。这时候就需要用端口监听命令,查看端口的占用情况、监听状态。

2.1 两个核心命令对比(选对命令效率翻倍)

命令 特点 适用场景
netstat 功能全面,但效率较低 兼容旧系统、需要查看详细的进程信息
ss 轻量快速,占用资源少 新系统优先用、大并发场景(比如服务器端口较多时)

2.2 实操命令(重点掌握,直接抄作业)

(1)查看所有端口(监听+未监听)

bash 复制代码
# netstat 方式(需安装net-tools工具)
netstat -tulnp

# ss 方式(系统自带,推荐)
ss -tulnp

(2)查看指定端口(最常用,比如查看8080端口占用)

bash 复制代码
# 查看8080端口的占用情况(netstat)
netstat -tulnp | grep 8080

# 查看8080端口的占用情况(ss,推荐)
ss -tulnp | grep 8080

(3)命令参数解读(新手必看)

  • t:查看TCP端口(日常开发中最常用,比如HTTP、HTTPS服务);
  • u:查看UDP端口(较少用,比如广播、视频流相关);
  • l:只查看"正在监听"的端口(服务启动成功后,端口会处于监听状态);
  • n:以数字形式显示IP和端口(不显示域名、服务名,速度更快);
  • p:显示占用该端口的进程ID(PID)和进程名(比如java、nginx),方便杀死占用端口的进程。

(4)避坑案例

比如启动Tomcat时,提示「Address already in use」(端口已被占用),执行以下命令即可解决:

bash 复制代码
# 1. 查看8080端口的占用进程(假设Tomcat用8080端口)
ss -tulnp | grep 8080
# 输出示例:tcp    LISTEN     0      100    [::]:8080               [::]:*                   users:(("java",pid=1234,fd=52))

# 2. 杀死占用端口的进程(PID为1234,根据自己的输出修改)
kill -9 1234

# 3. 重新启动Tomcat,即可正常启动

三、连通性测试:ping、telnet、curl(排障必备)

服务部署成功、端口也在监听,但别人就是访问不了?这时候就需要用连通性测试命令,排查是本地问题、网络问题,还是服务问题。

3.1 ping:测试网络是否通畅(最基础)

ping 命令用于测试两个主机之间的网络连通性,简单来说:能ping通,说明网络是通的;ping不通,说明网络有问题(比如防火墙拦截、路由异常)。

实操演示

bash 复制代码
# 测试与百度的网络连通性(测试外网是否通畅)
ping baidu.com

# 测试与内网服务器的连通性(比如测试与192.168.1.200的连通性)
ping 192.168.1.200

# 补充:指定ping的次数(默认无限次,Ctrl+C终止)
ping -c 4 baidu.com  # 只ping4次,适合脚本中使用

关键解读

  • 若输出「64 bytes from xxx (xxx.xxx.xxx.xxx): icmp_seq=1 ttl=64 time=10.2 ms」,说明ping通了;
  • 若输出「Request timeout for icmp_seq 0」,说明ping不通,需排查防火墙、路由等问题;
  • 注意:部分服务器会禁用ping(出于安全考虑),此时ping不通不代表网络有问题,可换telnet或curl测试。

3.2 telnet:测试端口是否可访问(重点)

ping 只能测试网络通畅,但不能测试端口是否可访问。比如服务器网络通了,但8080端口被防火墙拦截,ping能通,但telnet不通。

实操演示

bash 复制代码
# 测试百度的80端口(HTTP端口)是否可访问
telnet baidu.com 80

# 测试内网服务器的8080端口是否可访问
telnet 192.168.1.200 8080

关键解读

  • 若连接成功,会显示「Connected to baidu.com」,说明端口可访问;
  • 若连接失败,会显示「Connection refused」(端口未监听)或「Connection timed out」(端口被防火墙拦截);
  • 若提示「telnet: command not found」,执行 yum install telnet -y(CentOS)或 apt install telnet -y(Ubuntu)安装即可。

3.3 curl:测试接口是否可正常调用(开发常用)

curl 命令比telnet更强大,不仅能测试端口,还能发送HTTP请求,测试接口是否能正常返回数据(适合Web服务、接口开发)。

实操演示

bash 复制代码
# 1. 测试HTTP接口(比如测试本地Tomcat的默认接口)
curl http://localhost:8080

# 2. 测试指定接口(比如GET请求接口)
curl http://192.168.1.200:8080/api/user/list

# 3. 查看请求详情(排障时常用,显示请求头、响应头)
curl -v http://baidu.com

关键解读

  • 若返回接口正常响应数据(比如JSON格式),说明接口可正常调用;
  • 若返回「Connection refused」,说明端口未监听;
  • 若返回「404 Not Found」,说明端口监听正常,但接口路径错误;
  • 若返回「500 Internal Server Error」,说明接口代码有问题,需排查服务端代码。

四、防火墙操作:iptables与firewalld放行端口(必懂)

很多时候,端口监听正常、网络也通畅,但外部就是访问不了,核心原因是「防火墙拦截了端口」。这里讲解Linux系统中两种常用的防火墙:iptables(旧系统常用)和firewalld(新系统常用)。

4.1 firewalld操作(CentOS 7+、Ubuntu 18+ 推荐)

firewalld是新系统默认的防火墙,操作更简单,推荐优先使用。

实操演示(放行端口)

bash 复制代码
# 1. 查看防火墙状态(是否开启)
systemctl status firewalld

# 2. 若防火墙未开启,启动防火墙(可选)
systemctl start firewalld

# 3. 放行指定端口(比如8080端口,永久生效)
firewall-cmd --permanent --add-port=8080/tcp

# 4. 放行端口范围(比如8000-9000端口,可选)
firewall-cmd --permanent --add-port=8000-9000/tcp

# 5. 重新加载防火墙(使配置生效,必须执行)
firewall-cmd --reload

# 6. 查看已放行的端口(验证配置)
firewall-cmd --permanent --list-ports

补充操作(常用)

bash 复制代码
# 1. 移除已放行的端口(比如移除8080端口)
firewall-cmd --permanent --remove-port=8080/tcp
firewall-cmd --reload

# 2. 关闭防火墙(测试时可用,不推荐生产环境)
systemctl stop firewalld

# 3. 禁止防火墙开机自启(不推荐生产环境)
systemctl disable firewalld

4.2 iptables操作(旧系统兼容)

iptables是旧系统(比如CentOS 6)的防火墙,操作相对复杂,适合兼容旧系统时使用。

实操演示(放行端口)

bash 复制代码
# 1. 查看iptables规则(查看已放行的端口)
iptables -L -n

# 2. 放行指定端口(比如8080端口,临时生效,重启后失效)
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT

# 3. 放行指定端口(永久生效,需保存配置)
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
service iptables save  # 保存配置
service iptables restart  # 重启iptables

# 4. 移除已放行的端口(比如移除8080端口)
iptables -D INPUT -p tcp --dport 8080 -j ACCEPT
service iptables save
service iptables restart

注意事项

  • 生产环境中,不建议直接关闭防火墙(存在安全风险),最好的方式是「放行需要用到的端口」;
  • 若服务器有外网IP,建议只放行必要的端口(比如80、443、8080),避免不必要的端口暴露在外网。

五、总结

本文汇总了Linux网络配置与端口监听的核心实操技巧,从基础的IP查看、DNS配置,到核心的端口监听(netstat/ss)、连通性测试(ping/telnet/curl),再到防火墙放行端口(firewalld/iptables),覆盖了开发、运维日常排障的90%场景。

所有命令均经过实操验证,新手可直接复制执行,老鸟可查漏补缺。网络问题看似复杂,其实只要掌握这些基础命令,就能快速定位并解决问题。


作者:予枫(CSDN技术博主)

简介:专注Linux、Java、Python技术分享,干货为主,拒绝废话,关注我,一起提升技术硬实力!

相关推荐
礼拜天没时间.7 小时前
深入Docker架构——C/S模式解析
linux·docker·容器·架构·centos
醉风塘7 小时前
Linux进程管理:深度解析ps -ef命令及其高级应用
linux·运维·服务器
不做无法实现的梦~7 小时前
PX4各个模块的作用(3)
linux·stm32·嵌入式硬件·机器人·自动驾驶
不爱缺氧i7 小时前
ubuntu离线安装mariadb
linux·ubuntu·mariadb
疯狂敲代码的老刘7 小时前
JDK 1.6到25 全版本网盘合集 (Windows + Mac + Linux)
java·linux·windows·macos·jdk
爆米花byh7 小时前
在RockyLinux9环境的Storm2.8.3单机版安装
linux·中间件·storm
纤纡.7 小时前
Linux 下 MySQL 数据类型与约束:第三章核心表格归纳与实战应用
linux·mysql
陈桴浮海7 小时前
【Linux&Ansible】学习笔记合集三
linux·运维·云原生·ansible
yuanmenghao7 小时前
Linux 性能实战 | 第 10 篇 CPU 缓存与内存访问延迟
linux·服务器·缓存·性能优化·自动驾驶·unix