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 配置有效。
二、临时配置网络(重启失效)
临时修改适用于调试或短期使用,系统重启后失效。
-
为指定接口分配 IP 地址,例如给
eth0设置192.168.1.100/24:sudo ip addr add 192.168.1.100/24 dev eth0 -
删除已有 IP 地址(如有冲突):
sudo ip addr del 192.168.1.100/24 dev eth0 -
设置默认网关:
sudo ip route add default via 192.168.1.1 -
配置 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(推荐)
-
进入 Netplan 配置目录:
cd /etc/netplan/ -
编辑 YAML 配置文件(通常名为
01-netcfg.yaml或50-cloud-init.yaml):sudo nano /etc/netplan/01-netcfg.yaml -
配置静态 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 -
应用配置:
sudo netplan apply
注意:YAML 对缩进敏感,必须使用空格(不能用 Tab),且冒号后需有空格。
CentOS/RHEL 使用 NetworkManager(nmcli)
-
列出所有连接:
nmcli con show -
修改现有连接(如 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 -
重启连接使配置生效:
sudo nmcli con down "System eth0" && sudo nmcli con up "System eth0"
四、管理防火墙:firewalld(RHEL/CentOS/Fedora 默认)
firewalld 是动态管理防火墙的工具,支持区域(zone)概念。
-
检查 firewalld 是否运行:
sudo systemctl status firewalld -
启动并设置开机自启:
sudo systemctl start firewalld sudo systemctl enable firewalld -
查看当前活动区域及规则:
sudo firewall-cmd --get-active-zones sudo firewall-cmd --list-all -
开放常用端口(如 SSH 的 22 端口):
sudo firewall-cmd --permanent --add-port=22/tcp -
允许服务(如 http、https):
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https -
重新加载配置使永久规则生效:
sudo firewall-cmd --reload -
阻止某个 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 发行版。
-
查看当前规则:
sudo iptables -L -n -v -
允许本地回环通信(必需):
sudo iptables -A INPUT -i lo -j ACCEPT -
允许已建立的连接返回:
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT -
开放 SSH(22 端口):
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT -
拒绝其他所有入站流量(谨慎操作!确保 SSH 已放行):
sudo iptables -P INPUT DROP -
保存规则(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 |
查看内核对网卡的识别信息 |
七、安全最佳实践
- 最小权限原则:仅开放业务必需的端口和服务。
- 定期审查规则:使用
firewall-cmd --list-all或iptables -L定期检查。 - 限制 SSH 访问源:通过防火墙仅允许可信 IP 段访问 22 端口。
- 禁用未使用接口:运行
sudo ip link set eth1 down关闭不用的网卡。 - 启用 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,确认端口状态符合预期。

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