Pull to refresh

Comments 21

А зачем вам на сервере X11, если не секрет?
Я единственный никсоид в компании, остальные сотрудники — квалифицированные Windows-администраторы. Не хочу никого обидеть, но им через интерфейс привычнее. А вообще, опыты проводились на пустом дистрибутиве CentOS с умолчальным набором софта, в который входили и иксы.
А с активным оборудованием ваши коллеги не работают? Мне что-то подсказывает, что они знакомы с CLI как минимум. Более того, вы у них отняли NetworkManager, с помощью которого в GUI можно что-то сделать. А так им все равно придется вызывать терминал, и уже в нём править конфигурацию. Не проще им было взять банальный PuTTY (например) и не вставая с рабочего места подкрутить что-то в консоли?
В общем, не могу одобрить подход в исполнении, несмотря на простой пример использования policy.
Простите, немного не понял. Насколько мы поняли, не позволить перезаписывать наши настройки Network Manager'у можно только этим путем.
Опять же, нам важно, чтобы настройки сохранялись после перезагрузки, чего Network Manager сделать не позволял: да, мы можем прописать все вручную, как в части статьи «Немного практики, или чего мы хотим», но это будет работать до первой перезагрузки.
Или все же есть какие-то другие способы сохранения таких настроек роутинга, о которых мы не знаем? Я буду только рад дополнить статью.
Вопрос как раз в том, через какой интерфейс вашим коллегам будет привычнее, а не как запретить NetworkManager перезаписывать конфигурацию. Безусловно, NetworkManager будет перезаписывать конфигурацию — это, скорее, десктопный сервис, не серверный. Но что за интерфейс вы оставили коллегам? Неужели им сложнее и непривычней зайти на сервер по SSH и что-то подправить, чем подойти к нему, увидеть X11, вызвать окошко терминала и править это что-то в нем? Опять же — если они квалифицированные Windows-администраторы, то зачем им что-то править на данном сервере?
Я потому и ругаюсь на конкретную реализацию.
Честно говоря, не понял Вашего посыла про PuTTY и интерфейс. Все вышеописанное делал я по SSH, основную часть времени все наши сотрудники на других nix-серверах сидят по тому же ssh. Но в некоторых случаях (у нас есть некоторые приложения, требующие X11, но не на этом сервере) приходится сидеть через VNC. Посему и сложилась привычка все настраивать посредством иксов. И потому-то я так долго искал ошибку — сам-то сидел посредством ssh, а только потом понял, что настройки выставляются точь-в-точь такие, как в NetworkManager.
1) cat /etc/sysconfig/NetworkManager | grep NM_RUN_ETCNET
NM_RUN_ETCNET_POST=yes
2) cat /etc/net/ifaces/eth6/ifup-post
/sbin/ip route replace default scope global nexthop via 11.11.8.1 dev eth6 weight 7 nexthop via 22.22.22.17 dev eth5 weight 3

ALTLinux, подсистема etcnet не участвует, но позволяет рулить NetwоrkManager'ом.
1) В центоси ведь, насколько мне известно, нет etcnet? Как тогда быть с той конфигой, что есть?
[root@serv]# cat /etc/NetworkManager/nm-system-settings.conf
[main]
plugins=ifcfg-rh

2) У меня ifup-post лежит только в папке /etc/sysconfig/network-scripts и
имеет весьма внушительный скрипт внутри
[root@serv network-scripts]# cat ifup-post
#!/bin/sh

cd /etc/sysconfig/network-scripts
. ./network-functions

[ -f ../network ] && . ../network

unset REALDEVICE
if [ "$1" = --realdevice ] ; then
    REALDEVICE=$2
    shift 2
fi

CONFIG=$1
source_config

[ -z "$REALDEVICE" ] && REALDEVICE=$DEVICE

if [ "$ISALIAS" = no ] ; then
    /etc/sysconfig/network-scripts/ifup-aliases ${DEVICE} ${CONFIG}
fi

/etc/sysconfig/network-scripts/ifup-routes ${REALDEVICE} ${DEVNAME}


if [ "$PEERDNS" != "no" -o -n "$RESOLV_MODS" -a "$RESOLV_MODS" != "no" ]; then
  [ -n "$MS_DNS1" ] && DNS1=$MS_DNS1
  [ -n "$MS_DNS2" ] && DNS2=$MS_DNS2
  if [ -n "$DNS1" ] && ! grep -q "^nameserver $DNS1" /etc/resolv.conf &&
   tr=`mktemp /tmp/XXXXXX` ; then
    current_replacement="$DNS1"
    next_replacement="$DNS2"
    search=
    (cat /etc/resolv.conf ; echo EOF ; echo EOF) | while read answer ; do
        case $answer in
            nameserver*|EOF)
                if [ -n "$current_replacement" ] ; then
                    echo "nameserver $current_replacement" >> $tr
                    if [ -n "$next_replacement" ] ; then
                        current_replacement="$next_replacement"
                        next_replacement=
                    else
                        current_replacement=
                    fi
                else
                    if [ "$answer" != EOF ] ; then
                        echo "$answer" >> $tr
                    fi
                fi
                ;;
            domain*|search*)
                if [ -n "$DOMAIN" ]; then
                    echo "$answer" | while read key value ; do
                        search="$search $value"
                    done
                else
                    echo "$answer" >> $tr
                fi
                ;;
            *)
                echo "$answer" >> $tr
                ;;
        esac
    done
    if [ -n "$DOMAIN" ]; then
        echo "search $DOMAIN $search" >> $tr
    fi

    # backup resolv.conf
    cp -af /etc/resolv.conf /etc/resolv.conf.save

    # maintain permissions
    # but set umask in case it doesn't exist!
    oldumask=`umask`
    umask 022
    change_resolv_conf $tr
    rm -f $tr
    umask $oldumask
  fi
