Маршрутизация в VPN сетях
Так как VPN может использоваться для объединения не только компьютер клиент + компьютер сервер, а для объединения сетей необходимо обеспечить автоматическую настройку маршрутизации. В прошлой заметке у меня это делается вручную после подключения, а это совсем не удобно при автоматическом подключении, поэтому пришлось разбираться как работает эта система
Итак для создания специфических маршрутов при подключение к VPN серверу необходимо создать файл /etc/ppp/ip-up.d/pptp_vpn со следующим текстом (ниже описано как правильно называть файл с маршрутами)
cat /etc/ppp/ip-up.d/pptp_vpn
#!/bin/sh
# мой маршрут пересылающий пакеты из локальной сети в сеть 192.168.80.0/24
route add -net 192.168.80.0/24 gw 192.168.100.2
Это файл должен быть исполняемым, для удаления маршрута необходимо использовать файл: /etc/ppp/ip-down.d/pptp_vpn со следующими командами ( и pptpd - для VPN сервера)
cat /etc/ppp/ip-down.d/pptp_vpn
#!/bin/sh
route del -net 192.168.80.0/24 gw 192.168.100.2
Тут видно, что мои скрипты настройки маршрутизации чрезвычайно примитивны и не учитывают множество ситуаций, но меня они устраивают. Но если потребуется большее, например на сервере необходимо выдавать маршруты в зависимости от имени подключаемого пользователи или имени интерфейса или добавлять правила фаервола, то придётся применять условия и обрабатывать переменные окружения которые формирует pptpd.
Чтобы узнать какие формируются переменные при создании нового соединения нужно добавить в созданные файлы вот такую команду:
env > /tmp/env.vpn
На моём VPN сервере я получаю вот такие переменные
cat /tmp/env.vpn
PPP_TTY=/dev/pts/0
IFNAME=ppp1
PPPLOGNAME=root
IPLOCAL=192.168.100.1
PPP_REMOTE=192.168.100.2 # IP на другом конце тонеля
PPP_IFACE=ppp1 # название интерфейса
PPP_TTYNAME=0
ORIG_UID=0
SPEED=115200 # индикатор скорости подключения, можно игнорировать
PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin
IPREMOTE=192.168.100.2
PPP_LOCAL=192.168.100.1
PPP_IPPARAM=92.255.239.93 # IP хоста откуда произошло подключение
PPPD_PID=331 # PID текущего процесса
PWD=/
PPP_SPEED=115200
PEERNAME=mywork # имя под которым подключился клиент
DEVICE=/dev/pts/0
Думаю этих переменных достаточно чтобы организовать довольно сложные конфигурации
Следует обратить внимание на то как называть файлы скриптов дополнительных маршрутов.
При создании или удалении ppp, pptp интерфейсов запускаются файлы: /etc/ppp/ip-up /etc/ppp/ip-down соответственно. Эти файлы являются скриптами которые определяют дальнейшее поведение соединения. Например, если создать файл /var/log/ppp-ipupdown.log то в нём будет отображаться некоторые переменные поясняющие дальнейшее действие скрипт, затем эти переменные используются для вызова утилиты run-parts. Вот пример поясняющий работу этой утилиты
ffsdmad@ffsdmad-home:~$ run-parts --list --regex 'vpn' /etc/ppp/ip-up.d
/etc/ppp/ip-up.d/99_pptpd_vpn
ffsdmad@ffsdmad-home:~$ run-parts --list --regex '[0-9]+vpn' /etc/ppp/ip-up.d
ffsdmad@ffsdmad-home:~$
Тоесть эта утилита запускает скрипты соответствующие регулярному выражени из указанной директории
В моём случае , да вообще по умолчанию, запускаются все скрипты из директории ip-up.d и ip-down.d, так как не задано регулярное выражение для отбора нужного скрипта:
run-parts /etc/ppp/ip-up.d --arg=ppp1 --arg= --arg=38400 --arg=192.168.100.2 --arg=192.168.100.1 --arg=vpn
В случае, когда потребуется запуск разных файлов для разных соединения и это будет невозможно сделать внутри самих скриптов с помощью переменных окружения, можно использовать механизм отбора нужного скрипта по регулярному выражению при запуске run-parts и опции --regexp
текст недоступен
другие страницы раздела
- Установка базовой системы
- Поиск приложений по открытым файлам
- Первые впечатления о CentOS
- 5 самых частных команд, используемых во время установки gentoo
- Занятный iptables
- Ручная настройка монитора в Xorg
- Автомонтирование в ArchLinux
- Первые впечатления от InfraLinux, Ubuntu 8.04.1 от компании Инфра Ресурс
- Gentoo in Ubuntu или переезд из Ubuntu в Gentoo
- Объединение русских манов
- Bacup + SSH через Nat - Передача большого количества файлов с помощью tar и ssh
- Alt Linux научит заниматься сексом, manpages russian
- Настройка кэширующего dns сервера bind
- Переезд на OpenSuse 11 откладывается
- Bind, настройка собственной зоны
- Настройка AR242x 802.11abg Wireless PCI Express Adapter
- Быстрый способ установки Samba
- Настройка nfs сервера и nfs клиента ubuntu 8.04
- Обновление Ubuntu 8.10 - Отважный Козерог
- Укрепление безопасности в связи с получением реального IP адреса
- RussianFedora - не для домашнего использования
- Ephemeris - программа по астрономии
- Linux драйвер для карточки Ethernet RTL8111/8168b
- Подключение Asus EEEpc 701 к интернету через GPRS на Sony Ericsson Z530i
- Запуска apache в окружении chroot
- Установка VirtulaBox на Ubuntu с нестандартным ядром
- Полезные ссылки
- Настройка проверки орфографии в OpenOffice3
- Установка "Налогоплательщик ЮЛ" в Linux
- Благодаря анонимоусам я осилил LVM
- Переезд на LVM
- Таблица значений для настройки framebuffer
- Производительность компьютеров в зависимости от процессора и объёма памяти
- CentOS или Ubuntu
- Очень простая авторизация в Squid
- Что выбрать i386 или AMD64
- Как узнать, что расшарено на NFS сервере
- HOWTO: Как за 12 минут установить Linux, попробовать и удалить
- Видео: Уменьшение размера LVM раздела, создание нового раздела, откат назад
- Динамическое добавление swap в Linux
- Зеркалирование репозитория Ubuntu
- Как я навредил своим юзерам
- Установка Ubuntu 8.04.2 Desktop на LVM
- Как заработать на пользователях Linux
- Открытый биос на основе технологий Linux
- Конвертирование m4b,ape,cue в ogg, mp3 через fifo (трубку)
- Xming, X сервер для Windows
- Ubuntu 8.04, Wine 1.1.19, WarCraft 3
- Asus EEEPC 701и Linux как инструмент начинающего разведчика
- Моя мама и Linux
- Два подхода к использованию компьютера или чем линуксоид отличается от виндузятника
- Создание chroot для враждебного пользователя
- Шрифты в Linux и Windows
- Сценарий Amarok для работы Publish Tune в Psi
- Видео ролик - Коварные планы Майкрософт
- Касперский опять нашёл вирусы под Linux и опять обделался
- Multiseat, Эффективное использование 2 ядерных процессоров в Linux
- Перенос ядра из другого дистрибутива
- Выбор WiFi USB адаптера для Linux
- Chrome под Linux
- Как отправить SMS из консоли
- Почему админы любят DHCP
- Восстановление файловой системы
- Настройка PPPoE в Linux без NetworkManager
- Перевод документации про OpenLDAP
- Russian Fedora 11 + KDE4 против людей
- Как заработать на Linux миллионы
- Как вырезать кусок из фильма и конвертировать в flv с помощью mplayer
- Вот и ПОЧТИ умер очередной двухпанельник Double Commander
- Пока Майкрософт разваливается и идёт ко дну Redhat развивается и получает прибыли
- Групповое переименование файлов в Linux
- Два варианта добавление GPG ключа репозитория из консоли
- Почему Mono это плохо
- Установка PCLinux 2009 на LVM и восстановление домашнего LVM раздела
- Точка доступа из десктопа с использованием внешного шлюза и dhcp
- Как запрограммировать поведение сетевых интерфейсов
- Пакетная обработка документов RTF в OpenOffice с помощью bash и OOBasic
- Как добавить текст в защищённый файл с помощью sudo
- Google объясняет чего не хватает линуксу
- Выбор web камеры для Linux, Genius Eye 110 - плохой выбор
- Выбор web камеры для Linux, Gembird CAM90U и Genius iSlim 1322AF, Genius iLook 1321v2 - хороший выбор
- Как установить TremFusion в Ubuntu 8.04
- Первая доза закончилась, скоро в школах начнётся ломка или бабки на бочку
- Как появляются Боги OpenSource
- Как удалить из фильмов английскую звуковую дорожку
- Slackware13 мистика какая то
- Установка Slackware13 на LVM
- Linux территория безопасности или опять наш Касперский хочет жрать
- Как навариться на винтузятниках и линуксоидах при этом сделав им хорошо
- У линуксоидов есть деньги(надо же) и они покупают игры
- Передача звука с микрофона по сети
- Ubuntu 9.04 для жены
- Автоматическая обработка файлов на хостинге с помощью bash
- Как удалить на хостиге файл имя которого не набрать в консоли
- Установка Flash player AMD64 для Firefox и Chrome одной командой
- Печать в PDF через Cups
- Противостояние линуксоидов и виндузятников в искусстве, стёб
- LVM использование снапшотов
- Удаление физического раздела из LVM
- Страсти по виндовым шрифтам
- Автоматическая обработка файлов, часть два
- Настройка печати на PDF принтер в Ubuntu 9.10
- Ubuntu 9.10 добавление resume раздела
- Сравнение файловых систем ext2 ext3 ext4 xfs reiserfs btrfs vfat jfs для домашней директории
- Machinarium - постапокалиптическая игра для линуксоидов
- Как обезопасить свои каналы общения, своих друзей и близких с помощью шифрования в Jabber
- Исключение Gimp из Ubuntu
- Из Gnome в Xmonad за 5 минут, всё просто
- Шифрование бекапов для хранения в Gmail
- Шикарный пиар Ideco - "Добрыня Сисадминыч и айдеко-кладенец"
- Рабочий стол с защитой от ребёнка
- Google опять выпустил beta версию Chrome и танцует и поёт
- С/C++: libconfig - библиотека для обработки конфигурационных файлов
- SoftMaker2008 или OpenOffice3.1
- MS IE сливает FF3 по всему миру, а FF3 сливает Opera по РФии
- Скриншоты Opera 10.50 без поддержки Qt
- Объединение двух сетей через VPN
- Google проводит сбор идей на счёт развития своих сервисов и сбор голосов в пользу открытых технологий
- Настройка mpd, музыкального демона
- Объединение DNS зон в VPN сетях
- grub2: ручная загрузка
- Выбор web камеры для Linux, Age Star S-PC250 - плохой выбор
- Выбор web камеры для Linux, Icam 7120 - хороший выбор
- Загрузка с дискеты без дисковода
- Добавление репозитария в Ubuntu 9.10
- в ожидании Ubuntu 10.04 LTS
- Тестирование Ubuntu 10.04 beta и установка на LVM
- Выбор web камеры для Linux: Genius iSlim 1300v2 - хороший выбор
- Декомпиляция SWF в Linux
- Как обойти ограничение DynDNS на создание wildcard
- apache генерация списка файлов в utf-8
- Обновление Ubuntu 10.04 до 12.04
- Ubuntu 12.04 установка WiFi card Marvel 8335
- Wi-Fi-роутер TP-Link TL-MR3020
- Редирект неавторизованных в squid пользователей на внутренний ресурс
- Удаление ботнета sfewfesfs
- Настройка inotify для работы с большими файловыми системами
- Двадцатка самых популярных имён пользователей при взломе серверов
комментарии (13)
2010-02-03 07:54:56
2010-02-02 15:39:56
2010-02-04 10:28:43
2010-02-04 11:43:13
2010-02-07 04:39:57
2010-02-04 20:27:48
2010-02-08 11:55:25
2010-02-08 11:58:33
2010-02-09 00:08:10
2010-02-16 13:39:03
2010-02-16 13:41:17
2010-11-03 21:31:42
2010-11-03 21:37:11