Для поднятия сети на одной железке возникла необходимость создать bridge. Но загвоздка в том, что система должна при загрузке монтировать nfs в корень. Данное условие необходимо для возможности быстро изменить что-то в системе без необходимости лезть на флешку. Отладка идет полным ходом. Но основная проблема как раз в том, что при создании bridge сеть придется в любом случае оборвать. Nfs такого пережить не может и отваливается. Соответственно система дальше грузиться не может так как нету корневой файловой системы и сеть также сама вернуться не может.
Я уже думал искать какое-то альтернативное решение: как неожиданно мой коллега натолкнулся на небольшую заметку, в которой описано как обойти указанную проблему.
Сущность данного решения сводиться к тому, что надо все файлы, необходимые для
настройки bridge, скопировать в раздел с tmpfs, который будет доступен после
обрыва сети. Я, например, использовал /tmp
. А потом запустить создание
bridge из нового окружения. Данный метод работает на ура, нареканий не
заметил.
Вот собственно решение с моими малюсенькими изменениями:
set -x mount -o remount,exec /tmp R=/tmp/root IPADDR=192.168.0.159 mkdir -p "$R/proc" cp -r /sbin /bin /lib "$R" cat > "$R/script" <<EOF mount -t proc none /proc brctl addbr br0 brctl addif br0 eth0 ifconfig br0 "$IPADDR" ifconfig eth0 0.0.0.0 umount /proc EOF chroot "$R" sh script rm -r "$R/sbin" "$R/bin" "$R/lib"
В нутрь script
в принципе можно вставить все, что вам будет необходимо.
Хорош ли метод? Мне по крайней мере понравился. Есть еще предложения, как возможно решить данный вопрос?
5 комментариев:
~ % wget -O - http://www.ipdeny.com/ipblocks/ 2>/dev/null | grep 'data/countries/..\.zone' | sed -e 's|.*\(data/countries/...zone\).*|http://www.ipdeny.com/ipblocks/\1|' | while read url ; do wget -O - ${url} 2>/dev/null ; done | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n | aggregate | egrep '^192\.' | wc -l
1963
RFC соблюдать напрягает? :)
2 sandyWolf:
Давай по буквам. Что все это значит? И как помогает моей проблеме? Смысла что-то не видно...
IPADDR=192.168.0.159/8 грубо нарушает RFC1918
При таком назначении Вы блокируете 1963 неаггрегируемых префикса. Прошу заметить, эти префиксы уже кому-то розданы, и в них живут люди ;)
А что касается решения про бридж и нфсный рут... А что тут скажешь, проблема решена => имеет право на жизнь :)
Ок, понял )
Добрый день. Не могли бы вы подробнее объяснить? Подкскжите, что с этим скриптом нужно делать?
Отправить комментарий