允许通过vpnkit进行出站容器联网

问题描述 投票:1回答:1

我在这里有一个linuxkit构建的VM,我正在尝试运行自定义容器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服务的重点是允许公共互联网连接到我在host: net名称空间上旋转的虚拟以太网适配器。我目前的尝试是以下(在容器内):

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

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

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

docker iptables moby linuxkit
1个回答
1
投票

事实证明问题是这一行:

binds:
...

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

通过覆盖iptables可执行文件到docker提供的内容,即使命令报告没有问题,事情仍然是行为不端。它必须用于特定的群体,正如他们的文档中提到的那样。

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

© www.soinside.com 2019 - 2024. All rights reserved.