我试图模拟连接多台机器的L3交换机(在没有VLAN或单个VLAN中 . )然后我想配置交换机转发数据包,我没有运气 .
我的系统配置:
-
主机操作系统:Ubuntu 18.04 .
-
打开vSwitch 2.9.0
-
客户端计算机:VirtualBox 5.2.20中的UBuntu 18.04客户端
我想做什么
(基本上模仿中间人攻击 . )
-
VM1,VM2和VM3连接到虚拟交换机或网桥(BR0) .
-
VM1将数据包(例如,HTTP GET请求)发送到VM3 .
-
BR0拦截它并将其转发给VM2 .
-
VM2将响应发送给VM1 .
-
BR0将其转发给VM1,就像VM3响应一样 .
我做了什么:
-
ovs-vsctl add-br br0
:创建一个桥(BR0) -
创建使用br0作为网桥的VM1,2,3 .
-
在VM2和VM3中运行不同的Web服务器(例如,VM2在根目录下返回"hello",VM3返回"HELLO" . )
-
配置每台机器内的IP地址,比如说
-
VM1:192.168.0.2
-
VM2:192.168.0.3
-
VM3:192.168.0.4
-
ovs-ofctl --strict add-flow br0 priority=1,tcp,nw_dst=192.168.0.4,actions=mod_nw_dst=192.168.0.3
:添加修改目标IP的流程 . 捕获包到VM3并将它们转发到VM2(我希望 . ) -
ovs-ofctl --strict add-flow br0 priority=1,tcp,nw_src=192.168.0.3,actions=mod_nw_src=192.168.0.4
:添加修改源IP的流程 . 使响应来自VM3 .
我看到了什么:
然而,显然,它没有成功 .
-
我可以
ping
从一个到另一个 . -
我可以
cURL
从一个到另一个 . -
但是,
mod_nw_dst
命令无效 . 从VM1,我只能看到VM3的原始响应,我想转发给VM2 .
我搜索了很多,并发现了很多关于跨VLAN转发的文章,但在单个网桥中却不是这样 . 我的实施不正确吗?否则,它不是预期的功能吗?在这种情况下,模仿这些事情的最佳方法是什么?
提前致谢!
编辑: ovs-ofctl dump-flows br0
的结果只是上面的命令 .
cookie=0x0, duration=157469.378s, table=0, n_packets=0, n_bytes=0, priority=1,tcp,nw_src=192.168.0.3 actions=mod_nw_src:192.168.0.4 cookie=0x0, duration=157462.433s, table=0, n_packets=0, n_bytes=0, priority=1,tcp,nw_dst=192.168.0.4 actions=mod_nw_dst:192.168.0.3 cookie=0x0, duration=157534.866s, table=0, n_packets=0, n_bytes=0, priority=0 actions=NORMAL