Estou tendo um comportamento estranho no servidor Ubuntu, onde qualquer nova 'regra de IP' adicionada é adicionada com prioridade zero. Eu adiciono as regras sem prioridade e costumavam ser adicionadas à prioridade disponível. Regra duplicada esperada ou preenchida (não é), mas fiz alguma limpeza nas regras antigas para liberá-la, mas nunca usei as novas prioridades disponíveis.
Server >> VERSION="18.04.6 LTS (Bionic Beaver)"
Kernel >> 4.15.0-172-generic
Example
0: from all lookup local
0: from all iif bb2671448 lookup 7173
0: from all oif bb2671448 lookup 7173
0: from all iif ebb90d64d lookup 7415
0: from all oif ebb90d64d lookup 7415
1000: from all lookup [l3mdev-table]
32765: from all fwmark 0x4d2 lookup 123
32766: from all lookup main
32767: from all lookup default
Obrigado
Isso pode ser reproduzido adicionando primeiro qualquer regra com preferência 0 para que haja pelo menos duas presentes: a original
0: from all lookup local
e a nova.Basta remover todas as regras com preferência 0 até que reste apenas uma. É melhor que seja o original
0: from all lookup local
(ou espere problemas de conectividade), mas isso nem é obrigatório.Não é nem mesmo a preferência 0 que é especial (mesmo que essa seja a intenção da configuração padrão), é o fato de que o próximo valor de preferência mais baixo também é 0, e que nada pode ser criado com um valor ainda menor quando esse valor já é 0 (ver último comentário). Normalmente, o valor é escolhido como o próximo menor menos 1 (da configuração padrão seria 32766 (que é o próximo depois de 0) -1 = 32765).
Reprodutor em um namespace de usuário+rede:
Deixe apenas um com preferência 0 (mesmo o "errado", como foi feito nesta demonstração):
Então: não adicione uma regra com prioridade 0 para evitar esse problema.
Se a intenção é que algumas regras aconteçam antes
lookup local
para fins de roteamento de política especial, mova esta para cima e insira outras antes. Depois disso, todas as novas regras devem ser adicionadas com uma preferência explícita ou, mais cedo ou mais tarde, ocorrerão pedidos indesejados (veja o exemplo abaixo).Quando 400 se tornou o valor de preferência mais baixo, adicionar uma nova regra sem declarar a preferência não escolheu 31998, mas 499 (o próximo valor mais baixo passou a ser 500): conforme avisado, é melhor sempre indicar a preferência para regras recém-adicionadas ao fazer malabarismos com
local lookup
. O problema inicial é semelhante com o fato adicional de que não é possível somar abaixo do próximo ao menor (0) também sendo 0, então 0 é escolhido novamente.