Como posso ser notificado sobre mudanças de estado em um adaptador VPN?

2

No Ubuntu 12.04 - na verdade, o Kubuntu, mas eu estou usando o NetworkManager, então a configuração deve ser a mesma - eu configurei algumas conexões VPN.

Agora, se eu tiver um up / download de longa duração, como posso garantir que todo o tráfego de rede seja interrompido imediata e incondicionalmente se a conexão VPN se romper?

O que estou procurando é algum método de ser notificado (não quero pesquisar!) da alteração. O resto (por exemplo, inserindo regras do netfilter) eu posso lidar comigo mesmo. Eu só preciso descobrir como ser notificado sobre uma alteração em uma conexão estabelecida.

Caso seja importante, a configuração que estou usando é baseada em tun0 . Se outros detalhes forem necessários, me avise em um comentário e os adicionarei à pergunta.

O que tentei até agora:

  • configura a conexão LAN principal (isso é dentro de uma VM, portanto, existe apenas uma conexão LAN) para ser manual
  • configura a VPN para ser automática

então percebi que essa não é a rota que quero seguir, porque quero iniciar meu script / programa para ser notificado sempre que ativar a VPN. Eu não estou correndo na VPN o tempo todo, mas na maioria das vezes.

Então, basicamente, eu preciso me registrar para receber uma notificação assim que uma conexão VPN específica for estabelecida e, em seguida, ser notificado se algo acontecer com ela para derrubar a conexão principal automaticamente em resposta.

    
por 0xC0000022L 07.06.2013 / 01:15

1 resposta

1

O NetworkManager deve poder fazer isso por você. Na página do manual:

Information about networking is exported via a D-Bus interface to any interested application, providing a rich API with which to inspect and control network settings and operation.

NetworkManager will execute scripts in the /etc/NetworkManager/dispatcher.d directory in alphabetical order in response to network events.

...

Each script receives two arguments, the first being the interface name of the device just activated, and second an action.

Actions:

...

vpn-up: A VPN connection has been activated. The environment contains the connection UUID in the variable CONNECTION_UUID.

vpn-down: A VPN connection has been deactivated.

Portanto, parece que você tem duas rotas: conectar-se ao D-Bus para escutar eventos e agir com base neles ou descartar alguns scripts em /etc/NetworkManager/dispatcher.d/ . Este último parece o caminho de menor resistência.

    
por 23.06.2013 / 10:03