wesleyflagon 2018-05-06 14:03 采纳率: 0%
浏览 1433
已采纳

求Linux大神看一个网络问题,forward转发不成功

问题发生在一个Openstack的控制节点(兼网络节点)。我的网络由一个VM、两个路由器组成。结构如下:

VM -> Router1 -> Router2 -> External network

其中第一个路由器做SNAT,没有问题;第二个路由器是用来转发的,但是转发不成功,就是下面的qrouter-d3dcb2df-f3ca-4079-a434-491b23f84b5a。不会发贴,贴截图了。。。
图片说明
图片说明
图片说明
图片说明
图片说明

  • 写回答

7条回答 默认 最新

  • wesley-fly 2018-05-08 09:43
    关注

    你的方案

    看到你的描述了,如你的拓扑图,VM(192.168.1.x) -> (LAN:192.168.1.1)Router1(WAN:10.10.52.X) -> Router2 -> (10.10.52.X)External network,指出几点我**个人认为**有问题的点:
    1.如你所说Router1做SNAT,Router2透传转发,首先如果Router1只做SNAT,那么VM的数据包文能到Externel network,但是Externel network回应的报文无法到达VM,还需要在Router1上做DNAT;
    2.以我理解,VM的IP使用Router1的LAN端私网IP,假设是192.168.1.x网段,Router1的WAN端IP需要与External network同网段,假设为10.10.52.x,此时要实现VM到Externel network的互通,有两种做法:
    《1》将Router2配置为Bridge模式,数据包在二层进行透传,但是由于Router2所处的位置,需要消耗一个10.10.52.x的IP地址,具体方式是在Router2上新建一个虚拟网桥接口如br0,讲Router2的LAN和WAN都加入网桥(brctl 命令),最后为br0配置需要消耗的哪个10.10.52.X的IP,并且启动此接口br0;缺点:基本不可能为Router2配置一个公网IP地址,很容易冲突,解决办法是将Router2移动到Router1之前,让Router2消耗私网IP(192.168.1.x),即拓扑变为VM(192.168.1.x) -> Router2(br0:192.168.1.x)->(LAN:192.168.1.1)Router1(WAN:10.10.52.X) -> (10.10.52.X)External network,或者直接去掉Router2更好;
    《2》将Router2配置为NAT模式,(但是感觉没必要),拓扑变为VM(192.168.1.x) -> (LAN:192.168.1.1)Router1(WAN:192.168.2.x)-> (LAN:192.168.2.1)Router2(WAN:10.10.52.x)->-> (10.10.52.X)External network,这种Router1和2都要做SNAT/DNAT或者MASQUERADE,并且Router和21的默认路由需要配置正确

    大概就是这样了,不知道我理解的对不对

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

悬赏问题

  • ¥15 有没有能解决微信公众号,只能实时拍照,没有选择相册上传功能,我不懂任何技术,,有没有给我发个软件就能搞定的方法
  • ¥15 Pythontxt文本可视化
  • ¥15 如何基于Ryu环境下使用scapy包进行数据包构造
  • ¥15 springboot国际化
  • ¥15 搭建QEMU环境运行OP-TEE出现错误
  • ¥15 Minifilter文件保护
  • ¥15 有限元软件终止时间超过设定值
  • ¥15 onvif框架引用一直报错
  • ¥50 C#和C++混合编程,使用CLR托管,报错System.Runtime.InteropServices.SEHException
  • ¥30 .NET使用sqlite发布后报错