文章目录

Linux 网络:网络配置与防火墙

发布于 2026-04-04 06:56:18 · 浏览 269 次 · 评论 0 条

Linux 网络:网络配置与防火墙

在 Linux 系统中,正确配置网络和管理防火墙是保障服务器连通性与安全性的基础。本文提供从临时到永久的网络设置方法,并演示如何使用 firewalld 和 iptables 控制流量。


一、查看当前网络状态

运行 ip addr show 命令查看所有网络接口及其 IP 地址。输出中会列出如 eth0、ens33 或 wlan0 等接口名称,以及对应的 IPv4/IPv6 地址。

检查默认网关,执行:

ip route show default

该命令会显示类似 default via 192.168.1.1 dev eth0 的信息,其中 192.168.1.1 是你的网关地址。

测试 DNS 解析是否正常,可使用:

nslookup google.com

或

dig google.com +short

若返回 IP 地址,则 DNS 配置有效。


二、临时配置网络(重启失效)

临时修改适用于调试或短期使用,系统重启后失效。

  1. 为指定接口分配 IP 地址,例如给 eth0 设置 192.168.1.100/24:

    sudo ip addr add 192.168.1.100/24 dev eth0
  2. 删除已有 IP 地址(如有冲突):

    sudo ip addr del 192.168.1.100/24 dev eth0
  3. 设置默认网关:

    sudo ip route add default via 192.168.1.1
  4. 配置 DNS 服务器,编辑 /etc/resolv.conf 文件:

    sudo nano /etc/resolv.conf

    添加如下内容(以 Cloudflare 和 Google DNS 为例):

    nameserver 1.1.1.1
    nameserver 8.8.8.8

    注意:某些系统(如使用 NetworkManager 或 systemd-resolved)会自动覆盖此文件,临时修改可能被重置。


三、永久配置网络(重启生效)

不同发行版使用不同网络管理工具。主流方案包括 Netplan(Ubuntu 18.04+)、NetworkManager 和 传统 ifupdown(Debian/旧版 Ubuntu)。

Ubuntu/Debian 使用 Netplan(推荐)

  1. 进入 Netplan 配置目录:

    cd /etc/netplan/
  2. 编辑 YAML 配置文件(通常名为 01-netcfg.yaml 或 50-cloud-init.yaml):

    sudo nano /etc/netplan/01-netcfg.yaml
  3. 配置静态 IP 示例(假设接口为 eth0):

    network:
      version: 2
      ethernets:
        eth0:
          dhcp4: no
          addresses:
            - 192.168.1.100/24
          gateway4: 192.168.1.1
          nameservers:
            addresses:
              - 1.1.1.1
              - 8.8.8.8
  4. 应用配置:

    sudo netplan apply

注意:YAML 对缩进敏感,必须使用空格(不能用 Tab),且冒号后需有空格。

CentOS/RHEL 使用 NetworkManager(nmcli)

  1. 列出所有连接:

    nmcli con show
  2. 修改现有连接(如 System eth0)为静态 IP:

    sudo nmcli con mod "System eth0" ipv4.addresses 192.168.1.100/24
    sudo nmcli con mod "System eth0" ipv4.gateway 192.168.1.1
    sudo nmcli con mod "System eth0" ipv4.dns "1.1.1.1,8.8.8.8"
    sudo nmcli con mod "System eth0" ipv4.method manual
  3. 重启连接使配置生效:

    sudo nmcli con down "System eth0" && sudo nmcli con up "System eth0"

四、管理防火墙:firewalld(RHEL/CentOS/Fedora 默认)

firewalld 是动态管理防火墙的工具,支持区域(zone)概念。

  1. 检查 firewalld 是否运行:

    sudo systemctl status firewalld
  2. 启动并设置开机自启:

    sudo systemctl start firewalld
    sudo systemctl enable firewalld
  3. 查看当前活动区域及规则:

    sudo firewall-cmd --get-active-zones
    sudo firewall-cmd --list-all
  4. 开放常用端口(如 SSH 的 22 端口):

    sudo firewall-cmd --permanent --add-port=22/tcp
  5. 允许服务(如 http、https):

    sudo firewall-cmd --permanent --add-service=http
    sudo firewall-cmd --permanent --add-service=https
  6. 重新加载配置使永久规则生效:

    sudo firewall-cmd --reload
  7. 阻止某个 IP 访问(富规则示例):

    sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.5" reject'
    sudo firewall-cmd --reload

五、管理防火墙:iptables(通用底层工具)

iptables 直接操作内核 netfilter 框架,适用于所有 Linux 发行版。

  1. 查看当前规则:

    sudo iptables -L -n -v
  2. 允许本地回环通信(必需):

    sudo iptables -A INPUT -i lo -j ACCEPT
  3. 允许已建立的连接返回:

    sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
  4. 开放 SSH(22 端口):

    sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  5. 拒绝其他所有入站流量(谨慎操作!确保 SSH 已放行):

    sudo iptables -P INPUT DROP
  6. 保存规则(Ubuntu/Debian):

    sudo apt install iptables-persistent
    sudo netfilter-persistent save

    保存规则(CentOS/RHEL 7-):

    sudo service iptables save

警告:错误的 iptables 规则可能导致远程连接中断。建议在本地终端或带控制台访问权限的环境中操作。


六、常用故障排查命令

命令 作用
ping 8.8.8.8 测试基础网络连通性(绕过 DNS)
ping google.com 测试 DNS + 网络连通性
ss -tuln 查看监听中的 TCP/UDP 端口
journalctl -u networking (Debian/Ubuntu)查看网络服务日志
journalctl -u NetworkManager (RHEL/CentOS)查看 NetworkManager 日志
dmesg | grep eth0 查看内核对网卡的识别信息

七、安全最佳实践

  1. 最小权限原则:仅开放业务必需的端口和服务。
  2. 定期审查规则:使用 firewall-cmd --list-all 或 iptables -L 定期检查。
  3. 限制 SSH 访问源:通过防火墙仅允许可信 IP 段访问 22 端口。
  4. 禁用未使用接口:运行 sudo ip link set eth1 down 关闭不用的网卡。
  5. 启用 fail2ban:自动封禁多次尝试登录失败的 IP(额外安装)。
sudo apt install fail2ban    # Debian/Ubuntu
sudo yum install fail2ban    # CentOS/RHEL

配置后,fail2ban 会监控日志并动态更新 iptables 或 firewalld 规则。


验证配置是否生效:从另一台机器执行 telnet your_server_ip 22 或 nmap -p 22,80 your_server_ip,确认端口状态符合预期。

评论 (0)

暂无评论,快来抢沙发吧!

扫一扫,手机查看

扫描上方二维码,在手机上查看本文