Linux网络与路由配置完全指南
Linux网络与路由配置完全指南
在Linux系统管理中,网络配置是一项核心技能,无论是服务器维护、嵌入式网络设备管理还是日常运维,都离不开对网络接口、路由和防火墙的配置与调试。本文将详细介绍Linux系统中常用的网络和路由配置命令,包括传统的ifconfig
工具和现代的ip
命令,以及相关的网络诊断工具。
一、网络接口配置
网络接口是Linux系统与网络连接的物理或虚拟通道,配置网络接口是建立网络连接的第一步。
1. 查看网络接口信息
使用ifconfig命令
ifconfig # 显示所有激活的网络接口信息
ifconfig -a # 显示所有网络接口(包括未激活的)
ifconfig eth0 # 显示指定接口eth0的详细信息
ifconfig -s # 显示所有接口的简要统计信息
使用ip命令
ip -br addr show # 简洁显示所有接口状态
ip addr show eth0 # 查看指定接口eth0的详细信息
ip -s link show eth0 # 查看接口的流量统计(收发数据包数、错误数)
ethtool eth0 # 查看网卡硬件信息(速率、双工模式等)
2. 启用/禁用网络接口
使用ifconfig命令
ifconfig eth0 up # 激活eth0接口
ifconfig eth0 down # 禁用eth0接口
使用ip命令
ip link set eth0 up # 启用eth0接口
ip link set eth0 down # 禁用eth0接口
3. 配置IP地址和子网掩码
使用ifconfig命令
# 临时设置IP地址和子网掩码
ifconfig eth0 192.168.1.100 netmask 255.255.255.0# 同时设置广播地址
ifconfig eth0 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255# 清除接口的IP地址配置
ifconfig eth0 0.0.0.0
使用ip命令
# 添加IPv4地址
ip addr add 192.168.1.100/24 dev eth0# 添加IPv6地址
ip -6 addr add 2001:db8::1/64 dev eth0# 删除IP地址
ip addr del 192.168.1.100/24 dev eth0
4. 为接口配置多个IP地址
使用ifconfig命令
# 为eth0配置第二个IP(别名接口)
ifconfig eth0:0 192.168.1.101 netmask 255.255.255.0
ifconfig eth0:1 192.168.1.102 netmask 255.255.255.0# 删除别名接口
ifconfig eth0:0 down
使用ip命令
# 为eth0添加多个IP地址
ip addr add 192.168.1.101/24 dev eth0 label eth0:1
ip addr add 192.168.1.102/24 dev eth0 label eth0:2# 删除额外的IP地址
ip addr del 192.168.1.101/24 dev eth0
5. 修改MAC地址
使用ifconfig命令
# 先禁用接口
ifconfig eth0 down
# 修改MAC地址
ifconfig eth0 hw ether 00:11:22:33:44:55
# 重新启用接口
ifconfig eth0 up
使用ip命令
# 先禁用接口
ip link set eth0 down
# 修改MAC地址
ip link set eth0 address 00:11:22:33:44:55
# 重新启用接口
ip link set eth0 up
6. 配置MTU(最大传输单元)
使用ifconfig命令
ifconfig eth0 mtu 1500 # 设置MTU值为1500(默认值)
ifconfig eth0 mtu 9000 # 启用巨型帧(适用于局域网大文件传输)
使用ip命令
ip link set eth0 mtu 1500 # 设置MTU值为1500
ip link set eth0 mtu 9000 # 启用巨型帧
7. 启用/禁用混杂模式
# 使用ip命令
ip link set eth0 promisc on
ip link set eth0 promisc off
8. 持久化配置(重启生效)
不同Linux发行版的配置文件有所不同:
Debian/Ubuntu(旧版):/etc/network/interfaces
auto eth0
iface eth0 inet staticaddress 192.168.1.100netmask 255.255.255.0gateway 192.168.1.1dns-nameservers 8.8.8.8 114.114.114.114
生效命令:sudo ifdown eth0 && sudo ifup eth0
Ubuntu 18.04+ / 新版Debian:/etc/netplan/*.yaml
network:version: 2renderer: networkdethernets:eth0:addresses: [192.168.1.100/24]gateway4: 192.168.1.1nameservers:addresses: [8.8.8.8, 114.114.114.114]
生效命令:sudo netplan apply
CentOS/RHEL:/etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=static
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=114.114.114.114
生效命令:sudo systemctl restart network
二、路由配置
路由决定了网络数据包的传输路径,正确配置路由是实现网络互通的关键。
1. 查看路由表
使用route命令
route -n # 显示路由表(数字形式显示IP)
使用ip命令
ip route show # 显示路由表
ip route show table all # 查看所有路由表
ip route show table 100 # 查看指定ID为100的路由表
2. 添加静态路由
使用route命令
route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.1 dev eth0
route add default gw 192.168.1.1 dev eth0 # 添加默认路由
使用ip命令
# 添加到指定网段的路由(通过网关)
ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0# 添加直连路由(无需网关,直接通过接口访问)
ip route add 192.168.3.0/24 dev eth1# 添加默认路由
ip route add default via 192.168.1.1 dev eth0 # IPv4
ip -6 route add default via 2001:db8::1 dev eth0 # IPv6
3. 删除路由
使用route命令
route del -net 192.168.2.0 netmask 255.255.255.0
route del default gw 192.168.1.1
使用ip命令
ip route del 192.168.2.0/24 # 删除指定路由
ip route del default # 删除默认路由
4. 策略路由(基于源IP/接口选择路由表)
Linux支持多路由表和策略路由,可根据不同条件选择不同的路由表。
# 1. 定义自定义路由表(编辑/etc/iproute2/rt_tables)
echo "100 isp1" >> /etc/iproute2/rt_tables # 表ID 100,名称isp1# 2. 向自定义表添加路由
ip route add default via 10.0.0.1 dev eth0 table isp1# 3. 添加策略规则(源IP为192.168.1.0/24的流量使用isp1表)
ip rule add from 192.168.1.0/24 table isp1 priority 100# 查看策略规则
ip rule show
5. 持久化路由配置
Debian/Ubuntu
在/etc/network/interfaces
中添加:
auto eth0
iface eth0 inet static...up ip route add 10.0.0.0/8 via 192.168.1.1 dev eth0 # 启动时添加路由
CentOS/RHEL
创建/etc/sysconfig/network-scripts/route-eth0
:
10.0.0.0/8 via 192.168.1.1 dev eth0
三、网络诊断工具
网络诊断工具用于检测网络连接、排查网络故障和监控网络状态。
1. 测试网络连通性
ping 192.168.1.1 # 测试与指定IP的连通性
ping -c 4 google.com # 发送4个ICMP包到google.com
ping -i 2 -c 5 192.168.1.1 # 间隔2秒,共发送5个包traceroute google.com # 跟踪到目标的路由路径
mtr google.com # 结合ping和traceroute的功能,动态显示路由信息
2. 检查端口连通性
telnet google.com 80 # 测试到google.com的80端口
nc -zv google.com 80 # 使用netcat测试TCP端口连通性
nc -zvu 192.168.1.1 53 # 使用netcat测试UDP端口连通性
3. 查看网络连接和监听端口
netstat -tuln # 显示所有监听的TCP和UDP端口
netstat -tulnp # 显示监听端口及对应的进程
ss -tuln # 类似netstat,更高效
ss -tulnp # 显示监听端口及对应的进程
ss -tan # 显示所有TCP连接状态
4. 网络流量监控
iftop # 实时显示网络带宽使用情况
nload # 显示网络流量统计
nethogs eth0 # 按进程显示网络带宽使用情况
tcpdump -i eth0 # 抓取eth0接口的数据包
tcpdump -i eth0 port 80 # 抓取80端口的数据包
tcpdump -w capture.pcap # 保存抓包结果到文件
5. DNS查询与配置
# 查看DNS配置
cat /etc/resolv.conf# 临时修改DNS
echo "nameserver 8.8.8.8" > /etc/resolv.conf# DNS查询
nslookup google.com # 简单DNS查询
dig google.com # 详细DNS查询信息
host google.com # 解析域名到IP
四、防火墙配置
防火墙用于控制网络流量,保护系统安全。
1. iptables防火墙
# 查看防火墙规则
iptables -L # 查看filter表的规则
iptables -L -n -v # 详细显示规则,IP以数字形式显示
iptables -t nat -L # 查看nat表规则# 允许SSH连接
iptables -A INPUT -p tcp --dport 22 -j ACCEPT# 允许HTTP和HTTPS连接
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT# 允许已建立的连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT# 拒绝所有其他入站流量
iptables -A INPUT -j DROP# 保存规则(CentOS)
service iptables save# 保存规则(Debian/Ubuntu)
iptables-save > /etc/iptables/rules.v4
2. ufw防火墙(Ubuntu常用)
# 查看防火墙状态
ufw status
ufw status verbose# 启用/禁用防火墙
ufw enable
ufw disable# 开放/关闭端口
ufw allow 80/tcp # 允许TCP 80端口
ufw allow ssh # 允许SSH服务
ufw deny 22/tcp # 禁止TCP 22端口# 允许特定IP访问
ufw allow from 192.168.1.100# 删除规则
ufw delete allow 80/tcp
五、其他常用网络命令
# 查看主机名
hostname
hostnamectl# 修改主机名(持久化)
sudo hostnamectl set-hostname myserver# 查看DNS服务状态
systemctl status systemd-resolved# 刷新DNS缓存
sudo systemctl restart systemd-resolved # systemd系统
sudo /etc/init.d/nscd restart # 非systemd系统
总结
本文详细介绍了Linux系统中网络和路由配置的常用命令,包括网络接口配置、路由管理、网络诊断和防火墙设置等内容。虽然ifconfig
等传统命令仍在广泛使用,但ip
命令作为更强大、更全面的工具,已逐渐成为主流。在实际应用中,应根据具体的Linux发行版和系统版本选择合适的命令和配置方式,确保网络配置的正确性和稳定性。