У меня есть встроенная виртуальная машина 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
заключается в том, чтобы предоставить общедоступное подключение к Интернету виртуальным сетевым адаптерам, которые я раскручиваю в пространстве имен 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