[Linux] Netplan configuração automatica dependendo de qual rede está conectado

Para configurar o Netplan de modo que ele ajuste automaticamente as configurações dependendo da rede à qual você está conectado, você precisará criar diferentes perfis de configuração de rede e usar scripts que detectem a rede ativa e apliquem a configuração apropriada. Aqui está um exemplo básico de como você pode fazer isso:

Passo 1: Crie Perfis de Configuração no Netplan

  1. Crie diferentes arquivos de configuração do Netplan:
  • /etc/netplan/config_home.yaml
  • /etc/netplan/config_office.yaml
  • /etc/netplan/config_default.yaml
  1. Exemplo de conteúdo de /etc/netplan/config_home.yaml: network: version: 2 ethernets: eth0: dhcp4: yes nameservers: addresses: - 8.8.8.8 - 8.8.4.4
  2. Exemplo de conteúdo de /etc/netplan/config_office.yaml: network: version: 2 ethernets: eth0: dhcp4: yes nameservers: addresses: - 1.1.1.1 - 1.0.0.1
  3. Exemplo de conteúdo de /etc/netplan/config_default.yaml:
    yaml network: version: 2 ethernets: eth0: dhcp4: yes

Passo 2: Crie um Script para Detectar a Rede

  1. Crie um script em /usr/local/bin/change_netplan_config.sh: #!/bin/bash HOME_NETWORK="192.168.1." OFFICE_NETWORK="10.0.0." CURRENT_IP=$(ip route get 8.8.8.8 | awk '{print $7}') if [[ $CURRENT_IP == $HOME_NETWORK* ]]; then CONFIG_FILE="/etc/netplan/config_home.yaml" elif [[ $CURRENT_IP == $OFFICE_NETWORK* ]]; then CONFIG_FILE="/etc/netplan/config_office.yaml" else CONFIG_FILE="/etc/netplan/config_default.yaml" fi cp $CONFIG_FILE /etc/netplan/01-netcfg.yaml netplan apply
  2. Dê permissão de execução ao script:
    bash sudo chmod +x /usr/local/bin/change_netplan_config.sh

Passo 3: Automatize a Execução do Script

  1. Crie uma unidade de serviço do systemd para executar o script na inicialização e sempre que a conexão de rede mudar:
    • Crie o arquivo de serviço em /etc/systemd/system/change_netplan.service:
    [Unit] Description=Change Netplan Configuration Based on Network After=network-online.target Wants=network-online.target [Service] Type=oneshot ExecStart=/usr/local/bin/change_netplan_config.sh [Install] WantedBy=multi-user.target
  2. Ative o serviço: sudo systemctl enable change_netplan.service sudo systemctl start change_netplan.service
  3. Crie uma unidade de timer do systemd para verificar a rede periodicamente:
    • Crie o arquivo de timer em /etc/systemd/system/change_netplan.timer:
    [Unit] Description=Run change_netplan_config.sh every minute [Timer] OnBootSec=1min OnUnitActiveSec=1min Persistent=true [Install] WantedBy=timers.target
  4. Ative o timer:
    bash sudo systemctl enable change_netplan.timer sudo systemctl start change_netplan.timer

Com esses passos, o Netplan ajustará automaticamente as configurações de rede com base na rede à qual você está conectado. O script change_netplan_config.sh detecta a rede atual e copia o arquivo de configuração correspondente para o Netplan, aplicando as alterações em seguida.

CATEGORIES:

Software Livre

Tags:

Comments are closed