Linux 与网络排查笔记合集

Linux 与网络排查笔记合集

💡 原文中文,约12000字,阅读约需29分钟。
📝

内容提要

本文汇总Linux运维与网络排查笔记,涵盖iptables限制端口仅指定IP访问(Docker需在DOCKER-USER链配置)、CentOS安装后换源及装ntfs-3g、修复Grub、安装Chrome与VS Code、CentOS 7配置Java环境及切换JDK、Nginx的server_name匹配与密码验证,以及nload流量监控、Zsh配置、iperf网络测试、MySQL常用命令和curl进阶用法。

🔎

延伸解读

Docker 端口限制需注意链的位置

文章指出,用 iptables 限制主机端口仅允许指定 IP 访问时,规则加在 INPUT 链即可;但对 Docker 映射的端口,同样的规则无效,因为 Docker 会自行添加规则。此时需将规则加到 DOCKER-USER 链,并指定网卡和源 IP。这提醒读者:在容器环境中做访问控制,不能照搬主机防火墙配置,需理解 Docker 的 iptables 管理机制。

Nginx server_name 匹配的默认行为

文章记录了一个现象:两个 server 块分别监听 80 和 8080,但访问两个域名都返回了第一个服务。原因是当所有 server 的规则都不匹配时,Nginx 会采用第一条 server 配置。解决办法是在最前面新增一个返回 404 的 server 块作为默认。这提示读者,多站点配置时需显式处理未匹配请求,避免流量被错误转发。

Java 编译环境需关注 JAVA_HOME 而非 PATH

文章提到编译 Jenkins 插件时出现 NoSuchFileException,原因是 Maven 使用 JAVA_HOME 而非 PATH 来定位 Java 运行环境,且 Java 11 无法正常编译,需使用 Java 1.8。这说明在切换 JDK 版本时,仅用 alternatives 切换默认 java 命令可能不够,还需检查 JAVA_HOME 环境变量是否指向正确版本,否则构建工具可能仍使用旧版本。

笔记类内容的时效性与环境依赖

文章开头即说明,这些记录是当时环境下的实测结果,环境变化后命令可能失效,应以官方文档为准。文中涉及 CentOS 5/6/7 的源地址、特定版本的 JDK 包名等,均带有明显的版本和环境印记。读者参考时需注意自己的系统版本和软件源状态,不宜直接复制粘贴,而应理解命令意图后按实际环境调整。

❓

Q&A

如何用iptables限制Docker容器的端口只允许特定IP访问?

需要在DOCKER-USER链中添加规则,例如:iptables -I DOCKER-USER -i ens192 ! -s 1.2.3.4 -p tcp --dport 80 -j DROP,其中ens192是本地网卡,1.2.3.4是允许访问的IP。

CentOS 7安装后如何更换yum镜像源为阿里云?

备份原源:mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup,然后下载阿里云源:wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo,最后运行yum makecache生成缓存。

CentOS 7上如何安装和切换不同版本的JDK?

安装JDK 11:yum install -y java-11-openjdk-devel;安装JDK 1.8:yum install -y java-1.8.0-openjdk-devel。使用alternatives --config java选择版本,然后配置环境变量:在/etc/profile中添加export JAVA_HOME=/usr/lib/jvm/java-openjdk和export JRE_HOME=/usr/lib/jvm/jre-openjdk,最后source /etc/profile生效。

Nginx配置了多个server_name但访问时总是返回第一个server的内容,如何解决?

这是因为当所有server规则都不匹配时,Nginx会采用第一条server配置。解决办法是在最前面新增一条server配置,例如:server { listen 80; server_name XX.chenshaowen.com; return 404; },确保默认请求返回404而不是错误地代理到第一个服务。

如何使用nload监控Linux网络流量?

安装nload:CentOS用yum install -y nload,Ubuntu用apt-get install -y nload。直接运行nload监控所有网卡,或指定网卡如nload ens192。常用参数:-t设置刷新间隔(默认500毫秒),-u设置单位,-i和-o设置进出流量图的最大比例。

iperf3如何测试TCP和UDP网络性能?

服务端运行:iperf3 -s -i 1 -p 30000。客户端TCP测试:iperf3 -c 1.2.3.4 -p 30000 -i 1;UDP测试:iperf3 -c 1.2.3.4 -p 30000 -i 1 -u -l 1460。测试结果会显示带宽、抖动和丢包率等。

curl如何发送带认证头的RESTful请求?

使用-X指定方法(如POST),--data发送数据,-H添加头部。例如:curl -X POST --data 'keyword=value' -H 'Content-Type:application/json' -H 'Authorization: bearer MyToken' http://domain.com/mypath/。Basic认证用-u username:password。

🏷️

标签

➡️

继续阅读