1. 为什么需要双网卡多网段配置想象一下你公司的服务器就像一栋大楼外网卡是大楼的正门接待访客内网卡是员工通道内部办公区。如果所有人挤在同一个出入口既影响效率又存在安全隐患。双网卡配置的本质就是物理隔离网络流量让内外网各走各的专用通道。我去年给一家电商企业部署服务器时就遇到过典型场景Web服务需要对外暴露80端口外网卡同时数据库服务要隔离在内部网络内网卡。更复杂的是他们财务部和仓储部使用不同的内网网段192.168.1.0/24和192.168.3.0/24这时候就需要让服务器能同时访问多个内网段。2. 环境准备与基础配置2.1 硬件与网络拓扑确认先掏出你的网络工具箱用lspci | grep -i ethernet查看网卡硬件信息ip link show确认系统识别的网卡名称可能是ens33、enp0s3等新命名准备一张纸画出网络拓扑标清楚各网段IP范围。比如我的测试环境外网卡(eth0): 10.144.0.239/24 网关10.144.0.1内网卡(eth1):主IP: 192.168.1.102/24无网关需访问的网段: 192.168.3.0/24注意Ubuntu 18.04之后改用netplan但老方法依然有效。本文演示传统interfaces配置方式更适合初学者理解原理。2.2 编辑网络配置文件打开终端用你最顺手的编辑器修改配置sudo vim /etc/network/interfaces基础配置模板如下根据实际情况修改# 外网卡配置带网关 auto eth0 iface eth0 inet static address 10.144.0.239 netmask 255.255.255.0 gateway 10.144.0.1 dns-nameservers 8.8.8.8 # 内网卡基础配置无网关 auto eth1 iface eth1 inet static address 192.168.1.102 netmask 255.255.255.0保存后执行sudo systemctl restart networking如果报错可以尝试更彻底的sudo ip addr flush dev eth0 sudo ip addr flush dev eth1 sudo ifdown -a sudo ifup -a3. 路由配置的玄机3.1 解读路由表执行ip route show你会看到类似这样的输出default via 10.144.0.1 dev eth0 proto static 10.144.0.0/24 dev eth0 proto kernel scope link src 10.144.0.239 192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.102这里有个关键点默认路由default只能有一个通常应该指向外网网关。内网通信靠的是直连路由proto kernel这就是为什么内网卡不需要设网关。3.2 添加静态路由要让服务器访问192.168.3.0/24网段有两种方法方法一添加永久路由推荐在/etc/network/interfaces末尾追加up route add -net 192.168.3.0 netmask 255.255.255.0 dev eth1方法二临时添加测试用sudo ip route add 192.168.3.0/24 dev eth1验证路由是否生效ping -c 3 192.168.3.123 traceroute 192.168.3.1234. 多网段的高级玩法4.1 虚拟接口方案有时候内网需要绑定多个IP就像给你的内网卡装多个分机号auto eth1:1 iface eth1:1 inet static address 192.168.3.166 netmask 255.255.255.0重启后执行ifconfig会看到eth1:1虚拟接口。这种方法适合需要服务器在多个网段都有IP的情况某些老旧设备只认同网段通信4.2 策略路由进阶当你有更复杂的需求时比如根据源IP选择不同出口可以用iproute2的高级功能# 创建新路由表 echo 200 custom /etc/iproute2/rt_tables # 添加路由规则 ip rule add from 192.168.1.102 lookup custom ip route add default via 192.168.1.1 dev eth1 table custom5. 排错指南与性能优化5.1 常见问题排查症状1能ping通内网但无法访问外网检查ip route show确认默认路由指向外网网关测试DNS解析nslookup example.com查看防火墙规则sudo iptables -L -n -v症状2跨网段时通时断用mtr -n 192.168.3.123观察链路质量检查ARP缓存ip neigh show确认子网掩码配置是否正确5.2 性能调优参数在/etc/sysctl.conf中添加# 禁用IPv6如不需要 net.ipv6.conf.all.disable_ipv6 1 # 提高网络性能 net.core.rmem_max 16777216 net.core.wmem_max 16777216执行sudo sysctl -p生效。对于网关服务器建议开启IP转发net.ipv4.ip_forward 16. 安全加固建议网络隔离层面使用iptables限制内网卡只允许特定IP访问sudo iptables -A INPUT -i eth1 -s 192.168.1.100 -j ACCEPT sudo iptables -A INPUT -i eth1 -j DROP定期检查ARP表arp -an配置安全备份网络配置cp /etc/network/interfaces ~/interfaces.bak使用chattr i /etc/network/interfaces防止误修改我在实际运维中发现80%的网络问题都源于基础配置错误。建议每次修改后记录变更内容用date ip a ip route保存快照。
Ubuntu双网卡多网段配置实战:从内外网隔离到跨网段互通
发布时间:2026/6/11 19:15:32
1. 为什么需要双网卡多网段配置想象一下你公司的服务器就像一栋大楼外网卡是大楼的正门接待访客内网卡是员工通道内部办公区。如果所有人挤在同一个出入口既影响效率又存在安全隐患。双网卡配置的本质就是物理隔离网络流量让内外网各走各的专用通道。我去年给一家电商企业部署服务器时就遇到过典型场景Web服务需要对外暴露80端口外网卡同时数据库服务要隔离在内部网络内网卡。更复杂的是他们财务部和仓储部使用不同的内网网段192.168.1.0/24和192.168.3.0/24这时候就需要让服务器能同时访问多个内网段。2. 环境准备与基础配置2.1 硬件与网络拓扑确认先掏出你的网络工具箱用lspci | grep -i ethernet查看网卡硬件信息ip link show确认系统识别的网卡名称可能是ens33、enp0s3等新命名准备一张纸画出网络拓扑标清楚各网段IP范围。比如我的测试环境外网卡(eth0): 10.144.0.239/24 网关10.144.0.1内网卡(eth1):主IP: 192.168.1.102/24无网关需访问的网段: 192.168.3.0/24注意Ubuntu 18.04之后改用netplan但老方法依然有效。本文演示传统interfaces配置方式更适合初学者理解原理。2.2 编辑网络配置文件打开终端用你最顺手的编辑器修改配置sudo vim /etc/network/interfaces基础配置模板如下根据实际情况修改# 外网卡配置带网关 auto eth0 iface eth0 inet static address 10.144.0.239 netmask 255.255.255.0 gateway 10.144.0.1 dns-nameservers 8.8.8.8 # 内网卡基础配置无网关 auto eth1 iface eth1 inet static address 192.168.1.102 netmask 255.255.255.0保存后执行sudo systemctl restart networking如果报错可以尝试更彻底的sudo ip addr flush dev eth0 sudo ip addr flush dev eth1 sudo ifdown -a sudo ifup -a3. 路由配置的玄机3.1 解读路由表执行ip route show你会看到类似这样的输出default via 10.144.0.1 dev eth0 proto static 10.144.0.0/24 dev eth0 proto kernel scope link src 10.144.0.239 192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.102这里有个关键点默认路由default只能有一个通常应该指向外网网关。内网通信靠的是直连路由proto kernel这就是为什么内网卡不需要设网关。3.2 添加静态路由要让服务器访问192.168.3.0/24网段有两种方法方法一添加永久路由推荐在/etc/network/interfaces末尾追加up route add -net 192.168.3.0 netmask 255.255.255.0 dev eth1方法二临时添加测试用sudo ip route add 192.168.3.0/24 dev eth1验证路由是否生效ping -c 3 192.168.3.123 traceroute 192.168.3.1234. 多网段的高级玩法4.1 虚拟接口方案有时候内网需要绑定多个IP就像给你的内网卡装多个分机号auto eth1:1 iface eth1:1 inet static address 192.168.3.166 netmask 255.255.255.0重启后执行ifconfig会看到eth1:1虚拟接口。这种方法适合需要服务器在多个网段都有IP的情况某些老旧设备只认同网段通信4.2 策略路由进阶当你有更复杂的需求时比如根据源IP选择不同出口可以用iproute2的高级功能# 创建新路由表 echo 200 custom /etc/iproute2/rt_tables # 添加路由规则 ip rule add from 192.168.1.102 lookup custom ip route add default via 192.168.1.1 dev eth1 table custom5. 排错指南与性能优化5.1 常见问题排查症状1能ping通内网但无法访问外网检查ip route show确认默认路由指向外网网关测试DNS解析nslookup example.com查看防火墙规则sudo iptables -L -n -v症状2跨网段时通时断用mtr -n 192.168.3.123观察链路质量检查ARP缓存ip neigh show确认子网掩码配置是否正确5.2 性能调优参数在/etc/sysctl.conf中添加# 禁用IPv6如不需要 net.ipv6.conf.all.disable_ipv6 1 # 提高网络性能 net.core.rmem_max 16777216 net.core.wmem_max 16777216执行sudo sysctl -p生效。对于网关服务器建议开启IP转发net.ipv4.ip_forward 16. 安全加固建议网络隔离层面使用iptables限制内网卡只允许特定IP访问sudo iptables -A INPUT -i eth1 -s 192.168.1.100 -j ACCEPT sudo iptables -A INPUT -i eth1 -j DROP定期检查ARP表arp -an配置安全备份网络配置cp /etc/network/interfaces ~/interfaces.bak使用chattr i /etc/network/interfaces防止误修改我在实际运维中发现80%的网络问题都源于基础配置错误。建议每次修改后记录变更内容用date ip a ip route保存快照。