侧边栏壁纸
博主头像
liveJQ博主等级

沒有乐趣,何来开始

  • 累计撰写 184 篇文章
  • 累计创建 68 个标签
  • 累计收到 2 条评论

CentOS 7 配置多IP走各自网关

liveJQ
2021-11-12 / 0 评论 / 0 点赞 / 25 阅读 / 2,303 字

测试环境:CentOS 7.9

两个子网,相同网段相同掩码

现在服务器分配了两个子网 IP 段,需要配置到同一个网卡上,两个网段各自走自己的网关出去。

10.20.10.24/29 网关 10.20.10.25 可用IP 10.20.10.26-30
10.20.10.248/29 网关 10.20.10.249 可用IP 10.20.10.250-254

cat /etc/sysconfig/network-scripts/ifcfg-em1

TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
DEFROUTE=yes
NAME=em1
DEVICE=em1
IPADDR=10.20.10.26
NETMASK=255.255.255.248
GATEWAY=10.20.10.25
DNS1=1.1.1.1
DNS2=8.8.8.8

IPADDR1=10.20.10.27
IPADDR2=10.20.10.28
IPADDR3=10.20.10.29
IPADDR4=10.20.10.30

IPADDR5=10.20.10.250
IPADDR6=10.20.10.251
IPADDR7=10.20.10.252
IPADDR8=10.20.10.253
IPADDR9=10.20.10.254

PREFIX=29

注意:默认 NETMASK 只对 IPADDR 起效,附加 IP 应使用 PREFIX 形式来统一掩码(如果不同网段使用不同掩码则需要再细分配置方式)。使用 NETMASK1=255.255.255.248 是无效的,不会生效!

上面是因为附加 IP 的掩码刚好都一样,所以直接一个 PREFIX 搞定了。

重启网卡生效,正常来说,配上的 IP 都通了。

systemctl restart network

题外话:为啥都通了?另一个段网关是 .254 的,默认走了 .25 出去。ISP 是否允许跨子网出流量是成败关键,虽然 Linux 可以这样路由,但有些 ISP 会进行源地址校验(source validation)或源路由过滤,如果用 .250(理论上应该走 .249)但走了 .25 出去,运营商可能丢掉这个包;如果运营商不做这种检查,那算是“侥幸成功”了。

两个子网,不同网段不同掩码

现在服务器分配了两个子网 IP 段,需要配置到同一个网卡上,两个网段各自走自己的网关出去。

10.20.10.24/29 网关 10.20.10.25 可用IP 10.20.10.26-30
10.20.20.0/24 网关 10.20.20.1 可用IP 10.20.20.2-254

cat /etc/sysconfig/network-scripts/ifcfg-em1

TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
DEFROUTE=yes
NAME=em1
DEVICE=em1
IPADDR=10.20.10.26
NETMASK=255.255.255.248
GATEWAY=10.20.10.25
DNS1=1.1.1.1
DNS2=8.8.8.8

IPADDR1=10.20.10.27
PREFIX1=29
IPADDR2=10.20.10.28
PREFIX2=29
IPADDR3=10.20.10.29
PREFIX3=29
IPADDR4=10.20.10.30
PREFIX4=29

IPADDR5=10.20.20.2
PREFIX5=24
IPADDR6=10.20.20.3
PREFIX6=24
IPADDR7=10.20.20.4
PREFIX7=24

配置策略路由走各自网关

添加路由表

echo "200 secondgw" >> /etc/iproute2/rt_tables

创建脚本 /etc/sysconfig/network-scripts/route-em1-secondgw.sh

#!/bin/bash
# 访问 10.20.10.248/29 子网指定从 em1 网卡出去并设置了建议的源IP(非强制)
ip route add 10.20.10.248/29 dev em1 src 10.20.10.250 table secondgw
# 设置 secondgw 路由表的默认路由
ip route add default via 10.20.10.249 dev em1 table secondgw

# 将这些 IP 绑定到 secondgw 路由表,旨在使用 .249 网关出去。
ip rule add from 10.20.10.250/32 table secondgw
ip rule add from 10.20.10.251/32 table secondgw
ip rule add from 10.20.10.252/32 table secondgw
ip rule add from 10.20.10.253/32 table secondgw
ip rule add from 10.20.10.254/32 table secondgw

添加到开机执行脚本

chmod +x /etc/sysconfig/network-scripts/route-em1-secondgw.sh
echo "/etc/sysconfig/network-scripts/route-em1-secondgw.sh" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local

执行脚本生效

bash /etc/rc.d/rc.local

测试附加 IP 是否可用

curl --interface 10.20.10.250 ifconfig.me

测试附加 IP 是否走了 .249 网关(看第一跳到的哪个网关)

mtr -s 10.20.10.250 8.8.8.8
0

评论区