Script Bash - Desativar conexões sem fio

0
OS: Arch Linux
Network Manager: Netctl

Estou tentando escrever um script bash que desabilitará todas as conexões de rede atuais e desativará o Wi-Fi no meu sistema. Atualmente, tenho o seguinte, mas depois de executar o netstat, ele não parece desconectar minhas conexões TCP atuais.

alias wifioff='sudo netctl stop wlp3s0-network'       # Stop WiFi

Como devo proceder para terminar todas as conexões ativas neste script? Eu suponho que eu só precisaria fazer isso com conexões TCP, já que o UDP seria sem conexão ... Certo?

    
por P0LYmath 24.10.2014 / 02:20

1 resposta

1

A desativação das interfaces de rede não faz com que as conexões TCP terminem em geral. É assim que o TCP / IP é projetado. A idéia é que os links desativados não façam com que as camadas superiores desistam das conexões, pois o problema pode ser transitório e desaparecer rapidamente, ou os protocolos de roteamento podem instalar rapidamente rotas alternativas e curar a rede dessa maneira. Pense em desconectar seu cabo ethernet por alguns segundos e conectá-lo novamente: sessões TCP que estão transmitindo dados ativamente através dele perderão alguns pacotes, incorrerão em alguns timeouts curtos e se recuperarão rapidamente (talvez após engatar o início lento) assim que o cabo é restaurado. Para mudar isso, o TCP ficaria muito frágil, já que cada pequeno soluço na rede se torna fatal para as sessões TCP impactadas.

Dito isto, você ainda quer terminar manualmente conexões TCP ativas a partir de um script de shell. Eu tenho medo que não exista uma interface óbvia no Linux para encontrar conexões TCP e forçá-las a encerrar.

Uma maneira de pensar é a origem de pacotes RST falsos (por exemplo, através de uma interface tun / tap) para enganar o kernel e pensar que a outra extremidade terminou a conexão. Isso é um grande esforço porque você precisa configurar a interface tun / tap (ou outro método de injeção de pacotes no kernel), encontrar o endereço IP remoto, o número da porta e o número de seqüência TCP corretos para o spoof e construir manualmente Cabeçalhos IP e TCP!

Um pouco de googling revela este método usando tcpkill . Talvez isso funcione para você.

    
por 24.10.2014 / 04:03