Aggiungi percorso specifico tramite script di avvio


3

Devo impostare il percorso per uno dei miei computer. Lo voglio in modo permanente, quindi non ho bisogno di inserire il comando da solo ogni riavvio.

Tuttavia, il comando route che utilizzo non è normale, perché utilizzo 2 interfacce sulla stessa interfaccia fisica ( eth0e eth0:Bsulla scheda Ethernet).

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

Quindi penso di non poter usare il modo normale in cui Google mi dice .

La mia domanda è: se scrivo uno script e lo aggiungo $HOME/.kde4/Autostartinvece di modificarlo /etc/sysconfig/network/routes, ci sono effetti collaterali? Ci sono modi migliori per farlo?

Risposte:


1

Ho dovuto fare qualcosa di simile in un laboratorio a scuola lo scorso semestre. Ho usato uno script per determinare quale interfaccia ha un IP desiderato per la creazione dell'alias, quindi ho usato quell'interfaccia per creare l'alias. Seguito impostando il percorso.

Qualcosa di simile a:


#! /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

Utilizzare crontab o un altro metodo per eseguire lo script all'avvio.

Nota: questo non funzionerà se l'interfaccia è una connessione wireless.


Ciao; Ti do il kudo per la sceneggiatura. Tuttavia, voglio assicurarmi che non ci siano effetti collaterali, poiché questo computer esegue questo script fungerà da server. Se confermi di non avere problemi con questo tipo di routing, contrassegnerò la risposta a questa domanda.
Tiana987642,

Non posso garantire che funzionerà per te, ma ha funzionato per me. Avevo la sceneggiatura in esecuzione su tre macchine diverse e ha funzionato su tutte. Suggerirei di provare. Potrebbe essere necessario modificare TARGET_IP =, anche dove dice {IP_ADDRESS} e forse il comando route. Ma provalo, dovrebbe funzionare.
canadmos,

Bene, se funziona con te, allora dovrebbe andare bene per me. Grazie!
Tiana987642,

Il nome dell'interfaccia è passato come argomento negli script if-up.d. Quindi puoi scrivere: case "$ IFACE" in eth0) # do smth ;; esac
Roman Sklyarov,

1

Se non sei su una systemd distro (= Arch Linux, OpenSUSE, Fedora), puoi farlo nel tuo file / etc / network / interfaces, dove, presumo, stai configurando le tue vif.

Basta aggiungere alla stanza per l'interfaccia eth0: B queste due righe:

 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 

Questo lo farà automaticamente per te ogni volta che inizi a lavorare in rete (cosa che viene fatta all'avvio, o manualmente) e abbatterà anche il percorso se disattivi eth0: B.

Modificare:

su richiesta di @ Tiana987642, mostrerò come farlo nelle distribuzioni systemd. Dal momento che voglio che funzioni all'avvio, posso anche seguire il Wiki e definire un servizio che verrà gestito da systemd . Modificherò il Wiki il meno possibile:

/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

Queste configurazioni per le due interfacce sono puramente congetturali, è necessario sostituire le proprie. E ora /etc/systemd/system/network@.service

  [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 abiliti e avvii il servizio come al solito,

  systemctl enable network@eth0.service
  systemctl start network@eth0.service

Uso OpenSUSE 12.1 a 32 bit. Peccato, penso che questo sia un approccio simpatico. Grazie!
Tiana987642,

@ Tiana987642 Nelle distribuzioni systemd è ancora più semplice.
MariusMatutiae,

Puoi scriverlo qui? Può essere utile per me o per qualcun altro :)
Tiana987642

@ Tiana987642 Fatto.
MariusMatutiae,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.