Ative a conexão de rede de forma transparente sob demanda

3

No Linux, estou procurando uma maneira de ativar uma conexão de rede assim que um programa tenta executar uma operação de rede que falharia se essa conexão de rede estivesse desativada, sem que o programa percebesse algo especial ocorrido atrás do cenas.

Mais geralmente, existe uma maneira de executar () uma imagem do programa no momento em que o sistema operacional percebe que uma certa operação de rede está prestes a falhar por um determinado motivo, então espere que o programa termine e, se o resultado for EXIT_SUCCESS, tente a operação de rede novamente?

    
por Fabio A. 12.06.2017 / 15:56

1 resposta

0

Is there a way to exec() a program image the moment the operating system realizes that a certain network operation is about to fail for a certain reason, then wait for that program to finish and, if the result is EXIT_SUCCESS, attempt the network operation again?

Não.

Quando a discagem por demanda era usada, ela dependia de tentativas que não eram acionadas pela conexão bem-sucedida. Uma rota padrão foi mantida, com os pacotes descartados até que a conexão fosse feita, para evitar erros de Network unreachable , que terminariam, e. Tentativas de conexão TCP imediatamente.

Eu imagino que a discagem por demanda do estilo antigo também dependia de tempos limite de DNS / contagens de tentativas maiores do que as usadas atualmente. Em um sistema moderno, ele desiste após 15 segundos, que não parece longo o suficiente .

O recurso de discagem por demanda, no entanto, era totalmente uma coisa, o que eu imagino que funcionou na maioria dos casos

without the program even noticing something special went on behind the scenes.

então como eu faria isso

Se você tentar desenterrar o código antigo, tenho certeza de que ele foi usado especificamente para PPP. Isso pode ou não ser útil para determinadas conexões de dados móveis modernas. Mas se não usar o PPP, não funcionará com o código antigo. A rota padrão foi atribuída à interface de rede, por exemplo ppp0 , mas o daemon PPP correspondente foi executado usando a opção ondemand e, portanto, não fez a conexão até que fosse necessário.

    
por 12.06.2017 / 16:48