V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
Raul7
V2EX  ›  Linux

一个关于 gre 与流量转发的问题,求大神帮忙~

  •  
  •   Raul7 · 2020-07-08 10:49:38 +08:00 · 1940 次点击
    这是一个创建于 1598 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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如下:

    [root@localhost ~]# ifconfig
    docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  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<link>
            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<UP,POINTOPOINT,RUNNING,NOARP>  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<link>
            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 机器,无法联通。求助大家该如何解决?

    4 条回复    2020-07-08 15:50:52 +08:00
    defunct9
        1
    defunct9  
       2020-07-08 11:50:20 +08:00
    不知道要搞乜,弄得这么复杂干嘛,GRE 一般 BGP 用来 peer,或者隧道两个网段用。
    Raul7
        2
    Raul7  
    OP
       2020-07-08 13:43:27 +08:00
    @defunct9 为了把 A 的端口转发到 B 端口 然后 B 能拿到原始请求 ip
    defunct9
        3
    defunct9  
       2020-07-08 14:37:33 +08:00
    肯定能通,调试一下吧。股市这么好,看股市去了,没时间帮忙了。
    julyclyde
        4
    julyclyde  
       2020-07-08 15:50:52 +08:00
    rp_filter 关闭就行了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4469 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 10:03 · PVG 18:03 · LAX 02:03 · JFK 05:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.