局域网模拟两个IP连接服务器的核心思路,是让同一台物理机或同一网络内产生两个不同源IP,再用虚拟机桥接、双网卡、IP别名配合curl绑定本地地址来实现,其中虚拟机方案最直观、最接近真实双客户端。
一台电脑怎么模拟两个ip访问服务器:先解决源地址绑定
服务器判断“两个IP连接”,看的是TCP连接四元组里的源IP、源端口、目标IP、目标端口,只要源IP不同,服务器就会认为是两个不同来源,所以模拟的核心不是改服务器,而是让客户端发出连接时带上两个不同的源IP。
要做到这一点,本机必须先拥有两个可用IP,可用方式大致有三种:
- 虚拟机方案:创建两台虚拟机,每台分配独立IP,最接近真实环境。
- 双网卡方案:物理机插两块网卡,分别配置不同IP。
- IP别名方案:在同一块网卡上绑定多个IP,无需额外硬件。
行业共识认为,本地模拟多IP访问是压测前成本最低的方式,不需要直接购买额外公网资源。
局域网内用虚拟机模拟两个ip连接服务器的完整步骤
虚拟机是最推荐的入门方案,下面以局域网服务器地址为192.168.1.100,宿主机为普通Windows电脑举例。
搭建两台虚拟机并设置桥接
- 在VMware Workstation中创建两台虚拟机,系统随意,Linux最小化安装即可。
- 将两台虚拟机的网络适配器都改成“桥接模式”。
- 桥接模式下,虚拟机直接从局域网路由器获取IP,和宿主机处于同一网段。
分别配置静态IP
假设路由器网段是192.168.1.0/24,在虚拟机1上设置:
ip addr add 192.168.1.101/24 dev eth0
虚拟机2上设置:
ip addr add 192.168.1.102/24 dev eth0
如果虚拟机用的是Ubuntu Server,可以编辑/etc/netplan/00-installer-config.yaml,写入不同静态IP后执行netplan apply。
分别向服务器发起连接
在虚拟机1执行:
curl http://192.168.1.100/login
在虚拟机2执行:
curl http://192.168.1.100/login
服务器此时会记录到两条不同源IP的访问记录,查看方法:
ss -tan | grep :80
输出中能看到192.168.1.101和192.168.1.102两个不同来源。
验证模拟结果
在服务器上抓包,确认两个IP都真实到达:
tcpdump -i any host 192.168.1.100 and tcp port 80
抓包结果里源IP不同,说明模拟成功,这个方式适合测试负载均衡策略、黑名单规则、会话隔离、限流阈值等场景。
不用虚拟机的局域网模拟两个ip连接服务器方法:IP别名与双网卡
如果不想开虚拟机,也可以直接给物理机添加第二个IP,业内专家指出,判断两个连接是否来自两个客户端,唯一可靠依据是源IP和源端口组合,所以只要本机绑定两个IP并强制指定出口地址,服务器就会识别为两个来源。
Windows添加IP别名
以“以太网”适配器为例,用管理员身份运行命令:
netsh interface ipv4 add address "以太网" 192.168.1.201 255.255.255.0 netsh interface ipv4 add address "以太网" 192.168.1.202 255.255.255.0
删除命令:
netsh interface ipv4 delete address "以太网" 192.168.1.201
Linux添加IP别名
Linux下可以给eth0添加两个同网段IP:
ip addr add 192.168.1.201/24 dev eth0 ip addr add 192.168.1.202/24 dev eth0
或者使用旧式别名写法:
ifconfig eth0:1 192.168.1.201 netmask 255.255.255.0 up ifconfig eth0:2 192.168.1.202 netmask 255.255.255.0 up
用curl指定本地出口IP
绑定多个IP后,默认流量走第一个IP,要模拟第二个IP访问服务器,需要强制指定本地地址:
curl --interface 192.168.1.201 http://192.168.1.100/ curl --interface 192.168.1.202 http://192.168.1.100/
这样同一个curl程序就能模拟两个客户端。wget也有类似参数:
wget --bind-address=192.168.1.201 http://192.168.1.100/ wget --bind-address=192.168.1.202 http://192.168.1.100/
双网卡需要注意路由跃点
如果物理机插了两块网卡,都接同一个局域网交换机,Windows和Linux默认可能只走其中一块网卡出流量,即便两块网卡都配置了IP,发起连接时路由表也只会优选一个接口。
解决办法是给两块网卡设置不同跃点数,或者使用策略路由,Windows下可以在“网络和共享中心”里分别调整两块网卡接口的跃点数,Linux下可以用
ip rule和ip route做源地址策略路由。
如果不做路由调整,双网卡方案有时看起来配置了两个IP,但服务器端仍然只看到一个来源,这个坑在真实测试中经常出现。
多ip服务器租用价格和本地模拟的取舍
很多人一开始会直接搜索多ip服务器租用价格,想买现成的多IP环境做测试,其实早期功能验证完全能靠本地模拟解决,成本几乎为零,真机测试通常是在本地逻辑跑通之后才需要做的事。
本地模拟的好处很明显:
- 不需要花出租用费用
- 不需要等待服务商开IP工单
- 可以随时改IP、改网段、改端口
- 方便复现问题
但本地模拟也有局限,比如无法模拟跨地域线路质量、公网NAT策略、运营商级防火墙行为,一旦涉及到公网真实访问,才需要租用多IP服务器。
有些用户会去了解广州服务器多ip租用资源,目的可能是做华南区域线路测试,这类资源一般按额外IP数量收费,月租从几十元到上百元不等,不同服务商策略差异较大,预算有限时,先用虚拟机把本地逻辑测透,再去租用真实多IP出口,是投入产出比更高的路径。
模拟之后怎么确认结果真实有效
模拟两个IP连接服务器,不是绑了IP就完事,要确认服务器端确实收到两个不同来源,建议按下面顺序检查:
- 客户端执行
ip a或ipconfig,确认两个IP都已生效。 - 用
curl --interface分别请求服务器,观察服务器返回状态。 - 在服务器上执行
ss -tan | grep 目标端口,看是否存在两个不同源IP的连接。 - 用
tcpdump抓包,检查IP头的源地址是否真的是两个不同值。 - 如果服务器有Web访问日志,直接查看
access_log里的IP字段。
如果发现服务器只记录到一个IP,大概率是本地路由没有强制从第二个IP出去,或者是虚拟机NAT模式把多个虚拟IP转换成了宿主机的同一个IP,桥接模式能绕过这个问题,所以虚拟机模拟更推荐用桥接。
Docker macvlan模拟多IP的补充思路
如果熟悉Docker,也可以在局域网内用macvlan网络让容器直接从物理路由器获取IP,这样一台宿主机就能快速生成两个甚至多个独立IP的“客户端”。
创建macvlan网络:
docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eth0 macnet
启动两个指定不同IP的容器:
docker run -it --rm --network macnet --ip 192.168.1.101 alpine sh docker run -it --rm --network macnet --ip 192.168.1.102 alpine sh
在容器内分别curl服务器即可,Docker的macvlan方案对宿主机网卡有要求,需要宿主机网卡开启混杂模式,部分云服务器和办公网络可能不支持,但普通物理局域网里多数可以跑通。
- 两个IP配在同一网卡上。 必须用
curl --interface显式指定,否则默认只走主IP。 - 虚拟机用NAT模式。 两个虚拟机可能共享同一个宿主机NAT出口IP,服务器看到的是同一个来源,改成桥接。
- 双网卡同网段。 路由跃点冲突,导致第二个网卡不发送流量,调整跃点数或用静态路由。
- 服务器只记录一个IP。 先抓包确认客户端发出的包源IP是否真的变了,再检查服务器是否做了NAT映射或反向代理。
局域网模拟两个IP连接服务器,本质就是给客户端创造两个不同的源IP,虚拟机桥接是最省心的方法,IP别名加curl --interface是最轻量的方法,跑通之后,再决定是否需要购买真实多IP服务器资源,就能避免花冤枉钱。
Q&A
局域网模拟两个ip连接服务器需要两块网卡吗?
不需要,一块物理网卡可以绑定多个IP,配合curl --interface或wget --bind-address即可模拟两个不同源IP,虚拟机方案也只需要宿主机的一块物理网卡,双网卡只有在需要物理隔离或不同网段时才用。
一台电脑能同时用两个ip访问同一个服务器吗?
能,只要给这台电脑绑定两个同网段或不同网段的IP,并分别为两个连接指定不同的本地出口地址,服务器就会记录到两个不同来源IP,Linux下用ip addr add添加IP,再用curl --interface指定即可,不需要重启网络服务。
虚拟机模拟两个ip访问服务器会不会被交换机隔离?
不会,桥接模式下,虚拟机发出的ARP请求和IP数据包直接进入局域网交换机,交换机只根据MAC和IP转发,不会区分虚拟机还是物理机,只要两个虚拟机配置了不同的IP和MAC,服务器和交换机都会认为是两台真实设备。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/670862.html





