Adicionar rota específica via script de inicialização

3

Eu preciso configurar a rota para um dos meus computadores. Eu quero permanentemente, então eu não preciso digitar o comando de mim mesmo a cada reinicialização.

No entanto, o comando route que eu uso não é normal, porque eu uso 2 interfaces na mesma interface física ( eth0 e eth0:B na placa ethernet).

route add -net 10.1.0.0/16 dev eth0:B 192.168.1.1

Então, acho que não posso usar a forma normal que o Google me diz .

Minha pergunta é: se eu escrever um script e adicioná-lo a $HOME/.kde4/Autostart em vez de modificar /etc/sysconfig/network/routes , existem efeitos colaterais? Existem maneiras melhores de fazer isso?

    
por Tiana987642 15.12.2013 / 17:36

2 respostas

1

Eu tive que fazer algo semelhante em um laboratório na escola no semestre passado. Eu usei um script para determinar qual interface tem um IP desejado para o alias a ser criado, então use essa interface para criar o alias. Seguido pela configuração da rota.

Algo como:


#! /bin/bash

# First get all the NIC device names on the system
dev_names=$(/sbin/ifconfig | grep HWaddr| awk '{print $1}')

# Set a loop to loop through each device name
#
my_dev=
TARGET_IP=192.168.1

for d_name in ${dev_names}
do

echo "Checking device name $d_name ..."

status=$(/sbin/ifconfig $d_name|grep ${TARGET_IP})

if [ ! -z "$status" ]
then
        echo "$d_name contains the target IP $TARGET_IP"
        my_dev=$d_name
fi
done
echo "The target NIC device name should be $my_dev"

# Now set the alias
/sbin/ifconfig $my_dev:B {IP_ADDRESS}

# Now add the route
route add -net 10.1.0.0/16 dev eth0:B 192.168.1.1

Use o crontab ou outro método para executar o script na inicialização.

Observação: isso não funcionará se a interface for uma conexão sem fio.

    
por 15.12.2013 / 19:49
1

Se você não estiver em uma distribuição systemd (= Arch Linux, OpenSUSE, Fedora), você pode fazê-lo dentro do seu arquivo / etc / network / interfaces, onde, presumo, você está configurando seus vifs.

Basta adicionar à estrofe da interface eth0: B estas duas linhas:

 post-up route add -net route add -net 10.1.0.0/16 gw 192.168.1.1 dev eth0:B 
 pre-down route delete -net route add -net 10.1.0.0/16 gw 192.168.1.1 dev eth0:B 

Isso fará isso automaticamente para você toda vez que você iniciar a rede (o que é feito na inicialização ou manualmente) e também desmontará a rota se você desativar a eth0: B off.

Editar:

no pedido do @ Tiana987642, mostrarei como fazer isso em distribuições systemd. Como eu quero que isso funcione na inicialização, eu também posso seguir o Wiki e definir um serviço para ser executado por systemd . Modificarei o Wiki o menos possível:

/etc/conf.d/network@eth0

  address1=192.168.0.15
  netmask1=24
  broadcast1=192.168.0.255
  gateway1=192.168.0.1
  address2=10.0.0.17
  netmask2=24
  broadcast2=10.0.0.255
  gateway2=10.0.0.1

Estas configurações para as duas interfaces são puramente conjunturais, você deve substituir as suas próprias. E agora /etc/systemd/system/[email protected]

  [Unit]
  Description=Network connectivity (%i)
  Wants=network.target
  Before=network.target
  BindsTo=sys-subsystem-net-devices-%i.device
  After=sys-subsystem-net-devices-%i.device

  [Service]
  Type=oneshot
  RemainAfterExit=yes
  EnvironmentFile=/etc/conf.d/network@%i

  ExecStart=/usr/bin/ip link set dev %i up
  ExecStart=/usr/bin/ip addr add ${address1}/${netmask1} broadcast ${broadcast1} dev %i
  ExecStart=/usr/bin/ip route add default via ${gateway1}

  ExecStart=/usr/bin/ip link add link $i name $i:B type vlan id 10

  ExecStart=/usr/bin/ip link set dev %i:B up
  ExecStart=/usr/bin/ip addr add ${address2}/${netmask2} broadcast ${broadcast2} dev %i:B
  ExecStart=/usr/bin/ip route add default via ${gateway2}

  ExecStop=/usr/bin/ip addr flush dev %i
  ExecStop=/usr/bin/ip link set dev %i down
  ExecStop=/usr/bin/ip addr flush dev %i:B
  ExecStop=/usr/bin/ip link set dev %i:B down

  [Install]
  WantedBy=multi-user.target

e você ativa e inicia o serviço como de costume,

  systemctl enable [email protected]
  systemctl start [email protected]
    
por 17.12.2013 / 07:05