The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Создание VPN GRE тунеля в Linux (linux vpn tunnel)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: linux, vpn, tunnel,  (найти похожие документы)
From: Фёдоров Алексей <[email protected]> Date: Mon, 25 Feb 2003 Subject: Создание VPN GRE тунеля в Linux Создание VPN тунеля в линукс (Linux) за 5 минут без дополнительного ПО. ------------------- Просмотрев много статей по созданию тунелей я к своему удивлению не нашел ничего о том как быстро и без проблем создать тунель между двумя машинами (сетями) через интернет. И вот решил написать. Буду предельно краток... И так, ДАНО: 1. Сеть 192.168.1.0/24 (255.255.255.0) В которой есть машина подключенная к интернет. Со стороны локальной сети машина имеет IP: 192.168.1.1 (на eth1) а со стороны инета имеет IP: 195.64.21.123 (на eth0) Назовем эту машину ALPHA. 2. Сеть 192.168.2.0/24 (255.255.255.0) В которой есть машина подключенная к интернет. Со стороны локальной сети машина имеет IP: 192.168.2.1 (на eth1) а со стороны инета имеет IP: 62.5.195.124 (на eth0) Назовем эту машину BETTA. Цель: Надо организовать тунель между машинами ALPHA и BETTA, чтобы компьютеры одной сети имели доступ к компьютерам в другой сети. Решение: Пишется скрипт следующего содержания и запускается на машине ALPHA: #!/bin/sh # insmod ip_gre tnl=tnl0 remote=62.5.195.124 local=195.64.21.123 ip=192.168.1.1 range=192.168.2.0/24 # ip tunnel del $tnl ip tunnel add $tnl mode gre local $local remote $remote ttl 255 ip addr add $ip dev $tnl ip link set $tnl up ip route add $range dev $tnl ----------------------------------------------------------------------- А для машины BETTA пишется другой аналогичный скрипт и запускается: #!/bin/sh # insmod ip_gre tnl=tnl0 remote=195.64.21.123 local=62.5.195.124 ip=192.168.2.1 range=192.168.1.0/24 # ip tunnel del $tnl ip tunnel add $tnl mode gre local $local remote $remote ttl 255 ip addr add $ip dev $tnl ip link set $tnl up ip route add $range dev $tnl ------------------------------------------------------------------------- И ВСЕ. Тепрь две сетки связаны тунелем. Теперь примечания: 1.) Ядро должно быть собрано с включенными опциями поддержки тунелей (GRE в частности). А так же с включенной опцией поддержки Advanced Routing. (У меня вообще все фичи того что касается IP сетей ВКЛЮЧЕНЫ БЫЛИ) 2.) Строка "insmod ip_gre" у меня закоментирована т.к. ядро собрано без модулей (все в ядре). Если у вас используются модули для тунеля, то просто раскоментируйте строку в скриптах. 3.) Строка "ip tunnel del $tnl" у меня закоментирована. Если ее раскоментировать то все будет работать, но при ПЕРВОМ запуске скрипта он ругнется (что не страшно). Она нужна для того, если вы хотите повторно запустить скрипт (например сделали изменения в параметрах тунеля) Тогда эта строка прибьет существующий тунель и потом будет создан новой. При первом запуске прибивать нечего, а потому скрипт ругается :) Для того чтоб никого не смущать я ее закоментировал. Это все. Если что пишите на [email protected] PS: Испытания проводились на ядрах Linux 2.4.19 2.4.20

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, Иван (?), 11:09, 03/03/2003 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    От себя замечу, Что стоит обратить внимание
    на MTU такого туннеля. Он на 20 байт меньше.
    И это вызывает проблемы с некоторыми сайтами.
    И еще если применяется прозрачный прокси.

    Все это решается опцией mtu в комманде
    ip route.

    Удачи.

     
     
  • 2.9, Vladimir Skripka (?), 15:06, 21/04/2004 [^] [^^] [^^^] [ответить]  
  • +/
    >От себя замечу, Что стоит обратить внимание
    >на MTU такого туннеля. Он на 20 байт меньше.
    >И это вызывает проблемы с некоторыми сайтами.
    >И еще если применяется прозрачный прокси.
    >
    >Все это решается опцией mtu в комманде
    >ip route.
    >
    >Удачи.

    Решается для почти всех видов туннелей таким образом:
    iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN \
                        -j TCPMSS --clamp-mss-to-pmtu

    Можно и в INPUT/OUTPUT добавить.
    Мешать не будет. ;-)


     

  • 1.2, Аноним (2), 12:36, 21/03/2003 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Будет-ли при этом обеспечено шифрование, если нет, то как это сделать? ( через SSH )?
     
     
  • 2.5, Алексей Фдоров (?), 10:56, 06/06/2003 [^] [^^] [^^^] [ответить]  
  • +/
    Нет. При таком построении тунеля ШИФРОВАНИЕ НЕ ОБЕСПЕЧИВАЕТСЯ.
    Если вы хотите построить защищенный тунель, то я бы рекомендовал использовать IPSEC (с использованием RSA ключей).
    Он более сложен в настройке, однако по моему личному опыту достаточно защищен.....
     

  • 1.3, Евгений (?), 23:48, 25/03/2003 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    http://www.opennet.me/tips/info/211.shtml
     
  • 1.4, Aleksey (?), 17:31, 21/04/2003 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Есть сервер vpn.example.ru (win) и машина (с внутренним адресом и внешним для интернет, кот. дает vpn.example.ru) в локальной сети, есть доступ до vpn.example.ru,
    можно ли настроить тоннель, так чтобы не изменять ничего на сервере?
    У себя в win все работает, как перенести настройки в Lin?
     
  • 1.6, Андрей Слободяник (?), 14:54, 24/10/2003 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Если у вас в цепочках INPUT и OUTPUT стоит политика по умолчанию DROP, то не забудьте добавить правила типа:
    iptables -A INPUT -p gre -j ACCEPT
    iptables -A OUTPUT -p gre -j ACCEPT
     
  • 1.7, Алексей (?), 19:41, 17/03/2004 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Я запустил срипт, модуль подцепился, а вот устройство не находит. Подскажите откуда его взять?
    --------------
    Using /lib/modules/2.4.18-3/kernel/net/ipv4/ip_gre.o
    ioctl: No such device
    --------------
    Спасибо / С уважением / Алексей
     
     
  • 2.8, Vladimir Skripka (?), 15:01, 21/04/2004 [^] [^^] [^^^] [ответить]  
  • +/
    >Я запустил срипт, модуль подцепился, а вот устройство не находит. Подскажите откуда
    >его взять?
    >--------------
    >Using /lib/modules/2.4.18-3/kernel/net/ipv4/ip_gre.o
    >ioctl: No such device
    >--------------
    >Спасибо / С уважением / Алексей

    tnl0 - не должно работать... по идее
    Я всё время юзаю gre0,gre1 ...
    Пример:

    ip tun add gre4 mode gre local 212.35.160.23 remote 195.68.202.1

     
     
  • 3.18, Ruslan (??), 18:40, 24/04/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Можно любое валидное имя утройства использовать. Я настраивал по примерам из Advanced-Routing-Howto, c именами neta, netb :).
     

  • 1.10, Andrey (??), 13:17, 12/07/2004 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А как это будет работать на Free BSD?
     
  • 1.11, новичек в линухе (?), 20:51, 08/02/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Suse 9.2
    У меня при запуске тунеля ошибка на gre протокол.
    anon warn[pptp_gre_bind:pptp_gre.c:95]:connect:Network is unreachable
    Как мне проверить есть ли у меня в сусе подержка
    GRE , и как ее включить.
     
  • 1.12, Sklif (?), 13:25, 12/09/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Завел туннель, все работало окло 3-х месяцев идеально, но потом стал отваливаться и подниматься сам по себе. Хотя машины друг друга видят (не через туннель).
    Скрипты прописал в ./network-scripts/ как интерфейсы.

    На первой машине файл ifcfg-tnl0 такой:
    route add -host 172.16.20.2 gw 172.16.3.1
    insmod ip_gre
    ip tunnel add tnl0 mode gre local 172.16.3.20 remote 172.16.20.2 ttl 255
    ip addr add 192.168.1.2 dev tnl0
    ip link set tnl0 up
    ip route add 192.168.1.1 dev tnl0
    ONBOOT=yes
    route add -net 192.168.100.0 netmask 255.255.255.0 gw 192.168.1.1

    На второй машине файл ifcfg-tnl1 такой:
    route add -host 172.16.3.20 gw 172.16.20.1
    route del -net 169.254.0.0 netmask 255.255.0.0
    insmod ip_gre
    ip tunnel add tnl1 mode gre local 172.16.20.2 remote 172.16.3.20 ttl 255
    ip addr add 192.168.1.1 dev tnl1
    ip link set tnl1 up
    ip route add 192.168.1.2 dev tnl1
    route add default gw 192.168.1.2
    ONBOOT=yes

    Уже 2 недели воюю так и не могу понять в чем дело, и переименовывал в gre.. , и просто в скрипте запускал, даже после перезапуска обеих машин не подымается, а потом через время сам по себе подымается.
    З.Ы. Система ASP 9.0

     
  • 1.13, stek (?), 20:40, 26/09/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    ок ну тонель поднялся
    tnl0      Link encap:UNSPEC  HWaddr D5-82-1B-66-00-00-00-00-00-00-00-00-00-00-00-00  
              inet addr:10.105.50.1  P-t-P:10.105.50.1  Mask:255.255.255.255
              UP POINTOPOINT RUNNING NOARP  MTU:1476  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

    мне интересно почему P-t-P:10.105.1.1 а не тот адрес к которому создается тонель, и как его указать.
    чтоб было как в PPP P-t-P:адрес тонеля с той стороны

     
  • 1.14, Михаил (??), 08:23, 16/01/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А не подскажете как сделать доступ из подсетки с шлюзом на Линухе к ВПН серверу на винде 2003

    Я прописываю
    I="/sbin/iptables"
    $I -A INPUT -s 217.148.54.247 -j ACCEPT
    $I -A FORWARD -s 217.148.54.247 -j ACCEPT
    $I -A FORWARD -s 192.168.10.247 -j ACCEPT
    $I -A INPUT -s 192.168.10.247 -j ACCEPT

    217.148.54.247 - ВПН сервер на винде
    192.168.10.247 - комп из локалки, кот. необходим доступ по ВПН к удаленному серверу

     
  • 1.15, Zell (??), 05:11, 20/03/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    У меня немного другое, одна машина стоит в локальной сети N1, N2, и надо чтобы она пускала пакеты между сетями, как это реализовать?
     
  • 1.19, bigtown (?), 00:44, 19/03/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Блин народ всегда интересовало как это работает.
    "inet addr:10.105.50.1  P-t-P:10.105.50.1"
      
    и отправка и точка у нас одни и те же :)
    хрен два это у вас работать будет!

    ifconfig Tun0  10.105.50.1 pointopoint 10.105.50.2 - или какой там у вас адрес второй машины
    Вот эта заветная строчка которая отделяет от счастья. :)

     

    игнорирование участников | лог модерирования

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру