Рубрики

Лучшие статьи

ng_nat + mpd

Опубликовал 23 июля 2011 в рубрике FreeBSD. Комментарии: Комментариев нет   Просмотров: 107 просмотров

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

Встроенными средствами mpd не получилось завести. Попробовал через ng_nat и up-down скрипты mpd5. Получилось как раз то, что я и задумывал. Работает стабильно, без сбоев – туннель поднялся, поднялся и 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 – скрипт поднятия nat при старте 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
Поделись:
  • Добавить ВКонтакте заметку об этой странице
  • Мой Мир
  • Facebook
  • Twitter
  • unixtips.ru&subject=ng_nat%20%2B%20mpd+<+unixtips.ru" title="LiveJournal">LiveJournal
  • MySpace
  • В закладки Google
  • Google Buzz
  • Яндекс.Закладки
  • LinkedIn
  • Technorati
  • del.icio.us
  • Digg
  • БобрДобр
  • Memori.ru
  • МоёМесто.ru
  • Сто закладок
  • Blogger
  • Блог Li.ру
  • Блог Я.ру
  • Одноклассники
Клиника центр флебологии. Печатники. .

Метки: ,
1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Загрузка ... Загрузка ...



Оставить комментарий или два

RSS

rss Подпишитесь на RSS для получения обновлений.

Add to Google Reader or Homepage

Подписаться на рассылку E-Mail:

Опрос

Статьи на какую тему Вам более интересны?

Просмотреть результаты

Загрузка ... Загрузка ...