fi

# don't set hostname on ppp/slip connections
if [ "$2" = "boot" -a \
     "${DEVICE}" != lo -a \
     "${DEVICETYPE}" != "ppp" -a \
     "${DEVICETYPE}" != "slip" ]; then
    if need_hostname; then
        IPADDR=`LANG= LC_ALL= ifconfig ${DEVICE} | grep 'inet addr' |
                awk -F: '{ print $2 } ' | awk '{ print $1 }'`
        eval `/bin/ipcalc --silent --hostname ${IPADDR}`
        if [ "$?" = "0" ]; then
            set_hostname $HOSTNAME
        fi
    fi
fi

# Notify programs that have requested notification
do_netreport

if [ -x /sbin/ifup-local ]; then
    /sbin/ifup-local ${DEVICE}
fi

exit 0


Исходя из этого документа, я должен просто дополнить этот файл своим содержимым?
1) В альте etcnet одна из фич. За СентОС не скажу, как-то не сталкивался. Просто предположил, что нечто подобное имеет место быть и там. Если там только NM — печально.
2) Вам решать, я бы оставил в rc.local (а ещё лучше в Autostart оконного менеджера или в ~/.xprofile — у каждого отдельного юзера), а не патчил кучу мест после каждого апдейта. Лучше включить NM обратно и добавить задержку в скрипт для того, чтобы гарантированно отработать после NM.

Ещё скажу, что в редакторе соединений NM (v 0.9.9.1) есть подраздел «Маршруты» c галочкой «игнорировать автоматически полученные маршруты». Возможно, это будет лучше всего.
Спасибо за статью!
Настроил по ней Centos 7 c двумя сетевыми картами, которые смотрят на разные сети и шлюзы.
Все работает.

В Centos 7 всплыли вот такие приколы:

1) Чтобы rc.local в принципе заработал надо ввести следующие команды:

chmod u+x /etc/rc.d/rc.local
systemctl start rc-local

Без них rc.local не алё.

2) Ну и NetworkManager прибивается вот так:

systemctl disable NetworkManager
systemctl stop  NetworkManager
Честно, про systemctl слышал поверхностно. Добавлю в пост. Что касаемо rc.local — предполагаю, что зависит от сборки, т.к. у меня запустилось сразу.
На момен написания статьи была 6.2.
А как можно посмотреть/сделать что-то типа графиков нагрузки шлюзов, проблема в том, что у меня все 3 шлюза в сети eth0, можно было б разбить на eth0:1,2,3 но на них придётся ставить один мак и IP, не будет ли что-то конфликтовать?
Конечно, можно мониторить. Cacti, Zabbix, Nload к вашим услугам. Но чтобы посоветовать точнее и ёмче, мне нужно более точно понять, что у вас за система такая, что на всех трех интерфейсах должны быть одинаковые мак и IP.
у провайдера 3 шлюза, каждый даёт по 30мбит/с, вот я и хочу меж ними балансироваться на openwrt
То есть вы хотите сказать, что у вас роутер? Или сразу три роутера? Если роутер — тут мало чем смогу помочь, т.к. WRT для меня потемки, а статья про Linux для PC. Если три роутера — то де-факто у вас таки 3 разных интерфейса в сервере-агрегаторе (фантазирую) и, соответственно, три разных IP и мака.
Вот в этом то и проблема, стоит роутер у меня дома, провайдет имеет 3 шлюза между которыми раскидывает абонентов на своё усмотрение, но на каждый шлюз меня пускает, если прописать вручную. Вот и появилась идея сделать балансировку между ними. Я так понимаю в торентах я получу суммарную скорость, и так, качая с разных сайтов получу по 30мбит/с с каждого. По нормальному этого не сделать, потому что многие инструкции для 2х кабелей в роутер, на разных интерфейсах, а у меня 1.
Попробуйте вместо роутера кинуть кабель напрямую в сетевую карту компьютера с Linux и на интерфейсе поднять еще 2 виртуальных. Не знаю, получится ли что-то, но с роутером точно не получится :)
На роутере то у меня Openwrt, собственно линуха. Ваша инструкция мне понравилась, её можно завести, если один интерфейс, хочется ещё смотреть нагрузку всех каналов. ;-)
Sign up to leave a comment.

Articles