员工私改IP蹭网还查错人?华为交换机IPSG让报文只认绑定表

内网里有类事特别气人:有人把本机 IP 一改,冒用同事的地址上网、访问系统,出了问题日志里记的还是被冒充的那台电脑,追责都追错人;也有人改个 IP 就想绕过"谁能上外网"的限制蹭网。这些问题的根子在于:交换机转发默认只看 IP,不核对这个 IP 是不是真的属于这台电脑、这个网口。IPSG(IP Source Guard,IP 源防攻击)就是补这一刀的——在接入交换机连接终端的接口上对 IP 报文做检查,只有符合绑定表(IP、MAC、接口三要素)的报文放行,不符合的直接丢弃。本篇按华为官方典型配置案例把整套双机配置走一遍:核心交换机做网关并用 ACL 划定谁能出外网,接入交换机做静态绑定并开启 IPSG 检查。

本文的组网需求、配置思路与命令步骤,整理自华为官方发布的典型配置案例,参数可直接参考使用。

组网需求

某公司网络里,用户网关部署在核心交换机 Core 上,Core 已经用 ACL 指定只有固定主机可以访问外网(本例放行 10.0.0.2 和 10.0.0.3 两台)。接入交换机 ACC 下挂的 Host 均以静态方式配置 IP 地址。管理员希望 Host 只能使用分配到的固定 IP 地址上网,不允许私自修改 IP 地址非法获取外网访问权限。

数据规划:Core 与 ACC 之间用 VLAN 10 互联;ACC 的 GE0/0/1、GE0/0/2 接主机,GE0/0/3 上联 Core;主机网关为 VLANIF10 的 10.0.0.1/24。其中 Host_1(IP 10.0.0.2)在放行名单内,Host_2(IP 10.0.0.5)不在。

配置思路

整个案例分三块:

  • 在用户网关 Core 上配置 ACL,只允许 IP 地址为 10.0.0.2 和 10.0.0.3 的主机访问外网;
  • 在接入交换机 ACC 上创建 Host 的静态绑定表,固定 IP 和 MAC 的绑定关系;
  • 在接入交换机 ACC 上连接用户主机的接口使能 IPSG,使 Host 只能使用管理员分配的固定 IP 地址上网——效果上 Host_1 可以正常访问外网,Host_2 无法访问外网,并且 Host_2 也无法通过私自修改 IP 地址来访问外网。

操作步骤

一、在Core上配置ACL,只允许指定主机访问外网

<HUAWEI> system-view
[HUAWEI] sysname Core
[Core] vlan batch 10
[Core] interface gigabitethernet 0/0/1 
[Core-GigabitEthernet0/0/1] port link-type trunk
[Core-GigabitEthernet0/0/1] port trunk allow-pass vlan 10
[Core-GigabitEthernet0/0/1] quit
[Core] interface vlanif 10   //配置网关地址
[Core-Vlanif10] ip address 10.0.0.1 255.255.255.0
[Core-Vlanif10] quit
[Core] acl number 3001   //配置ACL
[Core-acl-adv-3001] rule permit ip source 10.0.0.2 0
[Core-acl-adv-3001] rule permit ip source 10.0.0.3 0
[Core-acl-adv-3001] rule deny ip source 10.0.0.0 0.0.0.255
[Core-acl-adv-3001] quit
[Core] traffic classifier c1   //配置基于ACL的流分类
[Core-classifier-c1] if-match acl 3001
[Core-classifier-c1] quit
[Core] traffic behavior b1   //配置流行为
[Core-behavior-b1] permit
[Core-behavior-b1] quit
[Core] traffic policy p1   //配置流策略
[Core-trafficpolicy-p1] classifier c1 behavior b1
[Core-trafficpolicy-p1] quit
[Core] interface gigabitethernet 0/0/2
[Core-GigabitEthernet0/0/2] traffic-policy p1 outbound   //应用流策略
[Core-GigabitEthernet0/0/2] quit

这一段在网关侧把出口权限收紧:高级 ACL 3001 先放行 10.0.0.2、10.0.0.3 两台,再拒绝整个 10.0.0.0/24 网段,配上流分类、流行为、流策略,挂在出外网的接口 GE0/0/2 出方向——名单外的地址在网关这里就被拦下。

二、在ACC上创建Host的静态绑定表项

<HUAWEI> system-view
[HUAWEI] sysname ACC
[ACC] vlan batch 10   //配置VLAN,接入主机
[ACC] interface gigabitethernet 0/0/1 
[ACC-GigabitEthernet0/0/1] port link-type access
[ACC-GigabitEthernet0/0/1] port default vlan 10
[ACC-GigabitEthernet0/0/1] quit
[ACC] interface gigabitethernet 0/0/2 
[ACC-GigabitEthernet0/0/2] port link-type access
[ACC-GigabitEthernet0/0/2] port default vlan 10
[ACC-GigabitEthernet0/0/2] quit
[ACC] interface gigabitethernet 0/0/3 
[ACC-GigabitEthernet0/0/3] port link-type trunk
[ACC-GigabitEthernet0/0/3] port trunk allow-pass vlan 10
[ACC-GigabitEthernet0/0/3] quit
[ACC] user-bind static ip-address 10.0.0.2 mac-address 0002-0002-0002 interface gigabitethernet 0/0/1   //创建Host_1的静态绑定表项
[ACC] user-bind static ip-address 10.0.0.5 mac-address 0005-0005-0005 interface gigabitethernet 0/0/2   //创建Host_2的静态绑定表项

