号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注:网络工程师俱乐部
你可能见过这样的场景:
一台服务器配了多个 IP 地址一台防火墙接口配置了主备地址或者你自己网卡配了多个地址,甚至跨多个网段然后你发起访问时,源 IP 却不是你“以为的”那个。
这到底是怎么回事?多个 IP 地址并存时,到底哪个会被拿来用?
一、先搞清楚:什么叫“一台设备多个 IP”?常见的多 IP 配置方式有几种:
同一接口多个 IP(主地址 + 次地址 / secondary)多个物理/虚拟接口 各自配置一个 IP(如 eth0、eth1)绑定多个 VLAN 接口,每个 Vlanif 一个地址桥接设备或防火墙设备,不同 zone、不同逻辑接口设置多个地址这些都属于“同设备多个 IP”。
如果目标地址和某个 IP 在同一网段,系统倾向于选这个 IP 作为源地址。
比如:
本地有 IP 192.168.1.10 和 10.0.0.10访问目标是 192.168.1.100那通常会选 192.168.1.10 作为源地址原则2:路由匹配优先如果目标不在任何本地子网,系统就查路由表,选择“最匹配的下一跳”。
然后再看 哪个 IP 所属接口能到这跳,用这个接口的 IP 当源地址。
★所以你以为绑定了“一个主地址”,但只要下一跳是另一个网段,源 IP 可能就不是你预期的。
原则3:主地址不一定优先很多人以为主地址(primary IP)一定会优先,实则不然。
举个例子:
interface GigabitEthernet0/0 ip address 192.168.10.1 255.255.255.0 ip address 192.168.10.2 255.255.255.0 secondary
访问目标是 192.168.10.254,可能两个地址都能匹配上。
此时,大多数系统(如华为、Linux)默认会选主地址 192.168.10.1,但在某些路由场景(特别是策略路由或NAT配置场景下),结果可能会变。
三、入站连接时,哪个 IP 被选中?这个就取决于“客户端连的是哪个 IP”了。
一台设备多个 IP,只要你监听的是 0.0.0.0 或者 ::,那 哪个 IP 都能接入服务端收到连接时,用的 就是客户端发来的目标地址所以入站访问哪个 IP,取决于外部访问者怎么连你。
四、什么时候多个 IP 会“打架”?不小心 NAT 配错了源地址,公网回不来
负载均衡部署多个 IP,却只注册了其中一个到 DNS
双出口策略路由没写好,出错包用错源地址,ISP 拒收
这些都和“源 IP 选择机制”有关。
五、实际工程中如何控制哪个 IP 被用?1. 设置 source-ip 策略
在华为设备上,可以指定某些协议/业务使用指定源 IP:
snmp-agent local-engineid 800007DB03000000000000snmp-agent sys-info version v2csnmp-agent target-host trap address 10.1.1.100 params securityname public v2csnmp-agent trap source GigabitEthernet1/0/1
比如上面就指定 SNMP 的 trap 源口为 Gi1/0/1。
2. 靠策略路由控制源地址
可以写 PBR(Policy Based Routing),强制某些目标走特定接口,从而绑定源 IP。
3. NAT 源地址控制
做 NAT 时,别忘了指定 outbound IP 否则可能是默认接口地址:
ip nat inside source list 10 interface GigabitEthernet0/0 overload
这里就会用 Gi0/0 的 IP 地址做 NAT。
六、小结原创:老杨丨11年资深网络工程师,更多网工提升干货,请关注:网络工程师俱乐部
转载请注明来自海坡下载,本文标题:《多个IP地址如何实现负载均衡(一台设备多个 IP)》
京公网安备11000000000001号
京ICP备11000001号
还没有评论,来说两句吧...