systemd-nspawn: redireciona as portas e mantém a internet

0

Eu gostaria de saber como ser capaz de:

  • redirecionar portas entre o host e o contêiner (como, por exemplo, encaminhar a porta do host 23 para a porta do contêiner 22)
  • conseguir se conectar à internet, por exemplo, para instalar pacotes

Se eu apenas inicializar usando:

sudo systemd-nspawn -b -D debian_master

Eu posso mudar a porta de sshd e então eu posso me conectar a ela através do ssh, e também conectar-me à internet, mas então não é encaminhamento de porta.

Eu também tentei:

sudo bash -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
sudo systemd-nspawn -b -D ./debian_master -n -p 23:22

mas eu nem consigo me conectar à internet.

Aqui está o resultado do meu comando ip a no contêiner:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: host0@if6: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 72:ba:f6:a1:ca:f0 brd ff:ff:ff:ff:ff:ff link-netnsid 0

Obrigado!

- EDITAR

O sistema host é debian sid, e o contêiner é estável no debian. Para criar este contêiner, acabei de executar:

sudo debootstrap stable debian_master http://deb.debian.org/debian/

e depois editei a senha usando:

sudo systemd-nspawn -D debian_master
passwd
logout

e depois posso tentar iniciá-lo:

sudo systemd-nspawn -b -D debian_master -n -p 22:23

... e tenha algum problema de conexão. E não é problema de DNS ou Firewall, nem consigo pingar 8.8.8.8 , pois nem tenho um ip local (confira meu ip a acima)

Eu também tentei executar o systemd-networkd no host e no container, mas não funciona:

sudo systemctl enable systemd-networkd
sudo systemctl start systemd-networkd

No contêiner, recebo um erro

sudo: unable to resolve host <my host hostname>: Connection refused

- EDIT 2 -

Eu progredi ... eu editei no lado do host o arquivo /etc/systemd/network/MyDhcp.network assim:

[Match]
Name=en*

[Network]
DHCP=ipv4
IPForward=1
IPMasquerade=yes

e agora eu tenho um IP. Mas eu ainda não consigo pingar 8.8.8.8 , talvez tenha algo a ver com o encaminhamento de pacotes ...

- EDIT 3 -

Eu ainda progrido, agora, se eu criar o seguinte arquivo e reinicializar, eu tenho internet e até DNS:

$ cat /etc/sysctl.d/ip_forward.conf 
net.ipv4.ip_forward = 1

Também garanti que tudo neste comentário estava correto: link .

Agora consigo me conectar por meio da interface recém-criada, usando algo como:

ssh [email protected] -p 22

Mas eu não sei porque,

ssh root@localhost -p 23

não funciona. Então, qual é o significado da opção -p ? Eu também tentei correr

sudo netstat -antp | grep 23

mas nada de interessante está aqui. Como lembrete, aqui está o comando que eu uso:

sudo systemd-nspawn -b -D debian_master -n -p 23:22
    
por tobiasBora 18.12.2017 / 17:26

0 respostas