每条绑定表项写清三件事:哪台电脑(MAC)、用哪个 IP、从哪个口接入。示例中的 MAC 为官方举例值,换成实际设备的 MAC 即可。

三、在连接主机的接口使能IPSG功能

在连接 Host_1 的 GE0/0/1 接口使能 IPSG 功能:

[ACC] interface gigabitethernet 0/0/1
[ACC-GigabitEthernet0/0/1] ip source check user-bind enable
[ACC-GigabitEthernet0/0/1] quit

在连接 Host_2 的 GE0/0/2 接口使能 IPSG 功能:

[ACC] interface gigabitethernet 0/0/2
[ACC-GigabitEthernet0/0/2] ip source check user-bind enable
[ACC-GigabitEthernet0/0/2] quit

接口检查一开,凡是不匹配绑定表的 IP 报文一律丢弃——IP 改成别人的,报文在接入这一跳就没了。

检查配置结果

在 ACC 上执行 display dhcp static user-bind all 命令,可以查看静态绑定表信息:

[ACC] display dhcp static user-bind all
DHCP static Bind-table:                                                         
Flags:O - outer vlan ,I - inner vlan ,P - Vlan-mapping                          
IP Address                      MAC Address     VSI/VLAN(O/I/P) Interface       
--------------------------------------------------------------------------------
10.0.0.2                        0002-0002-0002  --  /--  /--    GE0/0/1
10.0.0.5                        0005-0005-0005  --  /--  /--    GE0/0/2
--------------------------------------------------------------------------------
Print count:           2          Total count:           2           

在 ACC 上执行 display dhcp static user-bind all verbose 命令,可以查看 IPSG 的状态,effective 表示该条静态表项已生效:

[ACC] display dhcp static user-bind all verbose
DHCP static Bind-table:                                                         
Flags:O - outer vlan ,I - inner vlan ,P - Vlan-mapping                          
--------------------------------------------------------------------------------
 IP Address  : 10.0.0.2                                                         
 MAC Address : 0002-0002-0002                                                   
 VSI         : --                                                               
 VLAN(O/I/P) : --  /--  /--                                                     
 Interface   : GE0/0/1
 IPSG Status : effective   slot: <0>                                            
--------------------------------------------------------------------------------
 IP Address  : 10.0.0.5                                                         
 MAC Address : 0005-0005-0005                                                   
 VSI         : --                                                               
 VLAN(O/I/P) : --  /--  /--                                                     
 Interface   : GE0/0/2
 IPSG Status : effective   slot: <0>                                            
--------------------------------------------------------------------------------
Print count:           2          Total count:           2                      

功能层面的效果:Host_1 可以访问外网,Host_2 无法访问外网;把 Host_2 的 IP 地址改成放行名单里的 10.0.0.3,依然无法访问外网,内网也访问不了——改了 IP 只会更糟,这就是绑定表检查的兜底作用。

配置脚本

Core 的配置脚本:

#
sysname Core
#
vlan batch 10
#
acl number 3001
 rule 5 permit ip source 10.0.0.2 0
 rule 10 permit ip source 10.0.0.3 0
 rule 15 deny ip source 10.0.0.0 0.0.0.255
#
traffic classifier c1 operator or precedence 5
 if-match acl 3001
#
traffic behavior b1
 permit
#
traffic policy p1 match-order config
 classifier c1 behavior b1
#
interface Vlanif10
 ip address 10.0.0.1 255.255.255.0
#
interface GigabitEthernet0/0/1
 port link-type trunk
 port trunk allow-pass vlan 10
#
interface GigabitEthernet0/0/2
 traffic-policy p1 outbound
#
return

ACC 的配置脚本:

#
sysname ACC
#
vlan batch 10
# 
user-bind static ip-address 10.0.0.2 mac-address 0002-0002-0002 interface GigabitEthernet0/0/1
user-bind static ip-address 10.0.0.5 mac-address 0005-0005-0005 interface GigabitEthernet0/0/2
#
interface GigabitEthernet0/0/1
 port link-type access
 port default vlan 10
 ip source check user-bind enable 
#
interface GigabitEthernet0/0/2
 port link-type access
 port default vlan 10
 ip source check user-bind enable
#
interface GigabitEthernet0/0/3
 port link-type trunk
 port trunk allow-pass vlan 10
#
return

注意事项

  • 官方文档对本示例的适用范围有明确交代:个别老版本的盒式形态(如 V100R006C05 版本的 S2700-SI)不支持 IPSG;部分型号在使能 IPv4 报文三层硬转功能后也不支持。落到具体设备前,务必核对你的设备型号与软件版本对 IPSG 的支持情况。
  • 静态绑定表适合终端位置固定、IP 手工分配的办公网;终端经常换口、换人的环境,逐条静态表维护不过来,可结合 DHCP Snooping 生成的动态绑定表做检查。
  • 绑定表要盘清楚再上:IP、MAC、接入接口三要素任何一项登记错误,对应的终端会直接上不了网,宁可先小范围试点。
  • 示例中的地址与 MAC 均为官方举例值,替换为实际值即可,命令结构不用动。

全网 IP 与 MAC 的绑定梳理是细致活,交给贵州诚鑫致达科技做一次完整盘点,比出事后追查省心得多。各厂商设备的命令与默认参数存在差异,操作前请核对你的设备型号与软件版本。

源:华为S系列交换机官方文档