2015-06-12 4 views
5

Целью было часто менять исходный IP-адрес по умолчанию на компьютере с несколькими интерфейсами и жить ips.Что может помешать частому переключению источника ip по умолчанию с несколькими интерфейсами

Я использовал ip-маршрут для замены по умолчанию в соответствии с его документацией и позволял скрипту работать в цикле на некоторый интервал. Он немного меняет источник ip-кода, но затем все интернет-доступ к компьютеру теряется. Он должен быть удаленно перезагружен с веб-интерфейса, чтобы иметь любую работу

Есть ли что-то, что могло бы помешать этому работать стабильно. Я пробовал это на нескольких серверах?

Ниже приведен минимальный пример

# extract all currently active source ips except loopback 
IPs="$(ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | 
awk '{ print $1}')" 

read -a ip_arr <<<$IPs 

# extract all currently active mac/ethernet addresses 
Int="$(ifconfig | grep 'eth'| grep -v 'lo' | awk '{print $1}')" 
read -a eth_arr <<<$Int 

ip_len=${#ip_arr[@]} 
eth_len=${#eth_arr[@]} 

i=0; 
e=0; 

while(true); do 

    #ip route replace 0.0.0.0 dev eth0:1 src 192.168.1.18 
    route_cmd="ip route replace 0.0.0.0 dev ${eth_arr[e]} src ${ip_arr[i]}" 
    echo $route_cmd 
    eval $route_cmd 

    sleep 300 

    (i++) 
    (e++) 

    if [ $i -eq $ip_len ]; then 
     i=0; 
     e=0; 
     echo "all ips exhausted - starting from first again" 
    # break; 
    fi 

done 
+0

'(истина)' ошибка (безвредно, но тем не менее, ошибка), что порождает бессмысленную подоболочку. Вам не хватает открытия '(' на строке 'i ++' (я предполагаю, что это опечатка транскрипции, хотя. Не путайте с 'eval', когда вам это не нужно (и вам не обязательно сюда). вы хотите увидеть запущенную команду, вы можете использовать 'set -x' /' set + x' или 'set -v' /' set + v' в строке 'ip route', чтобы заставить оболочку распечатать ('-x') или строка, которую он читает (' -v') у вас. Где в процессе происходит нарушение? Конец первого прохода? Случайно? Каково состояние маршрутов, когда это происходит ? –

+0

Все интерфейсы в одной локальной сети (например, 192.168.1.0/24?) – RTLinuxSW

+0

Спасибо, ребята, извините за то, что скрипт работает отлично даже в течение нескольких дней, когда он работает в фоновом режиме. Для первых 10 15 итераций (где в основном ip изменяется примерно в 15 раз), все отлично работает. После этого случайная возможность доступа к интернету теряется с этой машины. Поскольку это удаленный сервер, я не могу пинговать ни один из интерфейсов, поэтому я должен перезагрузить его из на основе http-панели управления, чтобы получить обратно ssh-доступ. Да, они все в одной локальной сети. Но все являются живыми IP-адресами – fayyazkl

ответ

4

Я хотел бы прокомментировать, но я не имею достаточно очков, он не позволит мне.

Рассмотрим:

  • ли изменения времени задержки перед его запуском снова изменить число итераций, прежде чем он потерпит неудачу?
  • Экспортировать ifconfig & маршруты каждый раз, когда вы его изменяете, чтобы узнать, что-то значимо отличается со временем. Возможно, некоторые базовые тесты (ping, nslookup и т. Д.) В основном, найдите то, что с ним происходит. Также экспортируйте команды, которые вы отправляете в файл журнала (текстовый файл для каждого изменения?), Чтобы увидеть изменения в них, чтобы узнать, отличается ли их после x итераций.
  • Какая связь теряется? Входящие? Исходящий? Конкретные приложения?
  • Вы говорите, что используете/делаете это на других серверах без проблем?
  • Существуют ли IP-адреса: статические (/ etc/network/interfaces), bootp/DHCP, полустатические (сервер загрузки/DHCP-сервера, основанный на MAC-адресе), а если обслуживается bootp/DHCP, то какова продолжительность аренды ?

На последнем замечании: 10 bootp/dhcp предоставит IP для продолжительности x. скажем, 60 минут. По истечении половины этого времени он «проверит» сервер bootp/dhcp, если он сможет сохранить IP-адрес, и продлить срок аренды до 60 минут, это может означать небольшую реконфигурацию ifconfig (возможно, даже в то же время вашего скрипта ?).

HTH

+0

Спасибо. Я пробовал большинство рекомендаций. a) Нет b) Я уже записывал файл в файл. Таблицы маршрутизации и все они совершенно то, что должно быть после каждого изменения. c) Первичная потеря связи является исходящей. Но из-за того, что машина удалена, и я в нее вникаю, это приводит к тому, что мое ssh-соединение также замерзает. – fayyazkl

+0

d) Нет, я действительно пробовал это на двух разных серверах - каждый с 4-5 интерфейсами и разницей в реальном времени ip, и результат был идентичным. e) ips основаны на DHCP, но срок аренды намного дольше. Я буду переоценивать каждого из них, хотя, если я пропустил что-то, включая ваш последний момент. Понятно, что. – fayyazkl

+0

Хм, исходящий не работает может означать 2 вещи. 1. внутренняя не может найти свой путь «вне» или 2. Внешнее оборудование/программное обеспечение запутывается. – Morph

 Смежные вопросы

  • Нет связанных вопросов^_^