我想要做的是通过裸机PC中的Open vSwitch向服务器发送数据包,而不是在VM上 .
为此,我正在考虑遵循结构 .
Server PC
-----------------------------
| ------ |
| |SERVER| |
| ------ |
| |veth2 (192.168.0.152)|
| | |
| |veth1 |
| ----------- |
| | OVS (br0) | |
| ----------- |
| |eth0 (192.168.0.157) |
-------|---------------------
|
-------|--------
| Client PC |
----------------
为了制造上述环境
,我做了以下命令 .
- 创建ovs桥
ovs-vsctl add-br br0
- 使eth0成为ovs端口
ovs-vsctl add-port br0 eth0
- 创建veth链接
ip link add veth1 type veth peer name veth2
ifconfig veth1 up
ifconfig veth2 up
- 最后,我静态设置客户端ARP表,因为ovs端口(eth0)无法发送ARP回复
之后,我尝试在客户端和服务器之间进行TCP连接 .
我检查了客户端的SYN数据包是否发送到veth2 . 但是,服务器无法接收该数据包 .
我猜不出有什么不对,我怎么能做出上述环境 .
1 回答
我找到了解决方案 .
通过使用网络命名空间,我可以创建逻辑网络堆栈 .
http://man7.org/linux/man-pages/man8/ip-netns.8.html http://blog.scottlowe.org/2013/09/04/introducing-linux-network-namespaces/
在这之后,我可以得到以下结构