Estou rodando debian 8
no meu servidor. Recentemente, o servidor iniciando apenas usando IPv6 para todas as conexões TCP de saída. Ele ainda aceita IPv4 para conexões de entrada, no entanto.
Por causa disso, não consigo acessar nenhum site (porta 80), fazer conexões ssh (porta 22) nem acessar nenhum outro host de saída através de qualquer porta TCP do meu servidor agora.
Desativei completamente todas as regras do iptables via iptables -F
seguido por iptables -X
e o problema persiste.
Aqui estão algumas saídas de comando que podem ser pertinentes:
% sudo ip address
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: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether aa:bf:5c:77:b2:82 brd ff:ff:ff:ff:ff:ff
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether f2:3c:91:96:da:28 brd ff:ff:ff:ff:ff:ff
inet 45.33.123.70/24 brd 45.33.123.255 scope global eth0
valid_lft forever preferred_lft forever
inet 45.33.5.47/24 scope global eth0:1
valid_lft forever preferred_lft forever
inet 192.168.135.4/17 scope global eth0:2
valid_lft forever preferred_lft forever
inet6 2600:3c00::f03c:91ff:fe96:da28/64 scope global mngtmpaddr dynamic
valid_lft 87sec preferred_lft 27sec
inet6 fe80::f03c:91ff:fe96:da28/64 scope link
valid_lft forever preferred_lft forever
4: teql0: <NOARP> mtu 1500 qdisc noop state DOWN group default qlen 100
link/void
5: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
link/ipip 0.0.0.0 brd 0.0.0.0
6: gre0@NONE: <NOARP> mtu 1476 qdisc noop state DOWN group default qlen 1000
link/gre 0.0.0.0 brd 0.0.0.0
7: gretap0@NONE: <BROADCAST,MULTICAST> mtu 1476 qdisc noop state DOWN group default qlen 1000
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
8: erspan0@NONE: <BROADCAST,MULTICAST> mtu 1464 qdisc noop state DOWN group default qlen 1000
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
9: ip_vti0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
link/ipip 0.0.0.0 brd 0.0.0.0
10: ip6_vti0@NONE: <NOARP> mtu 1364 qdisc noop state DOWN group default qlen 1000
link/tunnel6 :: brd ::
11: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
link/sit 0.0.0.0 brd 0.0.0.0
12: ip6tnl0@NONE: <NOARP> mtu 1452 qdisc noop state DOWN group default qlen 1000
link/tunnel6 :: brd ::
13: ip6gre0@NONE: <NOARP> mtu 1448 qdisc noop state DOWN group default qlen 1000
link/gre6 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 brd 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
% sudo route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 45.33.123.1 0.0.0.0 UG 0 0 0 eth0
45.33.5.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
45.33.123.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.128.0 0.0.0.0 255.255.128.0 U 0 0 0 eth0
Não sei o que poderia ter causado essa mudança para somente IPv6 na saída. Mas de qualquer forma, eu só quero voltar ao IPv4 para o padrão de todas as conexões de saída.
Obrigado por quaisquer insights e sugestões.
Outro método que pode funcionar seria configurar sua máquina para preferir IPv4. Portanto, ele tentará o IPv4 primeiro, mas tentará o IPv6 se isso falhar.
Isso pode ser feito em
/etc/gai.conf
Isso diz à
getaddrinfo()
chamada para dar prioridade aos resultados do IPv4.Se você excluir o endereço ip6 público, deve ficar bem:
Sobre como ele chegou lá, pode ser que o servidor DHCP deles (se você estiver obtendo endereços por DHCP) tenha começado a enviar um prefixo IPv6.
Você pode querer informar o seu provedor sobre isso, porque a longo prazo você quer ter o IPv6 ativado.
Eu adoto a abordagem "nuke it from orbit" quando se trata de IPv6.
Adicione
ipv6.disable=1
às suas opções de kernel/etc/default/grub
e executeupdate-grub
e reinicie:Alternativamente, se você não puder modificar facilmente os parâmetros do kernel, adicione isso ao seu sysctl.conf ou execute sysctl para definir manualmente: