Kernel / proc ipv6 configurações precedência

5

Estou prestes a conectar nossa rede à Internet IPv6 e preciso controlar as configurações do kernel ipv6 encontradas em /proc . Eu sei que existem configurações para cada interface, para all interfaces e default config. Minha pergunta é: quais configurações ganham se os valores individuais se contradizerem? Embora eu tenha conseguido encontrar uma boa documentação sobre as configurações individuais, não sei como definir a precedência ...

Há uma pergunta relacionada ao IPv4 , mas fala principalmente sobre as diferenças de all , default e as interfaces individuais. A partir daí, as configurações concretas são sempre de alguma forma logicamente combinadas. No entanto, os campos mais importantes para mim (consulte os exemplos a seguir) não são abordados e o IPv6 parece ser implementado de maneira diferente, de modo que o arquivo de origem do kernel mencionado na resposta referenciada não ajude no meu problema IPv6 e nos exemplos a seguir. >

Alguns exemplos:

cat /proc/sys/net/ipv6/conf/all/accept_ra
0
cat /proc/sys/net/ipv6/conf/eth1/accept_ra
1

A eth1 aceitará anúncios de roteador?

cat /proc/sys/net/ipv6/conf/all/forwarding
1
cat /proc/sys/net/ipv6/conf/eth1/forwarding
0
cat /proc/sys/net/ipv6/conf/eth1/accept_ra
1

A eth1 aceitará anúncios de roteador?

cat /proc/sys/net/ipv6/conf/all/disable_ipv6
1
cat /proc/sys/net/ipv6/conf/all/accept_ra
1
cat /proc/sys/net/ipv6/conf/eth1/disable_ipv6
0
cat /proc/sys/net/ipv6/conf/all/accept_ra
0

A eth1 aceitará anúncios de roteador?

cat /proc/sys/net/ipv6/conf/all/disable_ipv6
1
cat /proc/sys/net/ipv6/conf/all/fowarding
1
cat /proc/sys/net/ipv6/conf/eth1/disable_ipv6
0
cat /proc/sys/net/ipv6/conf/all/accept_ra
1

A eth1 aceitará anúncios de roteador?

    
por Bananguin 11.03.2014 / 11:06

2 respostas

3

Interessante, eu tive um problema semelhante envolvendo minha cabeça em torno do parâmetro encaminhamento .

No IPv4, você pode encaminhar algumas interfaces. Isso é útil especialmente em hosts com hospedagem múltipla em que você deseja manter algumas das sub-redes em interfaces internas realmente privadas. Você também pode ativar o encaminhamento para todas as interfaces usando .../all/forwarding e você pode definir um valor padrão a ser definido para qualquer interface que surgir mais tarde. Tudo bem, mas ...

No IPv6, esse comportamento é de fato diferente. Eu defini o forwarding=1 para algumas das minhas interfaces IPv6 sem definir ../all/forwarding=1 e fiquei surpreso que nenhum encaminhamento aconteceu. O manual do kernel kernel diz o seguinte:

11.2.3.5. forwarding

Type: BOOLEAN

Default: FALSE if global forwarding is disabled (default), otherwise TRUE

Configure interface-specific Host/Router behaviour. Note: It is recommended to have the same setting on all interfaces; mixed router/host scenarios are rather uncommon. [...]

Portanto, definir /proc/sys/net/ipv6/conf/all/forwarding=1 é obrigatório para que funcione e isso parece lógico, pois o host pode ser apenas um roteador (sem solicitações de roteador, os redirecionamentos e os roteadores são ignorados) ou apenas um host simples (aceitando roteador advs & autoconf) mas não ambos ao mesmo tempo ou pelo menos não podem se comportar de maneira diferente em uma seleção de interfaces que faz a diferença para o IPv4

Embora o termo all seja muito confuso aqui e deve ser substituído por enabled , porque depois de definir isso no IPv6, você poderá liberar o encaminhamento em uma ou mais das outras interfaces a serem excluídas do encaminhamento! Portanto, a condição para all não é mais atendida. Agora eu esperaria que, se você limpar um deles, então all será limpo também? ... mas para minha surpresa não é esse o caso!

A pergunta parece ser se all substituir qualquer uma das outras configurações de forwarding e

echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
echo 0 > /proc/sys/net/ipv6/conf/enp2s1/forwarding
echo 1 > /proc/sys/net/ipv6/conf/enp2s2/forwarding

não pode ser verdade ao mesmo tempo em que all é obrigatório, do meu ponto de vista é simplesmente uma contradição!

    
por 02.10.2016 / 13:43
2
  1. sim
  2. sim
  3. depende
  4. depende

As entradas "padrão" são, bem, o padrão. Quando uma interface aparece, ela herda os parâmetros de lá.

As entradas "all" estão lá para atribuir um parâmetro a todas as interfaces de uma só vez. Isso não significa que toda interface esteja bloqueada para esse parâmetro. Por exemplo, considere

echo 0 > /proc/sys/net/ipv6/conf/all/accept_ra
echo 1 > /proc/sys/net/ipv6/conf/enp2s1/accept_ra

então

cat /proc/sys/net/ipv6/conf/all/accept_ra
0
cat /proc/sys/net/ipv6/conf/enp2s1/accept_ra
1
cat /proc/sys/net/ipv6/conf/wlp2s0/accept_ra
0

então "all" não representa nenhum tipo de estado, é apenas para atribuição coletiva.

    
por 09.04.2014 / 20:42