不少人把”桥接模式”的路由器当代理IP用,以为流量”经过”那台设备就能换出口——这种误解几乎都来自一个朴素的想法:流量被中转了,结果就该不一样。但网桥和代理IP实际上工作在完全不同的网络层,处理的也是完全不同的对象,把它们当同一件事,配置做得再认真也跑不出想要的效果。
网桥到底在做什么
网桥是二层网络设备。它只关心数据帧(frame)这一层的东西:从某个端口收进来,看一眼目标 MAC 地址,决定从哪个端口转发出去。网桥不会修改数据帧里的 IP 地址,也不会去”打开”包看里面是什么协议,它的工作面是”链路层”,对网络层和传输层完全透明。正因如此,网桥在连接两个局域网段、扩展网络覆盖、做链路聚合这些场景里很好用。
代理IP做的是什么
代理IP工作在三层(网络层)甚至更高。它会”打开”客户端的连接请求,重新构造或转发这个请求,并把自己的出口地址当作请求的新来源交给目标站。目标站看到的是代理IP出口的地址,而不是客户端的地址。代理IP对应用层是可见的,它的存在会改变请求的源信息和某些头部字段,这是它和网桥最本质的差异。
两者为什么会被混为一谈
误区往往出在”桥接模式”上。家用路由器有”路由模式”和”桥接模式”两种:路由模式下路由器当三层网关,管 IP 分发;桥接模式下路由器只做二层透传,把光猫或上级路由直接接到下游 LAN。有些用户买了支持代理IP功能的路由器,配置时选成了桥接模式,结果发现”挂上了代理IP但出口没变”——因为桥接模式下,路由器的代理IP功能根本不参与转发,流量从 WAN 到 LAN 是直通的,代理IP那一层被绕开了。
常见做法:在路由器管理界面里把”桥接模式”打开,期望代理IP功能同时生效,结果是流量直通、出口没变。
更稳妥的做法:需要代理IP出口时让路由器处于路由模式,由它做三层分发与代理IP出口;只在确实需要纯二层透传时才选桥接模式。两者功能不冲突,但不该同时指望它兼得。
判断当前到底是桥接还是代理IP在做事,最直接的方法是抓包看 MAC 和 IP 是否变化。网桥不改变 MAC 也不改变 IP(除了桥自身的 MAC 转发),代理IP会让目标站看到的源 IP 变成出口地址。把一台设备的”出口前”和”出口后”两个抓包点对比一下,结果一目了然。
问:用了支持代理IP的路由器,是不是任何模式都能换出口?答:只有路由器自身工作在路由模式并把代理IP出口配置在 WAN/路由这一侧时,流量才会真的经代理IP换出口。桥接模式下路由器只是二层透传,代理IP那一跳被完全跳过。
