3

Мне нужно настроить маршрут для одного из моих компьютеров. Я хочу это постоянно, поэтому мне не нужно вводить команду сам при каждой перезагрузке.

Однако команда маршрутизации, которую я использую, не является нормальной, потому что я использую 2 интерфейса на одном физическом интерфейсе (eth0 и eth0:B на карте Ethernet).

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

Так что я думаю, что не могу использовать обычный способ, как Google говорит мне.

Мой вопрос: если я напишу скрипт и добавлю его в $HOME/.kde4/Autostart вместо изменения /etc/sysconfig/network/routes routs , есть ли побочные эффекты? Есть ли лучшие способы сделать это?

2 ответа2

1

Если вы не находитесь в системном дистрибутиве (= Arch Linux, OpenSUSE, Fedora), вы можете сделать это в файле /etc /network /interfaces, где, как я полагаю, вы настраиваете свои vif-файлы.

Просто добавьте в раздел для интерфейса eth0:B следующие две строки:

 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 

Это будет делать это автоматически для вас каждый раз, когда вы начинаете работать в сети (что происходит при загрузке или вручную), а также разрушает маршрут, если вы выключите eth0:B.

Редактировать:

по запросу @ Tiana987642 я покажу, как это сделать в дистрибутивах systemd. Так как я хочу, чтобы это работало при загрузке, я могу также следовать вики и определить сервис, который будет запускать systemd. Я изменю вики как можно меньше:

/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

Эти конфигурации для двух интерфейсов являются чисто предположительными, вы должны заменить свои собственные. А теперь /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

и вы включаете и запускаете службу как обычно,

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

В прошлом семестре мне пришлось делать нечто подобное в лаборатории в школе. Я использовал скрипт, чтобы определить, какой интерфейс имеет желаемый IP-адрес для создаваемого псевдонима, а затем использовал этот интерфейс для создания псевдонима. Далее следует настройка маршрута.

Что-то вроде:


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

Используйте crontab или другой метод для запуска скрипта при запуске.

Примечание: это не будет работать, если интерфейс является беспроводным соединением.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .