ng_nat + mpd - FreeBSD / Статьи, заметки на тему администрирования Unix систем.
Unixnotes.ru - записная книжка Unix-администратора
www.unixnotes.ru > FreeBSD > ng_nat + mpd
Меню
Статьи
Статистика

Хостов сегодня: 10

Хитов сегодня: 36

Статей: 29


Там аренда авто спб металлические мерседесы в Спб.

ng_nat + mpd

Решил как-то замутить эдакий динамический нат на mpd. Т.е. когда поднимается туннель mpd, автоматом поднимается и nat для определенных адресов.

Встроенными средствами mpd не получилось завести. Попробовал через ng_nat и up-down скрипты мпд. Получилось как раз то, что я и задумывал. Работает стабильно, без сбоев - туннель поднялся, поднялся и ng_nat и правила в фаер добавились сами; туннель упал - удалился и нат и нужные правила ipfw.

Конфиг mpd.conf стандартный для клиента

startup:
        set console self 127.0.0.1 5005
        set console open
        set web self 0.0.0.0 5006
        set web open
default:
        load pptp_real
pptp_real:
        create bundle static B1
        set iface up-script /usr/local/etc/mpd5/real-up.sh
        set iface down-script /usr/local/etc/mpd5/real-down.sh
        set ipcp ranges 0.0.0.0/0 0.0.0.0/0
        create link static L1 pptp
        set link action bundle B1
        set auth authname login
        set auth password vpn_pass
        set link max-redial 0
        set link mtu 1460
        set link keep-alive 20 75
        set pptp peer 10.0.7.12
        set pptp disable windowing
        open

Вся соль в up-script и down-script. Создаем их в директории mpd5 и рисуем примерно следущее

/usr/local/etc/mpd5/real-up.sh - скрипт поднятия ната при старте mpd и удачном коннекте

#!/bin/sh

if="ng0"
ip="`/sbin/ifconfig $if | grep inet | awk '{print $2}'`"
gw="`/sbin/ifconfig $if | grep inet | awk '{print $4}'`"

/sbin/route delete default
/sbin/route add default $gw

/usr/sbin/ngctl mkpeer ipfw: nat 50 out
/usr/sbin/ngctl name ipfw:50 natB
/usr/sbin/ngctl connect ipfw: natB: 51 in
/usr/sbin/ngctl msg natB: setaliasaddr $ip

/sbin/ipfw add 100 netgraph 51 all from any to $ip in via $if
/sbin/ipfw add 101 netgraph 50 all from 172.17.0.0/24 to any out via $if

Сначала рихтуем роутинг, дабы поиметь инет на самой машинке. Потом создаем ng_nat через ngctl, ну и добавляем правила ipfw для подсети 172.17.0.0/24 в моем случае

/usr/local/etc/mpd5/real-down.sh - шутдаунящий скрипт. Выполняется при стопе mpd

#!/bin/sh

/sbin/route delete default
/sbin/route add default 10.22.0.1

/sbin/ipfw delete 100
/sbin/ipfw delete 101

/usr/sbin/ngctl shutdown natB

Тут все элементарно. Делаем дефолт роут в локалку, убиваем правила ipfw и опускаем ng_nat.

Вот и вся система готова. Не забываем закинуть mpd в автозагрузку, если она еще не там.

Ну и ядро должно поддерживатьь NETGRAPH. Либо подгружать из этих скриптов модулями, либо пересобрать kernel. У меня оно все в ядре и выглядит так

options         NETGRAPH
options         NETGRAPH_PPP
options         NETGRAPH_PPTPGRE
options         NETGRAPH_KSOCKET
options         NETGRAPH_SOCKET
options         NETGRAPH_IFACE
options         NETGRAPH_IPFW
options         NETGRAPH_NAT
options         NETGRAPH_TCPMSS
options         NETGRAPH_VJC
options         NETGRAPH_TEE
options         NETGRAPH_MPPC_ENCRYPTION

 

 

 


Добавлено: 2009-08-03      Просмотров: 512      Источник: www.unixnotes.ru


Комментарии к статье "FreeBSD / ng_nat + mpd":

Имя:

E-Mail

Комментирвоать

Какой нынче год?

Новое:

microdc2 консольный клиент DC++

Потребовалось раздавать юзерам сети контент с фтп сервака не только с помощью самого ftp сервера, но и через DC++ протокол.

Added: 2009-08-25


FreeBSD net-snmpd

Очень много возможностей Cacti работают только при работающем демоне SNMP. Загрузка сетевых карт, мониторинг дискового пространства, загруженность процессора/памяти и много

Added: 2009-08-13


Копирование файла с фтп

Начались проблемы с нехваткой места на биллинг сервере. Раньше все бекапы хранились на нём же, просто на другом диске. Основное

Added: 2009-08-08




НАШИ ДРУЗЬЯ
Заказ билетов цирк вернадского. цирк на проспекте вернадского. Цирк на проспекте Вернадского.
Курительные трубки. Доставка: курительные трубки. Ищете сигары трубки элитные вина?
Стоматологические услуги - стоматологическая клиника.
Deltim Delti Puma
лечение уреаплазмоза Москва