【问题标题】:Allow outbound container networking through vpnkit允许通过 vpnkit 出站容器网络
【发布时间】:2019-02-13 07:56:39
【问题描述】:

我在这里有一个 linuxkit 构建的虚拟机,其中包含我正在尝试运行的自定义容器 service

services:
  ...

  - name: net-manager
    image: aemengo/net-manager:6bcc223a83e8a303a004bc6f6e383a54a3d19c55-amd64
    net: host
    capabilities:
      - all
    binds:
      - /usr/bin/vpnkit-expose-port:/usr/bin/vpnkit-expose-port # userland proxy
      - /usr/bin/vpnkit-iptables-wrapper:/usr/bin/iptables # iptables wrapper
      - /var/vpnkit:/port # vpnkit control 9p mount
      - /var/run:/var/run
    command:
      - sleep
      - 1d

使用 Alpine 的基本映像,net-manager 服务的重点是允许公共 Internet 连接到我在 host: net 命名空间上旋转的虚拟以太网适配器。我目前的尝试如下(在容器内):

$ sysctl net.ipv4.conf.all.forwarding=1
$ /usr/bin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

就像您对未使用 vpnkit 的 VM 所做的那样,但这样做似乎没有任何明显的效果。例如,nc -v google.com 仍然失败。我错过了什么? vpnkit 已按照此处的示例进行安装和转发:

https://github.com/linuxkit/linuxkit/blob/master/examples/docker-for-mac.yml

【问题讨论】:

    标签: docker iptables moby linuxkit


    【解决方案1】:

    原来问题出在这行:

    binds:
    ...
    
    /usr/bin/vpnkit-iptables-wrapper:/usr/bin/iptables
    

    通过将 iptables 可执行文件覆盖为 docker 提供的可执行文件,即使命令报告没有问题,事情也会出现问题。正如他们的文档中所提到的,它必须用于特定于群体的东西。

    解决方法是删除该绑定并运行容器中提供的 iptables

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-23
      • 1970-01-01
      • 1970-01-01
      • 2016-02-20
      • 2023-02-21
      • 2017-02-15
      相关资源
      最近更新 更多