如何让 Linux 主机可以响应对 Docker 容器网卡 IP 的 ARP 请求? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
BlueMeow
V2EX    Docker

如何让 Linux 主机可以响应对 Docker 容器网卡 IP 的 ARP 请求?

  •  
  •   BlueMeow 2016-11-07 20:26:15 +08:00 4409 次点击
    这是一个创建于 3327 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前创建了一个 Docker 容器,希望它能够拥有与主机相同 LAN 下的 IP 。

    通过 pipework ( https://github.com/jpetazzo/pipework#docker-integration )的方式给它分配了与主机同一个 LAN 网段的 IP 地址(例如主机是 192.168.1.100 ,那么 Docker 容器的 IP 是 192.168.1.101 ),相当于 VMware 的桥接模式,即逻辑上是局域网的一台独立主机。

    现在是局域网内的其他主机都访问不了这个 192.168.1.101 ,除非手动运行 arping -S 192.168.1.101 -i eth1 来持续通过 eth1 网卡对外 ARP 广播 192.168.1.101 这个 IP 所对应的 Docker 虚拟网卡的 MAC 。

    目前知道这个只是个权宜之计,停止 arping 命令的话,外部就访问不了这个 Docker 容器的 IP 192.168.1.101 了。

    如何让 Linux 主机可以主动回应 192.168.1.101 这个 IP 的 ARP 请求呢?毕竟它不属于主机的网卡,而是属于主机下 Docker 容器的网卡。

    Google 了很久也没找到解决办法,似乎 pipework 自己调用的 arping 命令没有生效,只能手动不断发送 ARP 广播包

    第 1 条附言    2016-11-08 15:05:30 +08:00
    问题解决:运行 sysctl net.ipv4.ip_forward=1 和 sysctl net.ipv4.conf.eth1.proxy_arp=1 以后现在功能正常了,局域网内其他主机也可以得到 Docker 容器对应 IP 的 ARP 响应。稍后尝试下其他办法。
    9 条回复    2016-11-08 15:04:28 +08:00
    66450146
        1
    66450146  
       2016-11-07 21:20:53 +08:00
    zsj950618
        2
    zsj950618  
       2016-11-08 00:22:59 +08:00
    这不应该是 arp proxy 吗?但我看这个 pipework 怎么是自己主动发 arp 。。
    fzinfz
        3
    fzinfz  
       2016-11-08 00:37:35 +08:00
    试下 Docker Libnetwork DHCP Driver
    https://gist.github.com/nerdalert/3d2b891d41e0fa8d688c
    defunct9
        4
    defunct9  
       2016-11-08 07:10:14 +08:00 via iPhone
    用 lxc 做底层,我们现在就是这么做的
    Tinet
        5
    Tinet  
       2016-11-08 09:42:22 +08:00
    感觉这个工作不应该是自带的吗,不用自己去折腾吧,底层是用的 ovs 吗
    BlueMeow
      &bsp; 6
    BlueMeow  
    OP
       2016-11-08 13:41:51 +08:00 via iPhone
    @Tinet 底层是 Linux 原生的 Bridge 。 Pipework 的话一条命令就可以实现我需要的功能,只是 ARP 部分是个缺憾,不知道是设计缺陷还是配置问题。 ovs 看网上的资料也可以实现此功能,稍后试试。
    BlueMeow
        7
    BlueMeow  
    OP
       2016-11-08 13:44:20 +08:00 via iPhone
    @defunct9 请问可以具体一些吗,谢谢。这个 pipework 本身就是为 LXC 容器网络配置设计的,只是加上了兼容 Docker 的一些功能。看起来用法很方便,只是资料较少。
    defunct9
        8
    defunct9  
       2016-11-08 14:14:44 +08:00
    @BlueMeow 没用到 pipework
    /etc/sysconfig/docker --> other_args"-b=none -e=lxc"

    docker run \
    --lxc-cOnf="lxc.network.type = veth" \
    --lxc-cOnf="lxc.network.ipv4 = 192.168.1.5/24" \
    --lxc-cOnf="lxc.network.ipv4.gateway = 192.168.1.254" \
    --lxc-cOnf="lxc.network.link = docker0" \
    --lxc-cOnf="lxc.network.name = eth0" \
    ......
    BlueMeow
        9
    BlueMeow  
    OP
       2016-11-08 15:04:28 +08:00
    @zsj950618 运行 sysctl net.ipv4.ip_forward=1 和 sysctl net.ipv4.conf.eth1.proxy_arp=1 以后现在功能正常了,谢谢提供思路 :) Proxy ARP 这个思路学到了。


    @Tinet
    @defunct9
    @fzinfz
    @66450146
    请问各位这种 Docker + Linux Bridge + Proxy ARP 方式属于非常规的实现吗?我在网上没找到太多相关资料,在 Docker 网络配置这方面是新手,望指教,谢谢。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5189 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 47ms UTC 07:20 PVG 15:20 LAX 23:20 JFK 02:20
    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