Ubuntu 18.04 IP 转发不会转发通过 GRE 隧道接收的数据包

Ubuntu 18.04 IP 转发不会转发通过 GRE 隧道接收的数据包

我有两台服务器,服务器 A 和服务器 B。子网 192.168.1.0/24 的流量通过服务器 A 进入。服务器 A 与服务器 B 设置了 GRE 隧道,并通过 GRE 隧道将 192.168.1.0/24 接收的所有流量路由到服务器 B。

服务器 B 应该通过 GRE 隧道接收发往 192.168.1.0/24 的流量,并通过其默认网关转发。目前的情况是,服务器 A 成功地通过 GRE 隧道将流量发送到服务器 B,服务器 B 接收流量,但不通过其默认网关转发。

我正在运行 Ubuntu 18.04,并且已启用 IP 转发:

root@serverB:~# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

我不知道为什么,但它就是拒绝转发数据包。据我所知,它应该通过默认网关转发数据包。我甚至在服务器 B 上添加了一条静态路由,以通过默认网关转发发往 192.168.1.0/24 的流量,但它仍然不转发任何流量,只接收入站流量。我可以看到大约 2Kbps 的入站流量,目的地是 192.168.1.0/24,但没有发送出站流量。以下是服务器 B 上的路由:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.204.1     0.0.0.0         UG    0      0        0 enp2s0 #Default Gateway
10.0.0.0        0.0.0.0         255.255.255.252 U     0      0        0 gre1 #GRE tunnel
192.168.1.0     192.168.204.1     255.255.255.0   UG    0      0        0 enp2s0 #static route I added

有人有什么想法吗?其他帖子都在谈论 NAT 和伪装,但我不想代理任何东西,只想通过此服务器透明路由到下一个网关。

答案1

rp_filter在内核中禁用。这解决了我的问题。

反向路径转发可以使用以下命令禁用

root@serverB:~# sysctl -w net.ipv4.conf.default.rp_filter=0

相关内容