通过路由器上的静态路由的stream量不会找回来

这一个错误我现在几天,我找不到解决scheme。 对不起,奇怪的标题。 这不是我的主要工作领域,目前我想不出一个更好的标题。

一些事实:

  • 我是一个共享OpenStack环境的用户
  • 我看不到或更改下层OpenStack设置的configuration
  • VM通过安装python-minimal的cloud-init进行configuration,创build一个用户并执行apt-get dist-upgrade 。 除此之外,它们是通过使用静态IP的DHCP进行configuration的。
  • 我没有在节点上configurationiptables规则。

所以,让我来描述一下设置:

我创build了一个networking+子网(10.0.30.10/24)。 networking连接到一个拥有两条静态路由的路由器。 我还创build了两个拥有“主”IP(node0:10.0.30.10/24和node1:10.0.30.11/24)的虚拟机(两个都是ubuntu 16.04.2 LTS),另一个IP位于不同的子网(node0:10.10 .10.2 / 24和node1:10.10.20.2/24)。

我还在路由器上configuration了两条静态路由,将10.10.10.0/24所有内容转发给node0,将10.10.20.0/24所有内容转发给node1。

 +----------------------------------------+ | test-router | | IP: 10.0.30.1/24 | | | | Static routes: | | - destination_cidr = "10.10.10.0/24" | | next_hop = "10.0.30.10" | | - destination_cidr = "10.10.20.0/24" | | next_hop = "10.0.30.11" | +----------------------------------------+ | | +------------------------+ | test-network | | Subnet: 10.0.30.0/24 | | Router: 10.0.30.1 | +------------------------+ | | | +---------------------+ | | node0 | +-------+ IP: 10.0.30.10/24 | | | 10.10.10.2/24 | | +---------------------+ | | +---------------------+ | | node1 | +-------+ IP: 10.0.30.11/24 | | 10.10.20.2/24 | +---------------------+ 

两个虚拟机启动后,我可以观察以下内容:

节点0

 $ route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default 10.0.30.1 0.0.0.0 UG 0 0 0 ens3 10.0.30.0 * 255.255.255.0 U 0 0 0 ens3 169.254.169.254 10.0.30.100 255.255.255.255 UGH 0 0 0 ens3 $ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1400 qdisc pfifo_fast state UP group default qlen 1000 link/ether fa:16:3e:31:67:52 brd ff:ff:ff:ff:ff:ff inet 10.0.30.10/24 brd 10.0.30.255 scope global ens3 valid_lft forever preferred_lft forever inet 10.10.10.2/24 scope global ens3 valid_lft forever preferred_lft forever inet6 fe80::f816:3eff:fe31:6752/64 scope link valid_lft forever preferred_lft forever $ ping -c10 10.10.20.2 PING 10.10.20.2 (10.10.20.2) 56(84) bytes of data. From 10.0.30.1: icmp_seq=2 Redirect Host(New nexthop: 10.0.30.11) From 10.0.30.1: icmp_seq=3 Redirect Host(New nexthop: 10.0.30.11) --- 10.10.20.2 ping statistics --- 10 packets transmitted, 0 received, 100% packet loss, time 8999ms $ route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default 10.0.30.1 0.0.0.0 UG 0 0 0 ens3 10.0.30.0 * 255.255.255.0 U 0 0 0 ens3 10.10.10.0 * 255.255.255.0 U 0 0 0 ens3 169.254.169.254 10.0.30.100 255.255.255.255 UGH 0 0 0 ens3 

同时在node1上

 # tcpdump icmp tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on ens3, link-type EN10MB (Ethernet), capture size 262144 bytes 09:25:55.451876 IP 10.0.30.10 > 10.10.20.2: ICMP echo request, id 1271, seq 1, length 64 09:25:55.451928 IP 10.10.20.2 > 10.0.30.10: ICMP echo reply, id 1271, seq 1, length 64 09:25:56.451467 IP 10.0.30.10 > 10.10.20.2: ICMP echo request, id 1271, seq 2, length 64 09:25:56.451503 IP 10.10.20.2 > 10.0.30.10: ICMP echo reply, id 1271, seq 2, length 64 09:25:57.451185 IP 10.0.30.10 > 10.10.20.2: ICMP echo request, id 1271, seq 3, length 64 09:25:57.451218 IP 10.10.20.2 > 10.0.30.10: ICMP echo reply, id 1271, seq 3, length 64 [..] 09:26:03.450910 IP 10.0.30.10 > 10.10.20.2: ICMP echo request, id 1271, seq 9, length 64 09:26:03.450943 IP 10.10.20.2 > 10.0.30.10: ICMP echo reply, id 1271, seq 9, length 64 09:26:04.450988 IP 10.0.30.10 > 10.10.20.2: ICMP echo request, id 1271, seq 10, length 64 09:26:04.451022 IP 10.10.20.2 > 10.0.30.10: ICMP echo reply, id 1271, seq 10, length 64 

所以,我的结论是:node1收到stream量,但是回复没有到达node0。

如果我在node1上启动一个web服务器,并尝试通过静态路由IP进行curl,则会发生同样的情况。 我看到node1上有stream量进入,但是响应从来没有到达node0。

另一方面:从节点0到arping的arping工作:

 # arping -c3 -i ens3 10.10.20.2 ARPING 10.10.20.2 42 bytes from fa:16:3e:a9:b4:bc (10.10.20.2): index=0 time=7.933 msec 42 bytes from fa:16:3e:a9:b4:bc (10.10.20.2): index=1 time=2.797 msec 42 bytes from fa:16:3e:a9:b4:bc (10.10.20.2): index=2 time=9.703 msec --- 10.10.20.2 statistics --- 3 packets transmitted, 3 packets received, 0% unanswered (0 extra) rtt min/avg/max/std-dev = 2.797/6.811/9.703/2.929 ms 

如果我使用“主”IP, 一切工作正常。

我试过的东西(在两个节点上):

  • 设置/proc/sys/net/ipv4/conf/ens3/rp_filter20 (因为我绝望)。 没有改变。
  • /proc/sys/net/ipv4/ip_forward1 。 没有改变。
  • 在两个节点/proc/sys/net/ipv4/conf/ens3/log_martians1 。 没有输出通过journalctl -f

编辑:有node0上的输出,如果我ping通过静态IP的node1:

 May 03 11:16:01 node0 kernel: IPv4: Redirect from 10.0.30.1 on ens3 about 10.0.30.11 ignored Advised path = 10.0.30.10 -> 10.10.20.2 

因为我的想法已经用完了,我需要你的帮助。 感谢您花时间查看我的问题!