新购买了一台 H3C 的 SMB 路由器 H3C ER5200,替换下原有的路由网关并重新配置后,发现使用公网端口转发的内网WEB服务器在外网无法访问。着手检查 ER5200 的配置页面,显示Web 服务器的 ARP 冲突。接着想起来这台服务器做了 Intel 的双网卡绑定,绑定完成后共用了一个私网地址,并分配了一个新的虚拟MAC 地址,且与两块网卡的物理 MAC 地址不同。但是ER5200路由器却从底层判断是ARP攻击,三个MAC地址同时使用了一个IP地址。

打电话给 H3C 的技术支持,技术支持给出的解决方案是,取消防攻击菜单下的报文源认证,关闭以下选项:“启用基于静态路由的报文源认证功能”;“启用基于ARP绑定、DHCP分配ARP防护下的报文源认证功能”;“启用基于动态ARP的报文源认证功能”。关闭之后,测试外网可以访问。
过了一天,发现这台 Web 服务器外网访问非常不稳定,时好时坏。可是内网中另一台没有设置端口转发但配置了 NAT One to One 的服务器却是正常的。想到可能是因为 ER5200 设置了 MAC 访问策略和ARP绑定的原因,于是打算修改一下配置,奇葩的是路由的VPN还没有配置好,3389也没有做虚拟服务器的端口转发,路由器甚至没有开外网访问,根本无法远程管理。只有这台 NAT 的 One to One 服务器开着SSH。

硬着头皮登录了一下 SSH,先 telnet 了 ER5200,发现这台路由器的命令行功能简直少到没朋友,只能看硬件配置、清除后台的访问ACL,以及恢复出厂设置。于是我想到透过 SSH 转发内网的 3389 到本地。搜索了一下具体使用方法(http://manas.tungare.name/blog/ssh-port-forwarding-on-mac-os-x/),最后操作如下:

先用 SSH 建立一个主机内网的隧道,同时转发到本地的 9999 端口,这里我使用的是 iTerm2:
Devin$ ssh -L 9999:192.168.0.2:3389 ssh_user@mydomain.com

回车后输入密码,成功登陆,保持iTerm2 窗口不被关闭,然后打开微软的Remote Desktop Client,地址加上 9999 端口:

remote desktp client

回车,果然通了。剩下就是通过浏览器修改H3C ER5200配置,将这台做了网卡绑定的服务器的两块网卡物理 MAC 地址添加到 H3C ER5200 的 MAC 访问策略中。修改好之后,测试 Web 服务器已经正常。