技术解析

一个关于 gre 与流量转发的问题,求大神帮忙~
0
2021-06-16 13:39:08
idczone

A 机器建立与 B 机器连接的 gre 通道(并把 10000 端口通过 gre 通道转发到 B 机器):

ip link add gre-y type gre local A 机器 ip remote B 机器 ip ttl 64
ip link set gre-y up
ip addr add 10.1.1.2/24 dev gre-y
iptables -t nat -I PREROUTING -p tcp --dport 10000 -j DNAT --to-destination 10.1.1.3:10000

B 机器建立与 A 机器连接的 gre 通道:

ip link add gre-x type gre local B 机器 ip remote A 机器 ip ttl 64
ip link set gre-x up
ip addr add 10.1.1.3/24 dev gre-x

B 机器上的 10000 端口是通过 docker 启的,B 机器ifconfig如下:

[[email protected] ~]# ifconfig
docker0: flags=4163  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        inet6 fe80::42:b5ff:fe37:829d  prefixlen 64  scopeid 0x20
        ether 02:42:b5:37:82:9d  txqueuelen 0  (Ethernet)
        RX packets 1748106  bytes 280406387 (267.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1747699  bytes 748575892 (713.8 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

gre-x: flags=209  mtu 1476
        inet 10.1.1.3  netmask 255.255.255.0  destination 10.1.1.3
        inet6 fe80::5efe:c0a8:8eb1  prefixlen 64  scopeid 0x20
        unspec C0-A8-8E-B1-00-00-C0-9B-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)
        RX packets 748  bytes 42201 (41.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 800  bytes 62808 (61.3 KiB)
        TX errors 28  dropped 0 overruns 0  carrier 0  collisions 28

我的需求是:B 机器收到 A 机器( 10.1.1.2 )的请求,默认走 B 机器的 gre-x 网卡,随后 B 机器通过 10.1.1.3 返回的流量默认从 gre-x 网卡返回。B 机器上是这么配置的:

ip route add default via 10.1.1.2 dev gre-x table 111
ip rule add pref 1000 from 10.1.1.3 lookup 111

但是流量返回不回去,B 机器上抓包发现问题: A(10.1.1.2) -> B 机器 -> docker 启的 10000 端口( 172.17.0.x )-> 流量从 172.17.0.x 返回。

以至于 A 机器端口转发到 B 机器,无法联通。求助大家该如何解决?


不知道要搞乜,弄得这么复杂干嘛,GRE 一般 BGP 用来 peer,或者隧道两个网段用。

为了把 A 的端口转发到 B 端口 然后 B 能拿到原始请求 ip

肯定能通,调试一下吧。股市这么好,看股市去了,没时间帮忙了。

rp_filter 关闭就行了

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服