Документация по ОС FreeBSD
Среда, 26.11.2025, 19:10
Главная
Регистрация
Вход
Приветствую Вас
Гость
|
RSS
Меню сайта
Главная страница
Новости в мире Unix
NEW
Каталог файлов
NEW
Установка и настройка
Ports & Packages
cvs
Безопасность
Работа с железом
X Window
Multimedia
Man pages
Net
Apache
DNS
FTP
Mail
Samba
Squid
SSH
VPN
РРР
Shell
IPFW
Tips'n'tricks
RFC
Книги по FreeBSD
Темы экзамена BSDA
Гостевая книга
Форум на bsdportal.ru
Каталог сайтов
Самый свежий софт
Каталог ссылок
Категории каталога
Apache
[58]
DNS
[25]
FTP
[27]
Mail
[74]
Samba
[24]
Squid
[46]
SSH
[23]
VPN
[35]
РРР
[20]
Net
[173]
Главная
»
Статьи
»
Сеть
»
Net
FreeBSD netgraph туннели [2011]
Продолжая тему туннелей привожу ещё один способ поднять туннель между серверами под OS FreeBSD – это netgraph туннели.
Netgraph туннель как и OpenVPN туннель позволяет выбрать порт и протокол по которому будет устанавливаться туннель.
Их основное отличие в том, что netgraph туннель реализован на уровне ядра системы и использует все доступные ядра CPU, а OpenVPN реализован в userland`е и использует только одно ядро CPU.
Задача
Поднять netgraph туннель между двумя FreeBSD серверами и пророутить через туннель некоторые подсети.
Дано
Внешний IP-адрес сервера FreeBSD1: 1.1.1.1
Внешний IP-адрес сервера FreeBSD2: 2.2.2.2
Тунельный IP-адрес сервера FreeBSD1: 10.0.0.1
Тунельный IP-адрес сервера FreeBSD2: 10.0.0.2
Настройка
Туннель устанавливается между двумя внешнему IP-адресами по выбранному нами порту 2000 и протоколу UDP, на туннеле назначаются IP-адреса из серой подсети 10.0.0.0/30.
Я приведу настройку только одной стороны, т.к. вторая сторона это просто зеркальное отражение первой.
Создадим интерфейс ng:
# ngctl mkpeer iface dummy inet
Укажем что будем использовать протокол UDP:
# ngctl mkpeer ng0: ksocket inet inet/dgram/udp
Укажем внешний IP сервера FreeBSD-1 (с которого мы и начали настройку) и зададим порт:
# ngctl msg ng0:inet bind inet/1.1.1.1:2000
Укажем внешний IP сервера FreeBSD-2 и порт, на которой мы и устанавливаем туннель:
ngctl msg ng0:inet connect inet/2.2.2.2:2000
Назначим IP-адреса на сам туннель (созданный интерфейс ng0):
ifconfig ng0 10.0.0.1 10.0.0.2 netmask 255.255.255.252
Теперь можно посмотреть что получилось:
# ifconfig ng0
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1500
inet 10.0.0.1 --> 10.0.0.2 netmask 0xfffffffc
Туннель с одной стороны готов, настройте зеркально вторую сторону (сервер FreeBSD-2) и вы должны «увидеть» (пинговать) туннельные IP-адреса с обоих сторон.
После чего можно уже роутить что угодно через установленный вами туннель.
Команда для уничтожения netgraph туннеля:
# ngctl shutdown ng0:
Внимание ! Символ двоеточия в конце это не очепятка, как многие думают, он должен там быть.
Для автозапуска туннеля заглянем в предоставленный нам пример /usr/share/examples/netgraph/udp.tunnel и создадим свой стартовый скрипт /usr/local/etc/rc.d/ng_tun_start.sh
#!/bin/sh
case "$1" in
stop)
if ifconfig ng0 >/dev/null 2>&1; then
ifconfig ng0 inet down delete >/dev/null 2>&1
ngctl shutdown ng0:
echo "tunnel ng0 was destroyed";
fi
;;
start)
LOC_EXTERIOR_IP=1.1.1.1
REM_EXTERIOR_IP=2.2.2.2
LOC_INTERIOR_IP=10.0.0.1
REM_INTERIOR_IP=10.0.0.2
UDP_TUNNEL_PORT=2000
if ifconfig ng0 >/dev/null 2>&1; then
echo "tunnel ng0 already up";
else
ngctl mkpeer iface dummy inet
ngctl mkpeer ng0: ksocket inet inet/dgram/udp
ngctl msg ng0:inet bind inet/${LOC_EXTERIOR_IP}:${UDP_TUNNEL_PORT}
ngctl msg ng0:inet connect inet/${REM_EXTERIOR_IP}:${UDP_TUNNEL_PORT}
ifconfig ng0 ${LOC_INTERIOR_IP} ${REM_INTERIOR_IP} netmask 255.255.255.252
fi
;;
*)
echo "Usage: `basename $0` {start|stop}" >&2
;;
esac
Теперь при старте сервера туннель будет автоматически создан и у вас есть возможность в ручную стартовать туннель:
# /usr/local/etc/rc.d/ng_tun_start.sh start
или разрушать его:
# /usr/local/etc/rc.d/ng_tun_start.sh stop
Источник:
http://subnets.ru/blog/?p=1766
Категория:
Net
| Добавил:
oleg
(02.04.2011) | Автор:
admin
Просмотров:
873
| Рейтинг:
0.0
/
0
|
- Оценить -
Отлично
Хорошо
Неплохо
Плохо
Ужасно
Всего комментариев:
0
Добавлять комментарии могут только зарегистрированные пользователи.
[
Регистрация
|
Вход
]
Форма входа
Друзья сайта
Google+
Copyright MyCorp © 2025