SIOCADDRT: network is unreachable

Одной из причин возникновения ошибки SIOCADDRT: network is unreachable при вызове service network restart (см. снимок экрана) может послужить наличие строчки определяющий GATEWAY в конфигурационном файле /etc/sysconfig/network.

Вызов service network restart первым действием последовательно выключает интерфейсы, вторым действием поднимает их в следующей последовательности: lo, eth0, eth1, … .

За включение Ethernet интерфейса отвечает скрипт /etc/sysconfig/network-scripts/ifup-eth, который косвенно подключает файл /etc/sysconfig/network и файл /etc/sysconfig/network-scripts/ifcfg-ethX, где X — номер интерфейса.

В недрах ifup-eth представлены следующие строчки, отвечающие за добавление шлюза по умолчанию:

[geshi lang=bash]    # Set a default route.
    if [ -z "${GATEWAYDEV}" -o "${GATEWAYDEV}" = "${REALDEVICE}" ]; then
        # set up default gateway. replace if one already exists
        if [ -n "${GATEWAY}" -a "`ipcalc --network ${GATEWAY} ${NETMASK} 2>/dev/null`" = "NETWORK=${NETWORK}" ]; then
            ip route replace default ${METRIC:+metric $METRIC} \
                via ${GATEWAY} ${WINDOW:+window $WINDOW} ${SRC} \
                ${GATEWAYDEV:+dev $GATEWAYDEV}
        elif [ "${GATEWAYDEV}" = "${DEVICE}" ]; then
            ip route replace default ${METRIC:+metric $METRIC} \
                ${SRC} ${WINDOW:+window $WINDOW} dev ${REALDEVICE}
        fi
    fi[/geshi]

Получается, что если параметр GATEWAY определен в конфигурационном файле /etc/sysconfig/network и не определен параметр GATEWAYDEV попытка добавить шлюз по умолчанию будет последовательно перебираться для каждого интерфейса с eth0 до интерфейса, к которому данный шлюз принадлежит.

Соответственно, существует два варианта решения.

  • 1. Определить в конфигурационном файле /etc/sysconfig/network параметр GATEWAYDEV, указывающий интерфейс, на котором определена сеть, соответствующая шлюзу по умолчанию.
  • 2. Удалить параметр GATEWAY из конфигурационного файла /etc/sysconfig/network и задать его в конфигурационном файле /etc/sysconfig/network-script/ifcfg-ethX, где X — номер сетевого интерфейса, на котором определена сеть, соответствующая шлюзу по умолчанию.

Мне симпатичен второй вариант.

4 thoughts on “SIOCADDRT: network is unreachable

    • pppd должен автоматически выставлять маршрут по умолчанию. Это задается опцией defaultroute его конфигурационного файла.

  1. А здесь про какой диструбитив речь идёт? Я всегда прописываю шлюз через переменную GATEWAY в /etc/sysconfig/network, никогда не использовал GATEWAYDEV и никогда не видел такой ошибки в Centos/Fedora (в том числе и на роутерах с кучей активных сетевых интерфейсов).

Добавить комментарий

Ваш e-mail не будет опубликован.