当前位置: 首页 > news >正文

Linux机器之间排查网络连通问题

网络连通性排查步骤(基于五层模型)

以下按照网络五层架构,从底层到高层逐层排查,并分别列出Ubuntu和CentOS对应的命令。


1. 物理层

排查点:网线、网卡状态、物理连接。
命令(通用):

# 查看网卡状态(确认网卡是否启用)
ip link show# 查看详细网卡信息(如驱动、速度等)
ethtool <网卡名>          # 例如 ethtool eth0# 启用/禁用网卡(临时生效)
sudo ip link set <网卡名> up/down

2. 数据链路层

排查点:MAC地址、交换机/VLAN配置、ARP解析。
命令(通用):

# 查看ARP表(确认目标IP的MAC地址解析)
ip neigh show            # 或 arp -n# 抓取ARP包(检查是否有请求/响应)
sudo tcpdump -i <网卡名> arp -n

3. 网络层

排查点:IP地址、子网掩码、路由表、防火墙。

3.1 检查IP配置

命令(通用):

ip addr show             # 或 ifconfig(需安装 net-tools)

注:对照机器之间的子网掩码是否一致,广播地址是否一致,IP地址是否在同一个网段内

3.2 检查路由表

命令(通用):

ip route show            # 或 route -n
3.3 测试连通性
ping <目标IP>            # 测试ICMP连通性
3.4 检查防火墙规则

Ubuntu

# 若使用 ufw:
sudo ufw status          # 查看防火墙状态
sudo ufw disable         # 临时关闭防火墙(慎用)
sudo ufw allow <端口号>/tcp # 放行端口号
sudo ufw enable # 启用防火墙# 直接检查iptables:
sudo iptables -L -nv     # 查看IPv4规则
sudo ip6tables -L -nv    # 查看IPv6规则

CentOS

# 若使用 firewalld:
sudo firewall-cmd --state           # 查看状态
sudo firewall-cmd --list-all        # 查看所有规则# 直接检查iptables/nftables:
sudo iptables -L -nv                # 传统 iptables
sudo nft list ruleset               # 若使用 nftables
3.5 重点总结
  1. 在Ubuntu中,ufw命令是iptables的简化版命令,通过sudo ufw allow <端口号> /tcp 因为没有永久保存到系统中,有时还不能生效。iptables与ufw的命令差别,可以参考这个文章:Iptables与ufw两个命令之间的区别
  2. 需要通过下面更详细脚本来执行
    # 添加防火墙的编辑权限
    sudo chattr -i /etc/iptables/rules.v4
    # 添加端口号和类型tcp到防火墙中 协议为tcp或udp, 8101
    sudo iptables -A IN_work -p <协议> -m <协议> --dport <端口号> -j ACCEPT
    # 保存当前使用到系统中
    sudo netfilter-persistent save > /dev/null 2>&1
    # 查找/work/trusted,保存到麒麟银河的防火墙配置中[现用的系统]
    sudo sed -i 's/work/trusted/g' /etc/kylin-firewall/kylin-firewall.conf
    # 去除防火墙的编辑权限
    sudo chattr +i /etc/iptables/rules.v4
    
    注:
    1. chattr的命令参考此文章:chattr命令
    2. iptables命令参考此文章:iptables命令
    3. netfilter-persistent命令参考此文章:netfilter-persistent命令

4. 传输层

排查点:端口监听状态、端口连通性、防火墙规则。

4.1 检查本地端口监听

命令(通用):

ss -tuln | grep <端口号>  # 推荐使用 ss
# 或
netstat -tuln | grep <端口号>  # 需安装 net-tools
4.2 测试远程端口连通性
# 使用 telnet(需安装 telnet)
telnet <目标IP> <端口># 使用 nc(需安装 nmap-ncat/nc)
nc -zv <目标IP> <端口># 使用curl来测试连通
curl http://<目标IP>:<端口号>/api/test 
4.3 检查防火墙对端口的放行

参考 3.4 的防火墙命令,确保目标端口已放行。


5. 应用层

排查点:服务配置、应用日志、协议兼容性。

5.1 检查服务状态

Ubuntu/CentOS(通用):

systemctl status <服务名>  # 如 nginx、ssh
5.2 查看应用日志

Ubuntu

journalctl -u <服务名>     # 查看 systemd 管理的服务日志
# 或直接查看日志文件(如 /var/log/nginx/error.log)

CentOS

journalctl -u <服务名>     # 同 Ubuntu
# 或查看 /var/log/messages、/var/log/syslog 等
5.3 使用应用层工具测试
curl -v http://<目标IP>:<端口>  # 测试HTTP服务
ssh -v user@<目标IP>          # 测试SSH服务(-v 显示详细日志)

分系统差异总结

操作UbuntuCentOS
安装工具sudo apt install <包名>sudo yum install <包名>
服务管理systemctl start/stop <服务>systemctl start/stop <服务>
防火墙管理ufwiptablesfirewalldiptables
网络配置文件/etc/netplan/*.yaml/etc/sysconfig/network-scripts/ifcfg-*

排查思路总结

  1. 从底层到高层:先确认物理连接和链路层正常,再逐步排查网络层、传输层和应用层。
  2. 双向检查:确保两端机器的配置均正确(如IP、路由、防火墙)。
  3. 抓包分析:使用 tcpdumpWireshark 抓包分析具体网络交互。
  4. 日志分析:结合系统日志(/var/log/syslogjournalctl)和应用日志定位问题。

注:含有AI生成内容,加上自己的总结。


http://www.mrgr.cn/news/94206.html

相关文章:

  • winform中chart控件解决显示大量曲线数据卡顿方法——删旧添新法
  • AI自动化编程初探
  • 机器人路径规划、轨迹优化系列课程
  • k8s面经
  • Django与模板
  • 27_Java2DRenderer结合freemarker动态生成图片
  • 【Linux内核系列】:文件系统
  • 本地部署 OpenManus 保姆级教程(Windows 版)
  • 关于WPS的Excel点击单元格打开别的文档的两种方法的探究【为单元格添加超链接】
  • 11 | 给 Gin 服务器添加中间件
  • Spring之生命周期Bean的生成过程
  • 看 MySQL InnoDB 和 BoltDB 如何写磁盘
  • uni-app打包成H5使用相对路径
  • C# Enumerable类 之 集合操作
  • c#面试题整理9
  • linux - ubuntu 使用时一些小问题整理 --- 持续更新
  • 数据结构——单链表list
  • 关于sqlalchemy的ORM的使用
  • Spring Security的作用
  • 浏览器控制台的特殊执行方式,暂存变量的作用域 和 同步/异步行为解释