求助,如何让 k8s 的 pod 访问外网的时候从指定网卡出去,求大神看看我这么配置为什么不行 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
sniperking1234
V2EX    程序员

求助,如何让 k8s 的 pod 访问外网的时候从指定网卡出去,求大神看看我这么配置为什么不行

  •  1
     
  •   sniperking1234 2020-06-02 11:15:45 +08:00 2314 次点击
    这是一个创建于 1986 天前的主题,其中的信息可能已经有所发展或是发生改变。

    pod 地址 10.151.163.151 外网网段 172.31.0.0/20

    修改的方式为:

    iptables -I PREROUTING -t mangle -s 10.151.163.151 -d 172.31.0.0/20 -j MARK --set-mark 100 ip r add table 3 172.31.0.0/20 dev eth4 proto kernel scope link src 172.31.0.72 ip rule add fwmark 100 table 3 

    这么修改之后,发现在 pod 里面 ping 不通

    pod 网卡抓包是

    listening on cali2b6e696b9f2, link-type EN10MB (Ethernet), capture size 262144 bytes 10:58:08.593372 IP 10.151.163.151 > 172.31.0.86: ICMP echo request, id 45, seq 0, length 64 10:58:09.594439 IP 10.151.163.151 > 172.31.0.86: ICMP echo request, id 45, seq 1, length 64 

    eth4 网卡抓包是

    listening on eth4, link-type EN10MB (Ethernet), capture size 262144 bytes 10:57:48.484657 IP 172.31.0.72 > 172.31.0.86: ICMP echo request, id 0, seq 10, length 64 10:57:48.486355 IP 172.31.0.86 > 172.31.0.72: ICMP echo reply, id 0, seq 10, length 64 10:57:50.487039 IP 172.31.0.72 > 172.31.0.86: ICMP echo request, id 0, seq 12, length 64 10:57:50.487943 IP 172.31.0.86 > 172.31.0.72: ICMP echo reply, id 0, seq 12, length 64 

    看起来 eth4 上的网卡是正常的,有发出去的和接受的包,但是 pod 网卡上只有发出去的包,没有接收的,感觉缺了一步,不知道是哪个地方少了?请大家帮忙看下

    4 条回复    2020-06-02 15:16:25 +08:00
    julyclyde
        1
    julyclyde  
       2020-06-02 11:52:09 +08:00   1
    rp_filter
    zydrsnuo
        2
    zydrsnuo  
       2020-06-02 12:29:39 +08:00 via Android   1
    多半是 rp_filter

    rp_filter 有三个值:0/1/2, 具体含意如下:

    0: 关闭反向路由校验.
    1: 开启严格的反向路由校验. 对每个进来的数据包, 校验其反向路由是否是最佳路由. 如果反向路由不是最佳路由, 则直接丢弃该数据包.
    2: 开启松散的反向路由校验. 对每个进来的数据包, 校验其源地址是否可达, 即反向路由是否能通(通过任意网卡), 如果反向路径不通, 则直接丢弃该数据包.
    当 rp_filter 的值为 1 时, 要求反向路由的出口必须与数据包的入口网卡是同一块, 否则就会丢弃数据包.

    当 rp_filter 的值为 2 时, 要求反向路由必须是可达的, 如果反路由不可达, 则会丢弃数据包.

    把 rp_filter 值设为 0, 关闭反向路由校验:

    for x in /proc/sys/net/ipv4/conf/*/rp_filter
    do
    echo 0 > "${x}"
    done

    查看效果:

    cat /proc/sys/net/ipv4conf/*/rp_filter
    sniperking1234
        3
    sniperking1234  
    OP
       2020-06-02 12:42:03 +08:00
    @zydrsnuo 果然修改了就好了,多谢指点
    julyclyde
        4
    julyclyde  
       2020-06-02 15:16:25 +08:00
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     835 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 22:05 PVG 06:05 LAX 14:05 JFK 17:05
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86