Beeline (Corbina) VPN - поднятие интернета под Gentoo/old NET config

Материал из AlexNook
Перейти к навигацииПерейти к поиску
Версия для печати больше не поддерживается и может содержать ошибки обработки. Обновите закладки браузера и используйте вместо этого функцию печати браузера по умолчанию.
File: /etc/conf.d/net
#настройки моей домашней сети eth1
dns_domain_lo="homenetwork"
config_eth1="192.168.0.1 netmask 255.255.255.0"

#Настройки билайна
#Есть возможность заменить на openl2tpd и использовать его
L2TP_BACKEND="xl2tpd"
# Таймаут ожидания поднятия l2tp
L2TP_TIMEOUT=20

# Указываете интерфейс, через который будет подниматься vpn (он будет смотреть в локалку билайна). У меня eth0
# Если отличается от указанного - меняете здесь и ниже в 2х строках _eth0 на свой
DEPEND="eth0"

# Указываете интерфейс туннеля
# Если отличается от указанного - меняете здесь и ниже в 2х строках _ppp0 на свой
L2TP="ppp0"
ROUTES="
    195.14.50.0/27
    78.106.0.0/15
    224.0.0.0/4
"

#Поменять eth0 на нужный
config_eth0="dhclient"
#Поменять eth0 на нужный
dhclient_eth0="-nw"

#Поменять ppp0 на нужный
config_ppp0="null"
#Поменять ppp0 на нужный
depend_ppp0() {
    need net.${DEPEND}
}

check_module () {
    if ! [[ -f /proc/net/pppol2tp ]]; then
    ebegin "Loading l2tp module"
    # try both new and old module names
        modprobe l2tp_ppp 2>/dev/null || modprobe pppol2tp 2>/dev/null
    eend $?.
    fi
}

checkconfig() {
    if [ "${L2TP_BACKEND}" = "xl2tpd" ]; then
        if [[ ! -f /etc/xl2tpd/xl2tpd.conf ]] ; then
            eerror "Missing /etc/xl2tpd/xl2tpd.conf configuration file!"
            eerror "Example configuration file could be found in doc directory."
            return 1
        fi

        if [ ! -d /var/run/xl2tpd ] ; then
            checkpath -d -m 755 /var/run/xl2tpd
        fi
    fi

    return 0
}

preup() {
    if [ -z "${L2TP_BACKEND}" ]; then
        L2TP_BACKEND="xl2tpd"
    fi

    checkconfig || return 1

    if [ x"${IFACE}" = x"${L2TP}" ]; then
        if [ "${L2TP_BACKEND}" = "xl2tpd" ]; then
            start-stop-daemon --start --quiet --exec /usr/sbin/xl2tpd
        else
            check_module
            start-stop-daemon --start --quiet --exec /usr/sbin/openl2tpd
        fi

        iface_timer=0
        while [ $iface_timer -lt $L2TP_TIMEOUT ]; do
            if [ -n "$(ifconfig | grep ${IFACE})" ]; then
                eend 0
                return 0
            else
                if [ ${iface_timer} -eq 0 ]; then
                    einfo "Waiting for l2tp..."
                fi
                sleep 1
                ((iface_timer++))
            fi
        done

        cleanup_l2tp
        eend 1
        return 1
    fi

    return 0
}

postup() {
    if [ x"${IFACE}" = x"${L2TP}" ]; then
        gw=`route -n | awk "{ if (\\$1 == \"0.0.0.0\" && \\$8 == \"${DEPEND}\") print \\$2 }"`
        vpn=`ifconfig | grep -A1 ${IFACE} | grep -i p-t-p | awk '{ print $3 }' | sed  's/p-t-p://gi'`
        #vpn=`ifconfig | grep -A1 ${IFACE} | grep -i dest | awk '{ print $6 }'`

        route add ${vpn} gw ${gw}

        for i in ${ROUTES}; do
            route add -net ${i} gw ${gw}
        done
    fi
    return 0
}

predown() {
    if [ -z "${L2TP_BACKEND}" ]; then
        L2TP_BACKEND="xl2tpd"
    fi

    if [ x"${IFACE}" = x"${L2TP}" ]; then
        gw=`route -n | awk "{ if (\\$1 == \"0.0.0.0\" && \\$8 == \"${DEPEND}\") print \\$2 }"`
        vpn=`ifconfig | grep -A1 ${IFACE} | grep -i p-t-p | awk '{ print $3 }' | sed  's/p-t-p://gi'`

        cleanup_l2tp

        if [ -n ${gw} ]; then
            route del ${vpn} gw ${gw}

            for i in ${ROUTES}; do
                route del -net ${i} gw ${gw}
            done
        fi

    fi
    return 0
}

cleanup_l2tp() {
        if [ "${L2TP_BACKEND}" = "xl2tpd" ]; then
            start-stop-daemon --stop --quiet --pidfile /var/run/xl2tpd.pid

            if [ -n "$(pidof xl2tpd)" ]; then
                killall -9 xl2tpd > /dev/null 2>&1
            fi

            if [ -e /var/run/xl2tpd.pid ]; then
                rm -f /var/run/xl2tpd.pid
            fi
        else
            start-stop-daemon --stop --quiet --pidfile /var/run/openl2tpd.pid

            if [ -n "$(pidof openl2tpd)" ]; then
                killall -9 openl2tpd > /dev/null 2>&1
            fi

            if [ -e /var/run/openl2tpd.pid ]; then
                rm -f /var/run/openl2tpd.pid
            fi
        fi

        killall pppd > /dev/null 2>&1
        if [ -n "$(pidof pppd)" ]; then
            killall -9 pppd > /dev/null 2>&1
        fi
}