Vpn в Linux

Тема в разделе "Операционные системы", создана пользователем Hetman, 28 окт 2007.

Статус темы:
Закрыта.
  1. Hetman

    Hetman Гость

    OS: Fedora Core 7

    Ситуация такая:
    Мне удалось настроить SOLO-VPN. Для установления соединения приходится каждый раз выполнять последовательность комманд:
    Код (Text):
    #route del -net 0.0.0.0 netmask 0.0.0.0 gw 192.168.3.1
    # pptp 195.222.71.201 nodetach user [user_name]
    Using interface ppp0
    Connect: ppp0 <--> /dev/pts/9
    CHAP authentication succeeded
    CHAP authentication succeeded
    not replacing existing default route via 192.168.3.1
    local IP address 195.222.67.97
    remote IP address 195.222.71.240
    соединение устанавливается, но каждый раз это делать не удобно.
    в нете нашёл скрипт
    Код (Text):
    #!/bin/sh

    #
    # fix broken path
    #
    PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:.
    export PATH

    #
    # network settings
    #
    USER=221784vp2
    NETWORK=192.168.0.0 # // настроить на для своей сети
    NETMASK=255.255.0.0 #// обычно вроде такая и останется
    VPNSERVER=192.168.21.201 #// Смените на ваш адрес vpn-сервера
    GATEWAY=192.168.3.1 #// Указать свой
    DEVICE=eth0 #// если нужно, то тоже сменить

    #
    # vpn stuff
    #
    PPPD=/usr/sbin/pppd
    PPTP=/usr/sbin/pptp

    if [ ! -x $PPPD ]; then
    echo «$0: $PPPD not found»
    exit 1
    fi

    if [ ! -x $PPTP ]; then
    echo «$0: $PPTP not found»
    exit 1
    fi

    #
    # here we go
    #
    case «$1» in
    start)
    if [ ! -d /var/run/pptp ]; then
    mkdir /var/run/pptp
    fi
    if [ -f /var/run/pptp/remote ]; then
    if ping -vc1 'cat /var/run/pptp/remote'; then
    exit 1
    fi
    killall -HUP pptp
    killall -TERM pppd
    sleep 2
    fi
    rm -rf /var/run/pptp/* >/dev/null
    route del default
    route add -net $NETWORK netmask $NETMASK gw $GATEWAY dev $DEVICE
    echo -n «===> Starting vpn: »
    ($PPTP $VPNSERVER defaultroute noauth user $USER && \
    echo -n «done») || echo -n «failed»
    echo
    ;;
    stop)
    echo -n «===> Stopping vpn: »
    killall -HUP pptp
    killall -TERM pppd
    sleep 2
    rm /var/run/pptp/* >/dev/null
    route del -net $NETWORK netmask $NETMASK gw $GATEWAY dev $DEVICE
    route add default gw $GATEWAY dev $DEVICE
    echo «done»
    ;;
    restart)
    $0 stop
    sleep 2
    $0 start
    ;;
    *)
    echo «*** Usage: vpn {start|stop|restart}»
    exit 1
    ;;
    esac

    exit 0
    Но он почему-то не работает (при запуске у меня выдаёт что не найдены команды stop|restart)
    А сделать свой скрипт не получается.
    Он у меня разбит на 2 файла.
    1-й "vpn-start"
    Код (Text):
    #/bin/bash

    PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:.
    export PATH

    # network settings
    USER="2*****vp2"        # логин для доступа в интернет
    NETWORK="192.168.0.0"       # настроить для своей сети
    NETMASK="255.255.0.0"       # обычно вроде такая и останется или "255.255.255.0"
    VPNSERVER="192.168.21.201"  # Смените на ваш адрес vpn-сервера
    GATEWAY="192.168.3.1"       # шлюз
    DEVICE=eth0         # устройство (сетевая карта) смотрящая в LAN

    ./solo-routing $VPNSERVER $GATEWAY # спрашивайте у провайдера
    route del -net 0.0.0.0 netmask 0.0.0.0 gw $GATEWAY # необходимо!
    echo '============================='
    route -n # показываем изменения в таблице машрутизации
    echo '============================='

    # например:
    # pptp 195.222.71.201 nodetach user 221784vp2
    pptp $VPNSERVER nodetach user $USER # установка соединения
    # route add -net 0.0.0.0 netmask 0.0.0.0 dev ppp0
    Второй - "solo-routing" (необязательный)
    Код (Text):
    #/bin/bash
    # network settings
    VPNSERVER=$1 # 195.222.071.201
    GATEWAY=$2  # 192.168.003.001

    route add -host 195.222.70.29 gw $GATEWAY
    route add -host 195.222.70.30 gw $GATEWAY
    route add -host 195.222.70.31 gw $GATEWAY
    route add -host 195.222.70.32 gw $GATEWAY
    route add -host $VPNSERVER gw $GATEWAY
    route add -host 195.222.64.67 gw $GATEWAY
    route add -host 195.222.70.114 gw $GATEWAY
    route add -host 195.222.70.10 gw $GATEWAY
    route add -host 195.222.70.238 gw $GATEWAY
    route add -host 195.222.90.193 gw $GATEWAY
    route add -host 195.222.70.198 gw $GATEWAY
    route add -host 195.222.70.230 gw $GATEWAY
    route add -host 195.222.70.202 gw $GATEWAY
    route add -host 195.222.70.214 gw $GATEWAY
    route add -host 195.222.90.2 gw $GATEWAY
    route add -host 195.222.70.218 gw $GATEWAY
    route add -host 195.222.70.190 gw $GATEWAY
    route add -host 195.222.70.222 gw $GATEWAY
    echo "solo routing are done!"
    так вот если вручную вбивать команды в терминале (см. выше) то всё OK, если запустить скрипт - соединение не устанавливается. при этом DNS как бы нет.
    до запуска скрипта
    Код (Text):
    # route -n
    Kernel IP routing table
    Destination  Gateway         Genmask         Flags Metric Ref   Use Iface
    195.222.71.240 0.0.0.0       255.255.255.255 UH 0    0      0 ppp0
    192.168.122.0  0.0.0.0       255.255.255.0  U    0   0      0 virbr0
    169.254.0.0  0.0.0.0         255.255.0.0     U   0   0      0 eth0
    192.168.0.0  0.0.0.0         255.255.0.0     U   0   0      0 eth0
    0.0.0.0      192.168.3.1     0.0.0.0         UG 0    0      0 eth0
    # ping ya.ru
    PING ya.ru (213.180.204.8) 56(84) bytes of data.

    --- ya.ru ping statistics ---
    7 packets transmitted, 0 received, 100% packet loss, time 5999ms

    [CTRL+C]
    DNS работает, хоть пинг и не проходит(как и должно быть). А после запуска скрипта - нет.

    Код (Text):
     #route -n
    Kernel IP routing table
    Destination  Gateway         Genmask         Flags Metric Ref   Use Iface
    195.222.70.214 192.168.3.1   255.255.255.255 UGH  0  0      0 eth0
    195.222.70.198 192.168.3.1   255.255.255.255 UGH  0  0      0 eth0
    195.222.90.193 192.168.3.1   255.255.255.255 UGH  0  0      0 eth0
    195.222.64.67  192.168.3.1   255.255.255.255 UGH  0  0      0 eth0
    195.222.70.230 192.168.3.1   255.255.255.255 UGH  0  0      0 eth0
    195.222.70.114 192.168.3.1   255.255.255.255 UGH  0  0      0 eth0
    195.222.70.32  192.168.3.1   255.255.255.255 UGH  0  0      0 eth0
    195.222.90.2    192.168.3.1  255.255.255.255 UGH  0  0      0 eth0
    195.222.70.10  192.168.3.1   255.255.255.255 UGH  0  0      0 eth0
    195.222.70.190 192.168.3.1   255.255.255.255 UGH  0  0      0 eth0
    195.222.70.222 192.168.3.1   255.255.255.255 UGH  0  0      0 eth0
    195.222.70.238 192.168.3.1   255.255.255.255 UGH  0  0      0 eth0
    192.168.21.201 192.168.3.1   255.255.255.255 UGH  0  0      0 eth0
    195.222.70.30  192.168.3.1   255.255.255.255 UGH  0  0      0 eth0
    195.222.70.31  192.168.3.1   255.255.255.255 UGH  0  0      0 eth0
    195.222.70.218 192.168.3.1   255.255.255.255 UGH  0  0      0 eth0
    195.222.70.202 192.168.3.1   255.255.255.255 UGH  0  0      0 eth0
    195.222.70.29  192.168.3.1   255.255.255.255 UGH  0  0      0 eth0
    192.168.122.0  0.0.0.0       255.255.255.0  U    0   0      0 virbr0
    169.254.0.0  0.0.0.0         255.255.0.0     U   0   0      0 eth0
    192.168.0.0  0.0.0.0         255.255.0.0     U   0   0      0 eth0
    # ping ya.ru
    connect: Сеть недоступна
    и соединение перестаёт запускаться в ручную
    Код (Text):
    # /usr/sbin/pptp 195.222.71.201 nodetach user 2*****vp2
    anon warn[pptp_gre_bind:pptp_gre.c:95]: connect: Network is unreachable
    anon fatal[main:pptp.c:284]: Cannot bind GRE socket, aborting.
    подозреваю что это какая-то особенность Федоры. Подскажите что предпринять. Если удастся всё сделать, собираюсь сделать полный FAQ на тему.
    P.S.
    инет через VPN в Fedore core 7 ИМХО работает медленно - иногда большие задержки
     
  2. Plashchynski

    Plashchynski Гость

    Строка в скрипте:
    echo «*** Usage: vpn {start|stop|restart}»

    Скрипт хочет явного указания параметра, запускай:
    <имя_скрипта> start для запуска.
    Соответственно stop для остановки и restart для перезапуска.

    Вообще лучше почитай:
    http://oz.by/books/more.phtml?id=102899&partner=homenet

    Тебе это больше поможет, чем глупые вопросы на форумах :(
     
  3. Hetman

    Hetman Гость

    <!--QuoteBegin-Plashchynski+2:11:2007, 22:23 -->
    <span class="vbquote">(Plashchynski @ 2:11:2007, 22:23 )</span><!--QuoteEBegin-->Строка в скрипте:
    echo «*** Usage: vpn {start|stop|restart}»

    Скрипт хочет явного указания параметра, запускай:
    <имя_скрипта> start для запуска.
    Соответственно stop для остановки и restart для перезапуска.

    Вообще лучше почитай:
    [snapback]84128" rel="nofollow" target="_blank[/snapback]</div>[/quote]
    зря ты так думаешь! я пытаюсь запустить скрипт именно командой "vpn start" явно указывая, что хочу сделать, но скрипт выдаёт ошибку. повторяю возможно это кая-то особенность 7-й федоры но этот скрипт там не пашет! ругается именно на эту строку "echo «*** Usage: vpn {start|stop|restart}»"
    А твоя ссылка битая!
     
  4. Llama

    Llama Гость

    Ну если у вас есть последовательность командкоторая поднимает VPN - запишите её в файл, напишите впереди #!/bin/bash, сделайте файл исполнимым и используйте его...
    Отдельно можно скажем сделать обработку параметров start и stop.
    Для того, чтобы после запуска VPN pptp/pppd демонизировались и отдавали терминал - замените в вызове nodetach на detach
    Для остановки используйте что-то типа kill -SIGTERM `pidof pppd`

    читать. до выпадения в нивану - авось какие-то вопросы и не возникнут.
    http://linux.by/wiki/index.php/FAQ_Net
     
  5. Hetman

    Hetman Гость

    в том то и прикол что не получатеся забить последовательность команд в скрипт. ну ну хочет он из скрипта запускаться! а вот в терминале запускается.
    я попробую
     
Загрузка...
Похожие Темы - Vpn Linux
  1. Leon
    Ответов:
    4
    Просмотров:
    89
  2. jackpirate
    Ответов:
    3
    Просмотров:
    161
  3. anna webware
    Ответов:
    1
    Просмотров:
    277
  4. In-Disguise-VPN
    Ответов:
    1
    Просмотров:
    767
  5. IseLL
    Ответов:
    0
    Просмотров:
    1.028
Статус темы:
Закрыта.

Поделиться этой страницей