Como desabilito o IPv6 mapeado para IPv4?

17

Na minha caixa Linux, tenho vários daemons que podem ser ligados a todas as interfaces ativadas para IPv6 ::. Quando o fazem, o Linux envia solicitações IPv4 para o daemon mapeado como, por exemplo ::ffff:198.51.100.37,.

Em vez disso, gostaria que as conexões IPv4 fossem recusadas e que somente as conexões IPv6 fossem aceitas quando um daemon se ligasse ::. Para receber conexões IPv4, quero que o daemon tenha que se ligar explicitamente 0.0.0.0(assim como ::).

Em outras palavras, desejo executar um serviço exclusivamente no IPv6, e não no IPv4.

Existe uma maneira de conseguir isso?

Michael Hampton
fonte

Respostas:

22

Isso é controlado pelo net.ipv6.bindv6onlysysctl. Adicione o seguinte a /etc/sysctl.confe execute sudo sysctl -ppara efetuar a alteração.

net.ipv6.bindv6only=1

Os aplicativos também podem se ligar explicitamente apenas ao endereço IPv6 em vez de alterá-lo globalmente, por exemplo, o nginx tem a ipv6onlyopção de usar a listendiretiva. Isso corresponde à IPV6_V6ONLYopção de setsockopt().

mgorven
fonte
Felizmente, descobri que o aplicativo (neste caso, OpenSSH) já estava configurando IPV6_V6ONLY no soquete quando o defini, ListenAddress ::para que não precisasse recorrer ao sysctl (e reconfigurar todo o resto).
Michael Hampton