Linux多IP绑定需四层联动实现业务隔离:①同网段临时/永久绑定IP;②跨网段配策略路由隔离流量;③服务显式绑定指定IP避免监听冲突;④防火墙按IP精细化控制。任一层缺失均导致隔离失效。

Linux多IP绑定不是简单地给网卡加几个地址,关键在业务隔离——让不同服务走不同IP、不同路由、互不干扰。配置错一步,可能引发端口冲突、流量误导或安全暴露。
一、基础多IP绑定(同网段)
适用于Web、FTP等需要多个公网IP对外提供服务的场景,所有IP在同一子网内。
以ens33为例,主IP为192.168.1.10/24,新增192.168.1.11和192.168.1.12:
- 临时添加(重启失效):
ip addr add 192.168.1.11/24 dev ens33
ip addr add 192.168.1.12/24 dev ens33 - 永久生效(CentOS/RHEL):编辑/etc/sysconfig/network-scripts/ifcfg-ens33:0,内容如下:
DEVICE=ens33:0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.11
NETMASK=255.255.255.0
再建ifcfg-ens33:1配第二个IP - Ubuntu/Debian用/etc/netplan/*.yaml,在addresses:下追加列表:
- 192.168.1.11/24
- 192.168.1.12/24
二、跨网段多IP + 策略路由(业务级隔离核心)
当不同业务需走不同出口(如:监控走专线、用户访问走BGP、后台API走内网),仅绑IP不够,必须配合策略路由(policy routing)。
假设:
• 主网卡ens33:192.168.1.10/24(默认路由)
• 新增IP10.10.20.5/24(属10.10.20.0/24网段)
• 该网段网关为10.10.20.1,专用于后台服务通信
- 先绑定IP:
ip addr add 10.10.20.5/24 dev ens33 - 新建路由表(如叫admin_rt),编辑/etc/iproute2/rt_tables:
200 admin_rt - 配置该表的路由和规则:
ip route add 10.10.20.0/24 dev ens33 src 10.10.20.5 table admin_rt
ip route add default via 10.10.20.1 table admin_rt
ip rule add from 10.10.20.5/32 table admin_rt
ip rule add to 10.10.20.5/32 table admin_rt - 应用后,所有从10.10.20.5发出或发往它的流量,自动走admin_rt表,与主路由完全隔离
三、服务绑定指定IP(避免监听冲突)
多IP不等于服务自动分流。Nginx、MySQL、SSH等必须显式指定监听地址,否则默认监听0.0.0.0,所有IP都响应,失去隔离意义。
- Nginx:在server块中写
listen 192.168.1.11:80;,而非listen 80; - MySQL:修改my.cnf中
bind-address = 10.10.20.5,只允许后台系统通过该IP连接 - SSH:编辑/etc/ssh/sshd_config,设
ListenAddress 192.168.1.10(运维管理IP),禁用其他IP接入 - 验证是否生效:
ss -tlnp | grep :80查看监听的是哪个IP
四、防火墙按IP精细化控制(安全兜底)
IP绑定+策略路由+服务绑定后,还需iptables/nftables按源/目标IP做访问控制,实现真正业务隔离。
- 只允许特定IP访问管理端口:
iptables -A INPUT -d 10.10.20.5 -p tcp --dport 22 -s 10.10.10.0/24 -j ACCEPT
iptables -A INPUT -d 10.10.20.5 -p tcp --dport 22 -j DROP - 禁止用户区IP访问后台网段:
iptables -A FORWARD -s 192.168.1.0/24 -d 10.10.20.0/24 -j REJECT - 使用ipset管理IP组更高效,例如建立admin_hosts集合,规则直接引用
业务隔离不是堆IP,而是IP、路由、服务配置、防火墙四层联动。每层漏一个,隔离就形同虚设。实际部署时,建议先用tcpdump -i ens33 host 10.10.20.5验证流量路径,再上线服务。










