Tentando ignorar um balanceador de carga
Nosso sistema direciona o tráfego de rede em um balanceador de carga de três vias que atende a três modems celulares em operação normal. Usamos um programa chamado speedtest_cli que mede o tráfego. A idéia é que os pacotes de teste usem o mesmo modem que especificamos, mas parece que não é assim Eu posso ver o tráfego em todos os modems durante o teste em um sistema mais ou menos ocioso. Assim, com as medições de balanceamento desativadas, nosso balanceamento de tráfego é inferior.
O programa de teste de velocidade permite especificar um endereço para gerar pacotes, mas isso não evita o balanceamento de seus pacotes, o que é feito marcando o tráfego da rede usando a marcação de pacotes de acordo com a carga desejada e direcionando cada pacote de pacotes marcados para um determinado modem.
Para ignorar essa marcação, eu queria fazer um quarto estilo de marcação e, então, direcionar o speedtest_cli para obter seu pacote a partir de um endereço IP específico que seria marcado de maneira diferente dos outros. Então, presumivelmente, este pacote pode ser direcionado para o modem que eu quero, dependendo de qual modem eu quero acelerar o teste.
Setmark4 é o quarto grupo de marcação que pretendo rotear para um modem em particular durante o teste, mas quando adicionei essa marcação, recebi erros ao iniciar o teste.
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
CONNMARK all -- anywhere anywhere ctstate RELATED,ESTABLISHED CONNMARK restore
SETMARK4 all -- anywhere 10.7.1.0 ctstate NEW
SETMARK1 all -- anywhere anywhere ctstate NEW
SETMARK2 all -- anywhere anywhere ctstate NEW
SETMARK3 all -- anywhere anywhere ctstate NEW
PREBALANCE all -- 10.0.0.0/16 anywhere ctstate NEW
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
CONNMARK all -- anywhere anywhere ctstate RELATED,ESTABLISHED CONNMARK restore
SETMARK4 all -- 10.7.1.0 anywhere ctstate NEW
SETMARK1 all -- anywhere anywhere ctstate NEW
SETMARK2 all -- anywhere anywhere ctstate NEW
SETMARK3 all -- anywhere anywhere ctstate NEW
PREBALANCE all -- anywhere anywhere ctstate NEW
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
TCPMSS tcp -- anywhere anywhere tcp flags:SYN,RST/SYN TCPMSS set 1300
CONNMARK all -- anywhere anywhere CONNMARK save
Chain BALANCE (1 references)
target prot opt source destination
SETMARK4 all -- 10.7.1.0 anywhere
SETMARK1 all -- anywhere anywhere statistic mode random probability 0.31999999983 connmark match 0x0
SETMARK2 all -- anywhere anywhere statistic mode random probability 0.45999999996 connmark match 0x0
SETMARK3 all -- anywhere anywhere statistic mode random probability 1.00000000000 connmark match 0x0
Chain PREBALANCE (2 references)
target prot opt source destination
RETURN all -- anywhere 10.0.0.0/16
RETURN all -- anywhere anywhere connmark match ! 0x0
RETURN all -- anywhere anywhere ctstate RELATED,ESTABLISHED
BALANCE all -- anywhere anywhere
Chain SETMARK1 (3 references)
target prot opt source destination
CONNMARK all -- anywhere anywhere CONNMARK set 0x1
MARK all -- anywhere anywhere MARK set 0x1
Chain SETMARK2 (3 references)
target prot opt source destination
CONNMARK all -- anywhere anywhere CONNMARK set 0x2
MARK all -- anywhere anywhere MARK set 0x2
Chain SETMARK3 (3 references)
target prot opt source destination
CONNMARK all -- anywhere anywhere CONNMARK set 0x3
MARK all -- anywhere anywhere MARK set 0x3
Chain SETMARK4 (3 references)
target prot opt source destination
CONNMARK all -- anywhere anywhere CONNMARK set 0x4
MARK all -- anywhere anywhere MARK set 0x4
[root@localhost ~]#
Eu estava criando o endereço de origem, conectando-o a uma interface fictícia usando ip addr add. Isso funcionou antes Eu adicionei o quarto grupo de marcação de pacotes, mas depois recebo um erro dizendo que o IP não pode acessar o mundo externo. Ping no novo endereço IP também não funciona.
Há algo de errado com a alteração na tabela de marcação que causa isso? Ou existe uma maneira melhor de permitir uma configuração específica? endereço de origem para ignorar o BALANCE e ser direcionado para uma determinada interface de saída?
Tags networking iptables linux