
🍃 予枫 :个人主页
📚 个人专栏 : 《Java 从入门到起飞》《读研码农的干货日常》
💻 Debug 这个世界,Return 更好的自己!
引言
做开发和运维的同学,几乎每天都会和网络打交道:部署服务后端口不通、服务器IP配置异常、接口调用失败、防火墙拦截请求......这些问题看似棘手,其实只要掌握核心的网络配置与端口监听命令,就能快速排查解决。本文汇总了IP查看、DNS配置、端口监听、连通性测试、防火墙放行的实操技巧,全程干货无废话,新手可直接抄作业,老鸟可查漏补缺,建议收藏备用!
文章目录
- 引言
- 一、基础网络配置:IP地址与DNS配置(必学)
-
- [1.1 查看IP地址(2种常用方式)](#1.1 查看IP地址(2种常用方式))
- [1.2 DNS配置(解决"域名解析失败"问题)](#1.2 DNS配置(解决“域名解析失败”问题))
- 二、端口监听:netstat与ss命令详解(核心)
-
- [2.1 两个核心命令对比(选对命令效率翻倍)](#2.1 两个核心命令对比(选对命令效率翻倍))
- [2.2 实操命令(重点掌握,直接抄作业)](#2.2 实操命令(重点掌握,直接抄作业))
- 三、连通性测试:ping、telnet、curl(排障必备)
- 四、防火墙操作:iptables与firewalld放行端口(必懂)
-
- [4.1 firewalld操作(CentOS 7+、Ubuntu 18+ 推荐)](#4.1 firewalld操作(CentOS 7+、Ubuntu 18+ 推荐))
- [4.2 iptables操作(旧系统兼容)](#4.2 iptables操作(旧系统兼容))
- 五、总结
一、基础网络配置:IP地址与DNS配置(必学)
无论是开发环境还是生产环境,首先要搞定服务器的基础网络------知道自己的IP、能正常解析域名,这是所有网络操作的前提。这里重点讲Linux系统(CentOS/Ubuntu通用)的实操命令,Windows可自行对应类比。
1.1 查看IP地址(2种常用方式)
最常用的两个命令:ip addr 和 ifconfig,推荐优先用 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技术分享,干货为主,拒绝废话,关注我,一起提升技术硬实力!