Use o fantoche para fazer alterações no ip route e no sysctl

7

Eu tenho duas alterações em ip route & sysctl que desabilita o tcp slow start. Veja como eu faço isso

ip route show

Anote a linha que começa com o padrão.

Pegue o IP da linha padrão e execute

sudo ip route change default via $ip_address dev eth0 initcwnd 12 
sudo sysctl -w net.ipv4.tcp_slow_start_after_idle=0

Como posso criar um roteiro de fantoches a partir disso? Um que pode ser implantado em muitas máquinas do mesmo tipo - CentOS 6

Editar: Adicionado recompensa para obter um exemplo de trabalho para

sudo ip route change default via $ip_address dev eth0 initcwnd 12 
    
por Quintin Par 06.08.2012 / 12:46

3 respostas

6

Saindo da resposta de larsks, se você tiver endereços IP estáticos, coloque isso em / sbin / ifup-local

#!/bin/sh

GATEWAY='ip route| awk '/^def/{print $3}''
DEFGWDEV='ip route| awk '/^def/{print $5}''

if [ "$1" = $DEFGWDEV ]; then
  ip route change default via $GATEWAY dev $DEFGWDEV initcwnd 12
fi
    
por 24.09.2012 / 23:32
6

Se você está obtendo seu endereço de internet usando DHCP (o que é sugerido pela sua pergunta), então você pode usar /etc/dhcp/dhclient-exit-hooks para executar os comandos do shell depois que dhclient configurar sua interface. Você terá acesso a diversas variáveis fornecidas pelo dhclient, incluindo $router . Você pode usar isso para executar:

ip route change default via $router dev $interface initcwnd 12 

Você instalaria esse script com um recurso normal de Marionete file :

file { '/etc/dhcp/dhclient-exit-hooks':
owner => root,
group => root,
mode => 0755,
source => 'puppet:///.../dhclient-exit-hooks',
}

E o conteúdo do arquivo provavelmente seria parecido com:

#!/bin/sh

if [ "$interface" = eth0 ]; then
  ip route change default via ${new_routers%% *} dev $interface initcwnd 12 
fi

Se você não estiver usando o DHCP, poderá fazer algo semelhante. O script normal ifup executa /sbin/ifup-local depois de configurar a interface, e você pode usar isso para executar o comando ip . Nesse caso, você poderia obter o endereço do gateway padrão simplesmente fazendo o sourcing na configuração da interface em /etc/sysconfig/network-scripts/ifcfg-eth0 (e seu recurso Puppet file instalaria /sbin/ifup-local ).

    
por 08.08.2012 / 16:50
5

O sysctl foi coberto nesta postagem: Defina os parâmetros do sysctl.conf com Fantoche .

O exemplo para redes de Puppet também aproveita Augeas .

Editar: Você está no CentOS, então lembre-se de que você precisa tornar essas rotas persistentes ... A abordagem mais segura é fazer a alteração em um arquivo, verificar e, em seguida, reiniciar a interface de rede? Isso pressupõe /etc/sysconfig/network-scripts/route-ethX use, pois você está usando a sintaxe via . O comando ip route parece ser seu objetivo, já que você deseja alterar a janela inicial de congestionamento (initcwnd). Eu seriamente separar isso em outra opção porque a configuração do gateway padrão por si só deve ser tratada pelo processo de scripts de rede / kickstart / build do sistema operacional.

Agora, para uma solução totalmente diferente:

Eu gosto do Puppet para algumas coisas. Os valores das configurações de rede e do sysctl não estão entre eles. Com os sistemas EL6, você tem a capacidade de usar o framework tuned-adm fazer essas mudanças no sistema de maneira fácil e consistente. Os servidores que gerencio às vezes precisam de mais de 30% desysctl e sysfs de alterações antes de entrarem em produção. Eu costumava gerenciar isso manualmente, depois com o Puppet ... mas com o EL6, eu criava um sintonizado perfil com todos os ajustes e scripts necessários, gerenciar os perfis e sua distribuição com o Puppet e controlar o daemon tuned com o Puppet.

Dado que, basta mover seus valores de ip e sysctl em um perfil personalizado e partir daí. Muito mais limpo.

    
por 06.08.2012 / 13:51