文章目录

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

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

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

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


一、查看当前网络状态

运行 ip addr show 命令查看所有网络接口及其 IP 地址。输出中会列出如 eth0ens33wlan0 等接口名称,以及对应的 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.yaml50-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-alliptables -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 22nmap -p 22,80 your_server_ip,确认端口状态符合预期。

评论 (0)

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

扫一扫,手机查看

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