|
Меню
Статьи
Статистика
|
Хостов сегодня: 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
 |
|
Новое:
microdc2 консольный клиент DC++ Потребовалось раздавать юзерам сети контент с фтп сервака не только с помощью самого ftp сервера, но и через DC++ протокол. Added: 2009-08-25
FreeBSD net-snmpd Очень много возможностей Cacti работают только при работающем демоне SNMP. Загрузка сетевых карт, мониторинг дискового пространства, загруженность процессора/памяти и много Added: 2009-08-13
Копирование файла с фтп Начались проблемы с нехваткой места на биллинг сервере. Раньше все бекапы хранились на нём же, просто на другом диске. Основное Added: 2009-08-08
|