Corri o mesmo problema:
Edite o /etc/modprobe.d/blacklist.conf
com:
blacklist ipv6
e /etc/default/grub
com:
GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 console=ttyS0"
Em seguida, update-grub
e reboot
.
Existe uma maneira de dizer ao estivador para ligar apenas as portas encaminhadas às interfaces IPv4?
Eu tenho uma máquina rodando no Oceano Digital com o IPv6 desabilitado:
# echo '1' > /proc/sys/net/ipv6/conf/lo/disable_ipv6
# echo '1' > /proc/sys/net/ipv6/conf/lo/disable_ipv6
# echo '1' > /proc/sys/net/ipv6/conf/all/disable_ipv6
# echo '1' > /proc/sys/net/ipv6/conf/default/disable_ipv6
# /etc/init.d/networking restart
ifconfig
informa que não há interfaces ativadas para IPv6:
# ifconfig
docker0 Link encap:Ethernet HWaddr 00:00:00:00:00:00
inet addr:172.17.42.1 Bcast:0.0.0.0 Mask:255.255.0.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:1372 errors:0 dropped:0 overruns:0 frame:0
TX packets:7221 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:88091 (88.0 KB) TX bytes:10655750 (10.6 MB)
eth0 Link encap:Ethernet HWaddr 04:01:08:c1:b1:01
inet addr:198.XXX.XXX.XXX Bcast:198.199.90.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:97602 errors:0 dropped:4 overruns:0 frame:0
TX packets:15362 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:141867997 (141.8 MB) TX bytes:1376970 (1.3 MB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
lxcbr0 Link encap:Ethernet HWaddr 9e:51:04:ed:13:d4
inet addr:10.0.3.1 Bcast:10.0.3.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Quando eu inicio um novo contêiner docker e peço para ele encaminhar 8000 para 8000 no contêiner, ele o faz somente em interfaces IPv6. Existe uma maneira de torná-lo apenas vinculado a interfaces IPv4?
# docker run -p 8000:8000 -i -t colinsurprenant/ubuntu-raring-amd64 /bin/bash
# lsof -OnP | grep LISTEN
sshd 1275 root 3u IPv4 ... TCP *:22 (LISTEN)
sshd 1275 root 4u IPv6 ... TCP *:22 (LISTEN)
dnsmasq 2975 lxc-dnsmasq 7u IPv4 ... TCP 10.0.3.1:53 (LISTEN)
docker 9629 root 7u IPv6 ... TCP *:8000 (LISTEN)
docker 9629 9630 root 7u IPv6 ... TCP *:8000 (LISTEN)
docker 9629 9631 root 7u IPv6 ... TCP *:8000 (LISTEN)
docker 9629 9632 root 7u IPv6 ... TCP *:8000 (LISTEN)
docker 9629 9633 root 7u IPv6 ... TCP *:8000 (LISTEN)
docker 9629 9634 root 7u IPv6 ... TCP *:8000 (LISTEN)
docker 9629 9698 root 7u IPv6 ... TCP *:8000 (LISTEN)
Corri o mesmo problema:
Edite o /etc/modprobe.d/blacklist.conf
com:
blacklist ipv6
e /etc/default/grub
com:
GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 console=ttyS0"
Em seguida, update-grub
e reboot
.
Na verdade, o docker usa o firewall netfilter para garantir que o serviço esteja disponível. lsof
não lhe diria nada. Tente executar
iptables -L -t nat
ip6tables -L -t nat
No entanto, é possível que o contêiner não escute a porta especificada.
Você pode verificar seu contêiner para certificar-se de que seu serviço está escutando as portas esperadas usando o nsenter:
nsenter --net -t PID netstat -ltpn
PID
deve ser o PID de um processo em execução no contêiner, provavelmente o seu serviço. --net
é entrar no namespace da rede. Em seguida, as opções netstat -ltpn
é listar os soquetes de escuta ( -l
) TCP ( -t
). Mostre o processo ( -p
) e mostre números de porta no formato numérico ( -n
).
Tags networking ipv6 ipv4 linux ubuntu