Eu tenho um servidor com várias interfaces e endereços IP na mesma rede. Eu gostaria que o tráfego não-iSCSI utilizasse exclusivamente uma das interfaces e, para o tráfego iSCSI, utilizasse exclusivamente o restante das interfaces. Limitar o tráfego iSCSI a um subconjunto de minhas interfaces é fácil; Eu simplesmente não crio entradas em / var / lib / iscsi / ifaces / para as interfaces que eu não quero que ele use. No entanto, não tenho certeza sobre qual é uma boa abordagem para limitar o tráfego não-ISCSI a uma interface. No que diz respeito ao linux, as interfaces iSCSI e não-iSCSI são igualmente boas rotas para a rede.
Aqui está uma configuração de exemplo
O armazenamento iSCSI tem os endereços IP 172.16.50.70-78.
O servidor tem as seguintes interfaces, endereços e rotas.
$ ip route list
149.76.12.0/24 dev eth0 proto kernel scope link src 149.76.12.4
172.16.0.0/16 dev eth1 proto kernel scope link src 172.16.50.80
172.16.0.0/16 dev eth2 proto kernel scope link src 172.16.50.81
172.16.0.0/16 dev eth3 proto kernel scope link src 172.16.50.82
default via 149.76.12.1 dev eth0
A configuração desejada é que o eth3 seja usado para tráfego não-ISCSI e que eth1 e eth2 sejam usados para tráfego iSCSI. No entanto, o tráfego não-iSCSI atualmente sai da eth1.
$ ip route get to 172.16.50.90
172.16.50.90 dev eth1 src 172.16.50.80
(algumas edições desde a postagem original abaixo)
Com minha configuração atual, se eth1 e eth2 estiverem totalmente saturadas enviando tráfego iSCSI, meu tráfego não-iSCSI irá competir com o tráfego iSCSI na eth1 enquanto o eth3 permanecer inativo.
Como eu configuraria o linux para preferir enviar tráfego para a rede local usando eth3 em vez de eth1 ou eth2?
Já configurei net.ipv4.conf.all.arp_ignore para 1 e net.ipv4.conf.all.arp_announce para 2. Isso deve impedir que meus endereços IP flutuem entre as interfaces, por exemplo, arp flux. Eu acho que só preciso de ajuda com o roteamento.
(mais edições)
Graças a pfo comecei a olhar para as métricas. Se eu excluir as rotas e recriá-las com as interfaces iSCSI com uma métrica mais alta do que a interface não-iSCSI, as coisas parecem funcionar da maneira que eu quero. O tráfego iSCSI ainda usa as interfaces dedicadas sem que eu configure rotas estáticas para os endereços IP do iSCSI. Todo o outro tráfego local sai da eth3. Agora preciso descobrir a maneira correta de definir as métricas automaticamente quando as interfaces são ativadas. Isso está no RHEL 5.5.
ip route delete to 172.16.0.0/16 dev eth1
ip route delete to 172.16.0.0/16 dev eth2
ip route delete to 172.16.0.0/16 dev eth3
ip route add to 172.16.0.0/16 dev eth1 src 172.16.50.80 metric 1
ip route add to 172.16.0.0/16 dev eth2 src 172.16.50.81 metric 1
ip route add to 172.16.0.0/16 dev eth3 src 172.16.50.82 metric 0
(atualização final)
Atribuir uma métrica diferente usando os scripts de rede RHEL existentes parece impossível, link