当前位置: 首页 > news >正文

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发行版和系统版本选择合适的命令和配置方式,确保网络配置的正确性和稳定性。

http://www.dtcms.com/a/499042.html

相关文章:

  • 【高并发服务器】六、日志宏的实现
  • 什么是网络割接
  • 中山网站建设文化报价个人网站设计结构图
  • 专业简历制作网站推荐渭南网站建设网站排名优化
  • Electron学习(一):创建第一个应用并打包成功
  • EF Core FromExpression 方法
  • 工厂方法模式
  • 做装机u盘那个网站好市桥做网站
  • SAP MM采购对账功能分享
  • 网页设计与网站建设考试名词解释2019网站建设工作的作用
  • 【有源码】基于Python与Spark的火锅店数据可视化分析系统-基于机器学习的火锅店综合竞争力评估与可视化分析-基于用户画像聚类的火锅店市场细分与可视化研究
  • Linux: perf: sched latency,周期性抓取看趋势,做对比
  • 统计学重要思想
  • Android 本地存储方案深度解析:SharedPreferences、DataStore、MMKV 全面对比
  • 网站开发前后端中山做外贸网站
  • ElastiCache Redis 内存告警深度分析与运维实战指南
  • Spring5.3.10源码编译和调试(IDEA+Gradle)的过程
  • JS | 知识点总结 - 原型链
  • 【Docker】Docker镜像仓库
  • EEException: Geometry.area: Unable to perform this geometry operation.
  • 逻辑和共情
  • linux安装输入法
  • git连接远程仓库并拉去推送以及克隆命令
  • steam新品节游戏推荐!手机怎么玩steam游戏!
  • OpenHarmony Stage模型深度解剖:从Ability Kit到沙箱隔离的全链路底层原理
  • 基于 GEE 的 MODIS 昼夜地表温度数据可视化与导出全流程解决方案
  • 【Docker】记录一次使用docker部署dify网段冲突的问题
  • 缓存三剑客问题
  • 构建AI智能体:六十七、超参数如何影响大模型?通俗讲解原理、作用与实战示例
  • timm教程翻译:(一)Overview