<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Записки на полях &#187; internet</title>
	<atom:link href="http://snake.khd.ru/tag/internet/feed/" rel="self" type="application/rss+xml" />
	<link>http://snake.khd.ru</link>
	<description>cat /var/log/messages</description>
	<lastBuildDate>Sun, 05 Feb 2012 11:22:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Закрыт pornolab.net</title>
		<link>http://snake.khd.ru/2011/04/zakryt-pornolab-net/</link>
		<comments>http://snake.khd.ru/2011/04/zakryt-pornolab-net/#comments</comments>
		<pubDate>Thu, 28 Apr 2011 01:10:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Копипаста]]></category>
		<category><![CDATA[copypast]]></category>
		<category><![CDATA[internet]]></category>

		<guid isPermaLink="false">http://snake.khd.ru/?p=801</guid>
		<description><![CDATA[Всем дрочерам любителям клубнички дружно пичалиться. Закрыли pornolab.net &#8211; один из крупнейших русскоязычных порнотрекеров (да и в мировом масштабе тоже, в общем-то). Пресс-релиз просто прекрасен: Правоохранители разоблачили порносайт, которым пользовались почти 2 миллиона любителей клубнички любого возраста. Остальное под катом. Правоохранители разоблачили порносайт, которым пользовались почти 2 миллиона любителей клубнички любого возраста. Оперативники столичного управления <a href='http://snake.khd.ru/2011/04/zakryt-pornolab-net/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Всем <s>дрочерам</s> любителям клубнички дружно пичалиться. <a href="http://habrahabr.ru/blogs/internet/118262/" target=_blank>Закрыли</a> pornolab.net &#8211; один из крупнейших русскоязычных порнотрекеров (да и в мировом масштабе тоже, в общем-то).<br />
<img src="http://sedictor.ru/11/04/27/1303928961.gif" alt="" /><br />
<a href="http://militia.kiev.ua/index.php?option=com_content&#038;task=view&#038;id=1854"  target=_blank>Пресс-релиз</a> просто прекрасен:<br />
<strong><em>Правоохранители разоблачили порносайт, которым пользовались почти 2 миллиона любителей клубнички любого возраста. </em></strong><br />
Остальное под катом.<br />
<span id="more-801"></span></p>
<blockquote><p>Правоохранители разоблачили порносайт, которым пользовались почти 2 миллиона любителей клубнички любого возраста.</p>
<p>Оперативники столичного управления по борьбе с преступлениями, связанными с торговлей людьми, разоблачили один из крупнейших в мире порносайтов — Pornolab.net. С помощью простой регистрации любители клубнички имели доступ к порнографическим фото- и видео-материалам без возрастных ограничений.</p>
<p>Стоит отметить, что это второй подобный случай в столице. В 2008 году милиции удалось разоблачить аналогичный сайт и задержать лицо, организовавшее деятельность этого ресурса и распространяла материалы порнографического характера. Сейчас этот гражданин отбывает наказание.</p>
<p>Каждый день Pornolab посещали около 15 тысяч пользователей. Согласно статистическим данным этот сайт занимает 1887 место по посещаемости в мире, 93 место в России и 126 место в Украине. Интересно, что в один из самых популярных метеорологических сайтов нашего государства Мeteoprog занимает в этом же рейтинге 123 месте. Услугами Pornolab пользовались примерно 2 миллиона зарегистрированных ценителей клубнички. Треть из них — в Украине.</p>
<p>Оперативникам удалось установить местонахождение серверов. Они размещались в Киеве. Сейчас все они изъяты и направлены на экспертное исследование. Снятая с компьютеров информация поможет милиции установить не только лиц, которые создали и администрировали указанный ресурс.</p>
<p>Торрент-сайт предусматривает взаимообмен информацией между пользователями. Итак, посетители этого ресурса имеют непосредственное отношение к распространению порнографии. За это они также должны понести наказание.</p>
<p>По данному факту возбуждено уголовное дело по ч. 2 статьи 301 Уголовного кодекса Украины («Распространение видеопродукции порнографического содержания»). Санкция этой статьи предусматривает наказание в виде штрафа от 100 до 300 необлагаемых минимумов доходов граждан или ограничение свободы на срок до 5 лет или лишения свободы на тот же срок, с конфискацией порнографической кино-и видеопродукции, средств ее изготовления и демонстрирования.</p></blockquote>
<p>Анонам &#8211; дружно переходить на шифрование траффика, I2P и прочие мульки, а так же воздержаться от поездок в незалэжную в ближайшие пару лет. Ну и искать новые &#8220;клубничные поляны&#8221;, да.</p>
]]></content:encoded>
			<wfw:commentRss>http://snake.khd.ru/2011/04/zakryt-pornolab-net/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Свет в конце тоннеля: OpenVPN + FreeBSD7</title>
		<link>http://snake.khd.ru/2011/03/svet-v-konce-tonnelya-openvpn-freebsd7/</link>
		<comments>http://snake.khd.ru/2011/03/svet-v-konce-tonnelya-openvpn-freebsd7/#comments</comments>
		<pubDate>Thu, 03 Mar 2011 08:33:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[openvpn]]></category>
		<category><![CDATA[vpn]]></category>

		<guid isPermaLink="false">http://snake.khd.ru/?p=690</guid>
		<description><![CDATA[Vtund всем хорош, кроме одного &#8211; в глобальных сетях его использовать трудно. А что делать, если среда дюже недружелюбная (считай &#8211; зарезано все, кроме стандартных протоколов, и ipip провесить уже не выйдет). Наш выход &#8211; VPN. Тем более что OpenVPN поможет и влан прокинуть, и данные зашифрует, и вообще, позволит создать у пользователя уверенность, что <a href='http://snake.khd.ru/2011/03/svet-v-konce-tonnelya-openvpn-freebsd7/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://snake.khd.ru/2011/01/trably-s-vtund/">Vtund</a> всем хорош, кроме одного &#8211; в глобальных сетях его использовать трудно. А что делать, если среда дюже недружелюбная (считай &#8211; зарезано все, кроме стандартных протоколов, и ipip провесить уже не выйдет). Наш выход &#8211; <a href="http://snake.khd.ru/tag/vpn/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  vpn">VPN</a>. Тем более что <a href="http://snake.khd.ru/tag/openvpn/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  openvpn">OpenVPN</a> поможет и влан прокинуть, и данные зашифрует, и вообще, позволит создать у пользователя уверенность, что удаленный филиал находится вовсе не в другом городе, а за стенкой (где б еще такой инет взять&#8230;)<br />
<span id="more-690"></span><br />
Исходные данные:<br />
Сервер: <a href="http://snake.khd.ru/tag/linux/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  linux">Linux</a> 2.6.28.2<br />
Клиент: <a href="http://snake.khd.ru/tag/freebsd/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  FreeBSD">FreeBSD</a> 7.2-RELEASE-p8<br />
OpenVPN 2.1.4</p>
<p>Задача: Организовать подключение таким образом, чтобы клиент, и сеть за ним могли видеть локальную сеть за сервером так, будто это два рядом стоящих маршрутизатора. Собственно, настройка занимает минут пятнадцать.</p>
<p>На клиенте:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>ports<span style="color: #000000; font-weight: bold;">/</span>security<span style="color: #000000; font-weight: bold;">/</span>openvpn <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span> clean</pre></div></div>

<p>/etc/rc.conf</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #007800;">openvpn_enable</span>=<span style="color: #ff0000;">&quot;YES&quot;</span>
<span style="color: #007800;">openvpn_if</span>=<span style="color: #ff0000;">&quot;tun&quot;</span>
<span style="color: #007800;">openvpn_configfile</span>=<span style="color: #ff0000;">&quot;/usr/local/etc/openvpn/client.conf&quot;</span>
<span style="color: #007800;">openvpn_dir</span>=<span style="color: #ff0000;">&quot;/usr/local/etc/openvpn&quot;</span></pre></div></div>

<p>Описание директив спер <a href="http://tuxnotes.ru/articles.php?a_id=26">отсюда</a> и <a href="https://secretsline.biz/ru/manual/read/openvpn-manual/">отсюда</a></p>
<p>/usr/local/etc/openvpn/client.conf</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#определяет какой использовать тип устройства tun или tap.</span>
dev tun
<span style="color: #666666; font-style: italic;">#Возможные значения: udp, tcp, tcp-client, tcp-server. С первыми двумя все ясно, </span>
<span style="color: #666666; font-style: italic;">#а на последних двух остановимся чуть подробнее:</span>
<span style="color: #666666; font-style: italic;">#tcp-client - сам пытается установить соединение</span>
<span style="color: #666666; font-style: italic;">#tcp-server - только ждет подключений</span>
<span style="color: #666666; font-style: italic;">#Примечательно, что с использованием протокола udp VPN будет работать чуть быстрее, </span>
<span style="color: #666666; font-style: italic;">#чем tcp. Но в плане стабильности работы лучше выбирать tcp </span>
<span style="color: #666666; font-style: italic;">#(как показывает практика, VPN-соединение более устойчиво)</span>
proto udp
<span style="color: #666666; font-style: italic;">#определяет удаленный конец туннеля. Могут использоваться записи IP и DNS.</span>
remote 10.12.0.201
port <span style="color: #000000;">1194</span> 
<span style="color: #666666; font-style: italic;">#Роль - клиент или сервер</span>
client
<span style="color: #666666; font-style: italic;">#если OpenVPN не удалось узнать имя удаленного хоста по DNS, </span>
<span style="color: #666666; font-style: italic;">#то через указанное количество секунд попытаться переподключиться.</span>
resolv-retry infinite
<span style="color: #666666; font-style: italic;">#Настройки сертификатов и безопасности</span>
ca <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>openvpn<span style="color: #000000; font-weight: bold;">/</span>keys<span style="color: #000000; font-weight: bold;">/</span>ca.crt
cert <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>openvpn<span style="color: #000000; font-weight: bold;">/</span>keys<span style="color: #000000; font-weight: bold;">/</span>client.crt
key <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>openvpn<span style="color: #000000; font-weight: bold;">/</span>keys<span style="color: #000000; font-weight: bold;">/</span>client.key
tls-client
tls-auth <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>openvpn<span style="color: #000000; font-weight: bold;">/</span>keys<span style="color: #000000; font-weight: bold;">/</span>ta.key <span style="color: #000000;">1</span>
<span style="color: #666666; font-style: italic;">#алгоритм хэширования</span>
auth SHA512
<span style="color: #666666; font-style: italic;">#указываем алгоритм шифрования</span>
cipher BF-CBC
ns-cert-type server
persist-key
persist-tun
<span style="color: #666666; font-style: italic;">#Настройки логов</span>
status <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>openvpn<span style="color: #000000; font-weight: bold;">/</span>openvpn-status.log
log <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>openvpn<span style="color: #000000; font-weight: bold;">/</span>openvpn.log
<span style="color: #666666; font-style: italic;">#Уровень детализации логов</span>
verb <span style="color: #000000;">3</span>
<span style="color: #666666; font-style: italic;">#Маршрут на удаленную сеть, который поднимается при подключении</span>
route 10.255.0.0 255.255.255.0</pre></div></div>

<p>На стороне сервера:<br />
/etc/openvpn/server.conf</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">&nbsp;
<span style="color: #7a0874; font-weight: bold;">local</span> 10.12.0.201
port <span style="color: #000000;">1194</span>
proto udp
dev tun10
&nbsp;
ca <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>openvpn<span style="color: #000000; font-weight: bold;">/</span>keys<span style="color: #000000; font-weight: bold;">/</span>ca.crt
cert <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>openvpn<span style="color: #000000; font-weight: bold;">/</span>keys<span style="color: #000000; font-weight: bold;">/</span>server.crt
key <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>openvpn<span style="color: #000000; font-weight: bold;">/</span>keys<span style="color: #000000; font-weight: bold;">/</span>server.key
<span style="color: #c20cb9; font-weight: bold;">dh</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>openvpn<span style="color: #000000; font-weight: bold;">/</span>keys<span style="color: #000000; font-weight: bold;">/</span>dh1024.pem
<span style="color: #666666; font-style: italic;">#автоматически присваивает адреса всем клиентам (DHCP) </span>
<span style="color: #666666; font-style: italic;">#в указанном диапазоне с маской сети. </span>
<span style="color: #666666; font-style: italic;">#Данная опция заменяет ifconfig и может работаеть только с </span>
<span style="color: #666666; font-style: italic;">#TLS-клиентами в режиме TUN, соответственно использование </span>
<span style="color: #666666; font-style: italic;">#сертификатов обязательно. Например: server 10.3.0.0 255.255.255.0</span>
<span style="color: #666666; font-style: italic;">#Подключившиеся клиенты получат адреса в диапазоне между 10.3.0.1 и 10.3.0.254.</span>
server  10.255.1.112 255.255.255.248
<span style="color: #666666; font-style: italic;">#Статические маршруты, которые будут выдаваться клиенту</span>
push <span style="color: #ff0000;">&quot;route 10.0.0.0 255.0.0.0&quot;</span>
push <span style="color: #ff0000;">&quot;route 92.50.243.0 255.255.255.0&quot;</span>
push <span style="color: #ff0000;">&quot;route 94.25.108.0 255.255.255.0&quot;</span>
push <span style="color: #ff0000;">&quot;route 46.8.128.0 255.255.128.0&quot;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#Папка с дополнительными настройками клиента</span>
client-config-dir ccd
<span style="color: #666666; font-style: italic;">#Статические маршруты на сеть за клиентом, которые поднимаются на сервере</span>
route 10.255.1.112 255.255.255.252
route 10.12.4.0 255.255.255.0
route 10.12.5.0 255.255.255.0
route 10.12.51.0 255.255.255.0
&nbsp;
client-to-client
keepalive <span style="color: #000000;">10</span> <span style="color: #000000;">120</span>
&nbsp;
tls-server
tls-auth <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>openvpn<span style="color: #000000; font-weight: bold;">/</span>keys<span style="color: #000000; font-weight: bold;">/</span>ta.key <span style="color: #000000;">0</span> <span style="color: #666666; font-style: italic;"># This file is secret</span>
&nbsp;
auth SHA512
cipher BF-CBC        <span style="color: #666666; font-style: italic;"># Blowfish (default)</span>
&nbsp;
max-clients <span style="color: #000000;">10</span>
<span style="color: #666666; font-style: italic;">#Пользователь и группа, от имени которых будет запускаться процесс</span>
user openvpn
group openvpn
&nbsp;
<span style="color: #666666; font-style: italic;">#Не перечитывать файлы с ключами при получении SIGUSR1 или --ping-restart.</span>
<span style="color: #666666; font-style: italic;">#Эта опция может быть использована совместно с --user nobody, </span>
<span style="color: #666666; font-style: italic;">#чтобы разрешить перезапуски вызываемые SIGUSR1. </span>
<span style="color: #666666; font-style: italic;">#По умолчанию, если вы понижаете привелегии демона OpenVPN, то </span>
<span style="color: #666666; font-style: italic;">#его нельзя перезапустить, так как невозможно заново прочитать защищенные файлы ключей. </span>
persist-key
<span style="color: #666666; font-style: italic;">#Не закрывать и повторно открывать устройство TUN/TAP </span>
<span style="color: #666666; font-style: italic;">#или запускать скрипты up/down при получении сигнала SIGUSR1 или перезапусков по --ping-restart.</span>
<span style="color: #666666; font-style: italic;">#Сигнал SIGUSR1 схож с SIGHUP, но предоставляет более точный контроль над опциями перезапуска.</span>
persist-tun
status <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>openvpn<span style="color: #000000; font-weight: bold;">/</span>openvpn-status.log
log <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>openvpn<span style="color: #000000; font-weight: bold;">/</span>openvpn.log
verb <span style="color: #000000;">3</span></pre></div></div>

<p>Включаем, соединяемся&#8230; пиры друг друга пингуют. С клиента пингуется сеть за сервером, а вот наоборот &#8211; хрен. Курим гугл, находим <a href="http://subnets.ru/blog/?p=1517">решение</a>:</p>
<blockquote><p>
Важное замечание, что если OpenVPN запускается в режиме server (см. комментарии п.2), то статический или динамический  маршрут, даже который смотрит правильно и напрямую в интерфейс tun, ни к чему не приведет, работать не будет.<br />
Т.к. в режиме server получается point-to-multipoint линк и именно поэтому серверу надо уже объяснять какому клиенту за ифейсом tun нужно отправлять трафик. Поэтому туннельные интерфейсы могут пинговаться, а любые подсети за OpenVPN-клиентом нет, т.к. трафик не уедет в туннель.<br />
Это хорошо видно по tcpdump, если с OpenVPN-сервера попробовать попинговать любой адрес из подсети, которая находится ЗА OpenVPN-клиентом.<br />
С одной стороны (со стороны OpenVPN-сервера) трафик в tun виден, а до другой стороны трафик просто не доходит, а если быть точнее, то на самом деле трафик с OpenVPN-сервера просто не отправляется.
</p></blockquote>
<p>Так что файлик /etc/openvpn/ccd/client будет примерно таким:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">ifconfig-push 10.255.1.114 10.255.1.113
iroute 10.12.51.0 255.255.255.0
iroute 10.12.5.0 255.255.255.0
iroute 10.12.4.0 255.255.255.0</pre></div></div>

<p>После этого все должно заработать. Маршруты появятся автоматически, как только установится соединение. Так же можно запускать сторонние скрипты с помощью директив up и down. Подробнее с примерами их использования можно ознакомиться по ссылкам выше.</p>
]]></content:encoded>
			<wfw:commentRss>http://snake.khd.ru/2011/03/svet-v-konce-tonnelya-openvpn-freebsd7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Операция &#8220;Кооперация&#8221;: IPFW, stargazer и 4 ADSL-соединения</title>
		<link>http://snake.khd.ru/2011/01/operaciya-kooperaciya-ipfw-stargazer-i-4-adsl-soedineniya-chast-1/</link>
		<comments>http://snake.khd.ru/2011/01/operaciya-kooperaciya-ipfw-stargazer-i-4-adsl-soedineniya-chast-1/#comments</comments>
		<pubDate>Wed, 19 Jan 2011 08:46:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[ipfw]]></category>
		<category><![CDATA[stargazer]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://snake.khd.ru/?p=655</guid>
		<description><![CDATA[Общага &#8211; место крайне полезное, особенно для тех, кто умеет искать халяву. Еда, выпивка, интернет&#8230; стоит лишь немного поднапрячься. В одной из таких общаг мы и будем творить свои злобные делишки &#8211; раздавать людям интернеты анлимно и покилограммно. Под катом много конфигов и технических терминов, так что слабонервным и гуманитариям лучше не заходить Что мы <a href='http://snake.khd.ru/2011/01/operaciya-kooperaciya-ipfw-stargazer-i-4-adsl-soedineniya-chast-1/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Общага &#8211; место крайне полезное, особенно для тех, кто умеет искать халяву. Еда, выпивка, интернет&#8230; стоит лишь немного поднапрячься. В одной из таких общаг мы и будем творить свои злобные делишки &#8211; раздавать людям интернеты анлимно и покилограммно.<br />
Под катом много конфигов и технических терминов, так что слабонервным и гуманитариям лучше не заходить<br />
<span id="more-655"></span></p>
<p>Что мы имеем?<br />
- 4 ADSL-модема с безлимитами на каждом<br />
- Сервер на <a href="http://snake.khd.ru/tag/freebsd/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  FreeBSD">FreeBSD</a> 8.1<br />
- <a href="http://www.lissyara.su/?id=1967" target="blank_">IPFW NAT</a><br />
- Старгайзер в качестве <a href="http://snake.khd.ru/2009/10/poschitaem-vse-stargazer-kak-billing-dlya-nebolshoj-lokalki/" target="blank_">биллинга</a></p>
<p>Вполне достаточно для наших целей. Перво-наперво, проверяем, чтобы в ядро было собрано с вот такими опциями:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">##USER_OPTIONS</span>
<span style="color: #666666; font-style: italic;">#Сам IPFW</span>
options         IPFIREWALL
options         IPFIREWALL_FORWARD
<span style="color: #666666; font-style: italic;">#Включаем режим логов</span>
options         IPFIREWALL_VERBOSE
options         <span style="color: #007800;">IPFIREWALL_VERBOSE_LIMIT</span>=<span style="color: #000000;">100</span>
<span style="color: #666666; font-style: italic;">#Включаем, собственно, NAT</span>
options         IPFIREWALL_NAT
options         IPDIVERT
options         LIBALIAS
<span style="color: #666666; font-style: italic;">#Создаем 5 независимых таблиц маршрутизации: 4 для пользователей и одну для сервера</span>
options         <span style="color: #007800;">ROUTETABLES</span>=<span style="color: #000000;">5</span>
options         <span style="color: #007800;">HZ</span>=<span style="color: #000000;">4000</span></pre></div></div>

<p>Далее просто приведу примеры своих конфигов с комментариями, ибо от howto большего и не требуется <img src='http://snake.khd.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Для начала &#8211; настраиваем таблицы маршрутизации. Для этого создаем файлик /usr/local/etc/rc.d/setfib1:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span>
<span style="color: #666666; font-style: italic;"># PROVIDE: SETFIB1</span>
<span style="color: #666666; font-style: italic;"># REQUIRE: NETWORKING</span>
<span style="color: #666666; font-style: italic;"># BEFORE: DAEMON</span>
<span style="color: #666666; font-style: italic;"># </span>
<span style="color: #666666; font-style: italic;"># Add the following lines to /etc/rc.conf to enable setfib -1 at startup</span>
<span style="color: #666666; font-style: italic;"># setfib1 (bool): Set to &quot;NO&quot; by default.</span>
<span style="color: #666666; font-style: italic;">#                Set it to &quot;YES&quot; to enable setfib1</span>
<span style="color: #666666; font-style: italic;"># setfib1_defaultroute (str): Set to &quot;&quot; by default</span>
<span style="color: #666666; font-style: italic;">#       Set it to ip address of default gateway for use in fib 1</span>
&nbsp;
. <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>rc.subr
&nbsp;
<span style="color: #007800;">name</span>=<span style="color: #ff0000;">&quot;setfib1&quot;</span>
<span style="color: #007800;">rcvar</span>=<span style="color: #000000; font-weight: bold;">`</span>set_rcvar<span style="color: #000000; font-weight: bold;">`</span>
&nbsp;
load_rc_config <span style="color: #007800;">$name</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-z</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$setfib1_enable</span>&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #007800;">setfib1_enable</span>=<span style="color: #ff0000;">&quot;NO&quot;</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-z</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$setfib1_defaultroute</span>&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #007800;">setfib1_defaultroute</span>=<span style="color: #ff0000;">&quot;&quot;</span>
&nbsp;
<span style="color: #007800;">start_cmd</span>=<span style="color: #ff0000;">&quot;<span style="color: #007800;">${name}</span>_start&quot;</span>
<span style="color: #007800;">stop_cmd</span>=<span style="color: #ff0000;">&quot;<span style="color: #007800;">${name}</span>_stop&quot;</span>
&nbsp;
setfib1_start<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #7a0874; font-weight: bold;">&#123;</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #800000;">${setfib1_defaultroute}</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span>
setfib <span style="color: #000000;">1</span> route add <span style="color: #660033;">-net</span> default <span style="color: #800000;">${setfib1_defaultroute}</span>
<span style="color: #000000; font-weight: bold;">else</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Can't set defaultroute for fib 1 (setfib1_defaultroute is not set)&quot;</span>
<span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
setfib1_stop<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #7a0874; font-weight: bold;">&#123;</span>
setfib <span style="color: #000000;">1</span> route del <span style="color: #660033;">-net</span> default
<span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></div></div>

<p>Делаем его исполняемым, и так для каждой таблицы (кроме дефолтной) &#8211; т.е. четыре штуки</p>
<p>В rc.conf:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #007800;">gateway_enable</span>=<span style="color: #ff0000;">&quot;YES&quot;</span>
<span style="color: #007800;">hostname</span>=<span style="color: #ff0000;">&quot;my_server.lan&quot;</span>
<span style="color: #666666; font-style: italic;">#Интерфейс, смотрящий во внутреннюю сеть</span>
<span style="color: #007800;">ifconfig_fxp0</span>=<span style="color: #ff0000;">&quot;inet 10.0.0.1 netmask 255.255.255.0&quot;</span>
<span style="color: #666666; font-style: italic;">#Интерфейс, смотрящий на модемы</span>
<span style="color: #007800;">ifconfig_fxp1</span>=<span style="color: #ff0000;">&quot;inet 192.169.0.5 netmask 255.255.255.0&quot;</span>
<span style="color: #666666; font-style: italic;">#Каждый модем в своем влане</span>
<span style="color: #007800;">cloned_interfaces</span>=<span style="color: #ff0000;">&quot;vlan1691 vlan1692 vlan1693 vlan1694 vlan1695&quot;</span>
<span style="color: #007800;">ifconfig_vlan1691</span>=<span style="color: #ff0000;">&quot;inet 192.169.1.5 netmask 255.255.255.0 vlan 1691 vlandev fxp1&quot;</span>
<span style="color: #007800;">ifconfig_vlan1692</span>=<span style="color: #ff0000;">&quot;inet 192.169.2.5 netmask 255.255.255.0 vlan 1692 vlandev fxp1&quot;</span>
<span style="color: #007800;">ifconfig_vlan1693</span>=<span style="color: #ff0000;">&quot;inet 192.169.3.5 netmask 255.255.255.0 vlan 1693 vlandev fxp1&quot;</span>
<span style="color: #007800;">ifconfig_vlan1694</span>=<span style="color: #ff0000;">&quot;inet 192.169.4.5 netmask 255.255.255.0 vlan 1694 vlandev fxp1&quot;</span>
<span style="color: #666666; font-style: italic;">#влан, смотрящий в локальную сеть провайдера</span>
<span style="color: #007800;">ifconfig_vlan1695</span>=<span style="color: #ff0000;">&quot;inet 192.168.100.9 netmask 255.255.255.0 vlan 1695 vlandev fxp1&quot;</span>
<span style="color: #666666; font-style: italic;">#Сам сервер ходит через модем №1</span>
<span style="color: #007800;">defaultrouter</span>=<span style="color: #ff0000;">&quot;192.169.1.1&quot;</span>
<span style="color: #007800;">setfib1_enable</span>=<span style="color: #ff0000;">&quot;YES&quot;</span>
<span style="color: #007800;">setfib1_defaultroute</span>=<span style="color: #ff0000;">&quot;192.169.1.1&quot;</span>
<span style="color: #007800;">setfib2_enable</span>=<span style="color: #ff0000;">&quot;YES&quot;</span>
<span style="color: #007800;">setfib2_defaultroute</span>=<span style="color: #ff0000;">&quot;192.169.2.1&quot;</span>
<span style="color: #007800;">setfib3_enable</span>=<span style="color: #ff0000;">&quot;YES&quot;</span>
<span style="color: #007800;">setfib3_defaultroute</span>=<span style="color: #ff0000;">&quot;192.169.3.1&quot;</span>
<span style="color: #007800;">setfib4_enable</span>=<span style="color: #ff0000;">&quot;YES&quot;</span>
<span style="color: #007800;">setfib4_defaultroute</span>=<span style="color: #ff0000;">&quot;192.169.4.1&quot;</span>
<span style="color: #666666; font-style: italic;">#Включаем шейпинг</span>
<span style="color: #007800;">dummynet_enable</span>=<span style="color: #ff0000;">&quot;YES&quot;</span>
<span style="color: #666666; font-style: italic;">#Включаем фаервол</span>
<span style="color: #007800;">firewall_enable</span>=<span style="color: #ff0000;">&quot;YES&quot;</span>
<span style="color: #007800;">firewall_logging</span>=<span style="color: #ff0000;">&quot;YES&quot;</span>
<span style="color: #666666; font-style: italic;">#Конфиг-файл фаервола</span>
<span style="color: #007800;">firewall_script</span>=<span style="color: #ff0000;">&quot;/usr/home/snake/net/rc.fire.conf&quot;</span></pre></div></div>

<p>Не забываем о маршрутизации:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#Подсеть провайдера</span>
route add 192.168.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">16</span> 192.168.106.1
setfib <span style="color: #000000;">1</span> route add 192.168.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">16</span> 192.168.100.1
setfib <span style="color: #000000;">2</span> route add 192.168.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">16</span> 192.168.100.1
setfib <span style="color: #000000;">3</span> route add 192.168.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">16</span> 192.168.100.1
setfib <span style="color: #000000;">4</span> route add 192.168.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">16</span> 192.168.100.1</pre></div></div>

<p>Ну и теперь приступаем к настройкам фаервола:<br />
1, Запрещаем весь посторонний трафик</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span>
<span style="color: #666666; font-style: italic;">#IPFW--------------------------------</span>
<span style="color: #007800;">fw</span>=<span style="color: #ff0000;">&quot;/sbin/ipfw -q&quot;</span>
<span style="color: #007800;">fwa</span>=<span style="color: #ff0000;">&quot;/sbin/ipfw -q add&quot;</span>
<span style="color: #666666; font-style: italic;">#Ifaces-----------------------------</span>
<span style="color: #007800;">lan</span>=<span style="color: #ff0000;">&quot;fxp0&quot;</span>
<span style="color: #007800;">lan2</span>=<span style="color: #ff0000;">&quot;fxp1&quot;</span>
<span style="color: #007800;">inet</span>=<span style="color: #ff0000;">&quot;vlan1691&quot;</span>
<span style="color: #007800;">inet2</span>=<span style="color: #ff0000;">&quot;vlan1692&quot;</span>
<span style="color: #007800;">inet3</span>=<span style="color: #ff0000;">&quot;vlan1693&quot;</span>
<span style="color: #007800;">inet4</span>=<span style="color: #ff0000;">&quot;vlan1694&quot;</span>
<span style="color: #007800;">ifnet</span>=<span style="color: #ff0000;">&quot;vlan1695&quot;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#Selfcare &amp; service</span>
<span style="color: #666666; font-style: italic;">##loopback (1000-1020)</span>
<span style="color: #007800;">$fwa</span> 01000 allow ip from any to any via lo0
<span style="color: #007800;">$fwa</span> 01010 deny ip from any to 127.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">8</span>
<span style="color: #007800;">$fwa</span> 01020 deny ip from 127.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">8</span> to any
<span style="color: #666666; font-style: italic;">##Разрешаем доступ к модемам, иначе ничего не увидим)</span>
<span style="color: #007800;">$fwa</span> 01040 allow ip from 192.169.1.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">24</span> to me <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$inet</span>
<span style="color: #007800;">$fwa</span> 01050 allow ip from me to 192.169.1.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">24</span> out via <span style="color: #007800;">$inet</span>
<span style="color: #007800;">$fwa</span> 01060 allow ip from 192.169.2.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">24</span> to me <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$inet2</span>
<span style="color: #007800;">$fwa</span> 01070 allow ip from me to 192.169.2.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">24</span> out via <span style="color: #007800;">$inet2</span>
<span style="color: #007800;">$fwa</span> 01080 allow ip from 192.169.3.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">24</span> to me <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$inet3</span>
<span style="color: #007800;">$fwa</span> 01090 allow ip from me to 192.169.3.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">24</span> out via <span style="color: #007800;">$inet3</span>
<span style="color: #007800;">$fwa</span> 01100 allow ip from 192.169.4.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">24</span> to me <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$inet4</span>
<span style="color: #007800;">$fwa</span> 01110 allow ip from me to 192.169.4.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">24</span> out via <span style="color: #007800;">$inet4</span>
<span style="color: #007800;">$fwa</span> 01120 allow ip from 192.169.5.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">24</span> to me <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$ifnet</span>
<span style="color: #007800;">$fwa</span> 01130 allow ip from me to 192.169.5.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">24</span> out via <span style="color: #007800;">$ifnet</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#Deny packets (2000-2999)</span>
<span style="color: #666666; font-style: italic;">##Через интерфейсы, смотрящие непосредственно в интернет, не должен проходить локальный траффик</span>
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">2000</span> deny log ip from 10.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">8</span> to any <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$inet</span>
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">2010</span> deny log ip from any to 10.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">8</span> out via <span style="color: #007800;">$inet</span>
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">2020</span> deny log ip from 172.16.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">12</span> to any <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$inet</span>
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">2030</span> deny log ip from any to 172.16.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">12</span> out via <span style="color: #007800;">$inet</span>
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">2040</span> deny log ip from 192.168.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">16</span> to any <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$inet</span>
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">2050</span> deny log ip from any to 192.168.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">16</span> out via <span style="color: #007800;">$inet</span>
&nbsp;
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">2100</span> deny log ip from 10.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">8</span> to me <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$inet2</span>
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">2110</span> deny log ip from any to 10.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">8</span> out via <span style="color: #007800;">$inet2</span>
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">2120</span> deny log ip from 172.16.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">12</span> to any <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$inet2</span>
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">2130</span> deny log ip from any to 172.16.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">12</span> out via <span style="color: #007800;">$inet2</span>
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">2140</span> deny log ip from 192.168.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">16</span> to any <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$inet2</span>
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">2150</span> deny log ip from any to 192.168.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">16</span> out via <span style="color: #007800;">$inet2</span>
&nbsp;
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">2200</span> deny log ip from 10.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">8</span> to me <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$inet3</span>
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">2210</span> deny log ip from any to 10.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">8</span> out via <span style="color: #007800;">$inet3</span>
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">2220</span> deny log ip from 172.16.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">12</span> to any <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$inet3</span>
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">2230</span> deny log ip from any to 172.16.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">12</span> out via <span style="color: #007800;">$inet3</span>
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">2240</span> deny log ip from 192.168.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">16</span> to any <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$inet3</span>
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">2250</span> deny log ip from any to 192.168.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">16</span> out via <span style="color: #007800;">$inet3</span>
&nbsp;
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">2300</span> deny log ip from 10.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">8</span> to any <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$inet4</span>
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">2310</span> deny log ip from any to 10.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">8</span> out via <span style="color: #007800;">$inet4</span>
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">2320</span> deny log ip from 172.16.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">12</span> to any <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$inet4</span>
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">2330</span> deny log ip from any to 172.16.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">12</span> out via <span style="color: #007800;">$inet4</span>
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">2340</span> deny log ip from 192.168.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">16</span> to any <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$inet4</span>
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">2350</span> deny log ip from any to 192.168.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">16</span> out via <span style="color: #007800;">$inet4</span>
&nbsp;
<span style="color: #666666; font-style: italic;">##Через подсеть провайдера может проходить только &quot;свой&quot; трафик</span>
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">2300</span> deny log ip from 10.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">8</span> to any <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$ifnet</span>
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">2310</span> deny log ip from any to 10.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">8</span> out via <span style="color: #007800;">$ifnet</span>
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">2410</span> deny log ip from 172.16.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">12</span> to any <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$ifnet</span>
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">2420</span> deny log ip from any to 172.16.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">12</span> out via <span style="color: #007800;">$ifnet</span></pre></div></div>

<p>3. Собственно, правила для выпускания в интернет</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span>
<span style="color: #666666; font-style: italic;">#IPFW--------------------------------</span>
<span style="color: #007800;">fw</span>=<span style="color: #ff0000;">&quot;/sbin/ipfw -q&quot;</span>
<span style="color: #007800;">fwa</span>=<span style="color: #ff0000;">&quot;/sbin/ipfw -q add&quot;</span>
<span style="color: #666666; font-style: italic;">#Ifaces-----------------------------</span>
<span style="color: #007800;">lan</span>=<span style="color: #ff0000;">&quot;fxp0&quot;</span>
<span style="color: #007800;">lan2</span>=<span style="color: #ff0000;">&quot;fxp1&quot;</span>
<span style="color: #007800;">inet</span>=<span style="color: #ff0000;">&quot;vlan1691&quot;</span>
<span style="color: #007800;">inet2</span>=<span style="color: #ff0000;">&quot;vlan1692&quot;</span>
<span style="color: #007800;">inet3</span>=<span style="color: #ff0000;">&quot;vlan1693&quot;</span>
<span style="color: #007800;">inet4</span>=<span style="color: #ff0000;">&quot;vlan1694&quot;</span>
<span style="color: #007800;">ifvtk</span>=<span style="color: #ff0000;">&quot;vlan1695&quot;</span>
<span style="color: #666666; font-style: italic;">#IP groups--------------------------</span>
<span style="color: #666666; font-style: italic;">#Внутренняя сеть</span>
<span style="color: #007800;">hostel</span>=<span style="color: #ff0000;">&quot;10.0.0.0/24&quot;</span>
<span style="color: #007800;">net</span>=<span style="color: #ff0000;">&quot;192.168.0.0/16&quot;</span>
<span style="color: #666666; font-style: italic;">#Internet access</span>
<span style="color: #666666; font-style: italic;">##Stargazer</span>
<span style="color: #666666; font-style: italic;">###Интернет для пользователей в таблице 2</span>
<span style="color: #007800;">$fwa</span> 04141 allow ip from <span style="color: #ff0000;">&quot;table(2)&quot;</span> to not <span style="color: #007800;">$net</span> <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$lan</span>
<span style="color: #007800;">$fwa</span> 04144 allow ip from not <span style="color: #007800;">$net</span> to <span style="color: #ff0000;">&quot;table(2)&quot;</span> out via <span style="color: #007800;">$lan</span>
<span style="color: #666666; font-style: italic;">###Внутрисеть для пользователей из табл. 3</span>
<span style="color: #007800;">$fwa</span> 04241 allow ip from <span style="color: #ff0000;">&quot;table(3)&quot;</span> to <span style="color: #007800;">$net</span> <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$lan</span>
<span style="color: #007800;">$fwa</span> 04244 allow ip from <span style="color: #007800;">$net</span> to <span style="color: #ff0000;">&quot;table(3)&quot;</span> out via <span style="color: #007800;">$lan</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#Выпускаем трафик..</span>
<span style="color: #666666; font-style: italic;">##Наружу</span>
<span style="color: #007800;">$fwa</span> 06010 allow ip from any to not <span style="color: #007800;">$vtk</span> out via <span style="color: #007800;">$inet</span>
<span style="color: #007800;">$fwa</span> 06020 allow ip from any to not <span style="color: #007800;">$vtk</span> out via <span style="color: #007800;">$inet2</span>
<span style="color: #007800;">$fwa</span> 06030 allow ip from any to not <span style="color: #007800;">$vtk</span> out via <span style="color: #007800;">$inet3</span>
<span style="color: #007800;">$fwa</span> 06040 allow ip from any to not <span style="color: #007800;">$vtk</span> out via <span style="color: #007800;">$inet4</span>
<span style="color: #007800;">$fwa</span> 06050 allow ip from any to <span style="color: #007800;">$vtk</span> out via <span style="color: #007800;">$ifvtk</span>
&nbsp;
<span style="color: #666666; font-style: italic;">##Пропускаем внутрь) В таблицах 5-9 разбитые на группы пользователи</span>
<span style="color: #007800;">$fwa</span> 06210 allow ip from not <span style="color: #007800;">$net</span> to <span style="color: #ff0000;">&quot;table(5)&quot;</span> <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$inet</span>
<span style="color: #007800;">$fwa</span> 06220 allow ip from not <span style="color: #007800;">$net</span> to <span style="color: #ff0000;">&quot;table(6)&quot;</span> <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$inet2</span>
<span style="color: #007800;">$fwa</span> 06230 allow ip from not <span style="color: #007800;">$net</span> to <span style="color: #ff0000;">&quot;table(7)&quot;</span> <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$inet3</span>
<span style="color: #007800;">$fwa</span> 06240 allow ip from not <span style="color: #007800;">$net</span> to <span style="color: #ff0000;">&quot;table(8)&quot;</span> <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$inet4</span>
<span style="color: #007800;">$fwa</span> 06250 allow ip from not <span style="color: #007800;">$net</span> to <span style="color: #ff0000;">&quot;table(9)&quot;</span> <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$inet4</span>
<span style="color: #007800;">$fwa</span> 06260 allow ip from <span style="color: #007800;">$net</span> to <span style="color: #ff0000;">&quot;table(3)&quot;</span> <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$ifnet</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#----------------------------------</span>
<span style="color: #666666; font-style: italic;">##ICMP</span>
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">60200</span> allow icmp from me to any
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">60250</span> allow icmp from any to me
<span style="color: #666666; font-style: italic;">##Allow all outcoming</span>
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">65000</span> allow ip from me to any</pre></div></div>

<p>А теперь &#8211; самое интересное <img src='http://snake.khd.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Шейпинг:</p>
<pre>
#!/bin/sh
#<a href="http://snake.khd.ru/tag/ipfw/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  ipfw">IPFW</a>--------------------------------
fw="/sbin/<a href="http://snake.khd.ru/tag/ipfw/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  ipfw">ipfw</a> -q"
fwa="/sbin/<a href="http://snake.khd.ru/tag/ipfw/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  ipfw">ipfw</a> -q add"
fwt="/sbin/<a href="http://snake.khd.ru/tag/ipfw/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  ipfw">ipfw</a> table"
#Env---------------------------------
gw0="192.169.1.1"
gw1="192.169.1.1"
gw2="192.169.2.1"
gw3="192.169.3.1"
gw4="192.169.4.1"
gw5="192.169.5.1"
#Ifaces-----------------------------
lan="fxp0"
lan2="fxp1"
inet="vlan1691"
inet2="vlan1692"
inet3="vlan1693"
inet4="vlan1694"
ifnet="vlan1695"
#IP's-------------------------------
iplan="10.0.0.1"
ipnet="192.168.100.9"
#IP groups--------------------------
hostel="10.0.0.0/24"
net="192.168.0.0/16"
#Priority---------------------------
tcphigh=100
tcpother=40
udpall=20
ipall=20
tcp_ports="20,21,22,53,80,81,443,5190,5222,3128,8080,8081,8088,28960"
#Размер очереди прикидываем вот так:
#http://www.opennet.ru/tips/info/1411.shtml
#Queue size-------------------------
qdowni="350Kbytes"
qupi="50Kbytes"
qdownnet="550Kbytes"
qupnet="70Kbytes"
#Speed------------------------------
##Main outgoing queue
upi=500Kbit/s
##Main downloading queue
downi=3400Kbit/s
##NET outgoing queue
upnet=800Kbit/s
##net downloading queue
downnet=5000Kbit/s
#Пайпы (по одной на канал)
$fw pipe 100 config bw $downi queue $qdowni gred 0.002/10/30/0.1
$fw pipe 200 config bw $upi queue $qupi gred 0.002/10/30/0.1
$fw pipe 300 config bw $downi queue $qdowni gred 0.002/10/30/0.1
$fw pipe 400 config bw $upi queue $qupi gred 0.002/10/30/0.1
$fw pipe 500 config bw $downi queue $qdowni gred 0.002/10/30/0.1
$fw pipe 600 config bw $upi queue $qupi gred 0.002/10/30/0.1
$fw pipe 700 config bw $downi queue $qdowni gred 0.002/10/30/0.1
$fw pipe 800 config bw $upi queue $qupi gred 0.002/10/30/0.1
$fw pipe 900 config bw $downnet queue $qdownvtk gred 0.002/10/30/0.1
$fw pipe 1000 config bw $upnet queue $qupvtk gred 0.002/10/30/0.1
#-----------------------------------
</pre>
<pre>
#Очереди
#inet --> LAN
#Для различного типа трафика действует различный приоритет
$fw queue 101 config weight $tcphigh pipe 100 gred 0.002/10/30/0.1 mask dst-ip 0xffffffff
$fw queue 102 config weight $tcpother pipe 100 gred 0.002/10/30/0.1 mask dst-ip 0xffffffff
$fw queue 103 config weight $udpall pipe 100 gred 0.002/10/30/0.1 mask dst-ip 0xffffffff
$fw queue 104 config weight $ipall pipe 100 gred 0.002/10/30/0.1 mask dst-ip 0xffffffff

$fw queue 301 config weight $tcphigh pipe 300 gred 0.002/10/30/0.1 mask dst-ip 0xffffffff
$fw queue 302 config weight $tcpother pipe 300 gred 0.002/10/30/0.1 mask dst-ip 0xffffffff
$fw queue 303 config weight $udpall pipe 300 gred 0.002/10/30/0.1 mask dst-ip 0xffffffff
$fw queue 304 config weight $ipall pipe 300 gred 0.002/10/30/0.1 mask dst-ip 0xffffffff

$fw queue 501 config weight $tcphigh pipe 500 gred 0.002/10/30/0.1 mask dst-ip 0xffffffff
$fw queue 502 config weight $tcpother pipe 500 gred 0.002/10/30/0.1 mask dst-ip 0xffffffff
$fw queue 503 config weight $udpall pipe 500 gred 0.002/10/30/0.1 mask dst-ip 0xffffffff
$fw queue 504 config weight $ipall pipe 500 gred 0.002/10/30/0.1 mask dst-ip 0xffffffff

$fw queue 701 config weight $tcphigh pipe 700 gred 0.002/10/30/0.1 mask dst-ip 0xffffffff
$fw queue 702 config weight $tcpother pipe 700 gred 0.002/10/30/0.1 mask dst-ip 0xffffffff
$fw queue 703 config weight $udpall pipe 700 gred 0.002/10/30/0.1 mask dst-ip 0xffffffff
$fw queue 704 config weight $ipall pipe 700 gred 0.002/10/30/0.1 mask dst-ip 0xffffffff

#LAN --> inet
$fw queue 201 config weight $tcphigh pipe 200 gred 0.002/10/30/0.1 mask src-ip 0xffffffff
$fw queue 202 config weight $tcpother pipe 200 gred 0.002/10/30/0.1 mask src-ip 0xffffffff
$fw queue 203 config weight $udpall pipe 200 gred 0.002/10/30/0.1 mask src-ip 0xffffffff
$fw queue 204 config weight $ipall pipe 200 gred 0.002/10/30/0.1 mask src-ip 0xffffffff

$fw queue 401 config weight $tcphigh pipe 400 gred 0.002/10/30/0.1 mask src-ip 0xffffffff
$fw queue 402 config weight $tcpother pipe 400 gred 0.002/10/30/0.1 mask src-ip 0xffffffff
$fw queue 403 config weight $udpall pipe 400 gred 0.002/10/30/0.1 mask src-ip 0xffffffff
$fw queue 404 config weight $ipall pipe 400 gred 0.002/10/30/0.1 mask src-ip 0xffffffff

$fw queue 601 config weight $tcphigh pipe 600 gred 0.002/10/30/0.1 mask src-ip 0xffffffff
$fw queue 602 config weight $tcpother pipe 600 gred 0.002/10/30/0.1 mask src-ip 0xffffffff
$fw queue 603 config weight $udpall pipe 600 gred 0.002/10/30/0.1 mask src-ip 0xffffffff
$fw queue 604 config weight $ipall pipe 600 gred 0.002/10/30/0.1 mask src-ip 0xffffffff

$fw queue 801 config weight $tcphigh pipe 800 gred 0.002/10/30/0.1 mask src-ip 0xffffffff
$fw queue 802 config weight $tcpother pipe 800 gred 0.002/10/30/0.1 mask src-ip 0xffffffff
$fw queue 803 config weight $udpall pipe 800 gred 0.002/10/30/0.1 mask src-ip 0xffffffff
$fw queue 804 config weight $ipall pipe 800 gred 0.002/10/30/0.1 mask src-ip 0xffffffff

#WAN --> LAN
$fw queue 901 config weight $tcphigh pipe 900 gred 0.002/10/30/0.1 mask dst-ip 0xffffffff
$fw queue 902 config weight $tcpother pipe 900 gred 0.002/10/30/0.1 mask dst-ip 0xffffffff
$fw queue 903 config weight $udpall pipe 900 gred 0.002/10/30/0.1 mask dst-ip 0xffffffff
$fw queue 904 config weight $ipall pipe 900 gred 0.002/10/30/0.1 mask dst-ip 0xffffffff

#LAN --> WAN
$fw queue 1001 config weight $tcphigh pipe 1000 gred 0.002/10/30/0.1 mask src-ip 0xffffffff
$fw queue 1002 config weight $tcpother pipe 1000 gred 0.002/10/30/0.1 mask src-ip 0xffffffff
$fw queue 1003 config weight $udpall pipe 1000 gred 0.002/10/30/0.1 mask src-ip 0xffffffff
$fw queue 1004 config weight $ipall pipe 1000 gred 0.002/10/30/0.1 mask src-ip 0xffffffff
</pre>
<pre>
#-----------------------------------
#Настройки <a href="http://snake.khd.ru/tag/nat/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  nat">NAT</a>
$fw <a href="http://snake.khd.ru/tag/nat/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  nat">nat</a> 100 config if $inet same_ports reset deny_in
$fw <a href="http://snake.khd.ru/tag/nat/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  nat">nat</a> 200 config if $inet2 same_ports reset deny_in
$fw <a href="http://snake.khd.ru/tag/nat/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  nat">nat</a> 300 config if $inet3 same_ports reset deny_in
$fw <a href="http://snake.khd.ru/tag/nat/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  nat">nat</a> 400 config if $inet4 same_ports reset deny_in
$fw <a href="http://snake.khd.ru/tag/nat/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  nat">nat</a> 500 config if $ifnet same_ports reset deny_in
#-----------------------------------
##<a href="http://snake.khd.ru/tag/routing/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  routing">Routing</a> tables
setfib 0 route delete default
setfib 0 route add default 192.169.1.1
###Clients route tables 1200-1599
setfib 1 route delete default
setfib 1 route add default 192.169.1.1
$fwa 01210 setfib 1 ip from "table(5)" to any in recv $lan
$fwa 01220 setfib 1 ip from "table(5)" to any in recv $vlan1204
$fwa 01230 setfib 1 ip from "table(5)" to any in recv $vlan1205
setfib 2 route delete default
setfib 2 route add default 192.169.2.1
$fwa 01310 setfib 2 ip from "table(6)" to any in recv $lan
$fwa 01320 setfib 2 ip from "table(6)" to any in recv $vlan1204
$fwa 01330 setfib 2 ip from "table(6)" to any in recv $vlan1205
setfib 3 route delete default
setfib 3 route add default 192.169.3.1
$fwa 01310 setfib 3 ip from "table(7)" to any in recv $lan
$fwa 01320 setfib 3 ip from "table(7)" to any in recv $vlan1204
$fwa 01330 setfib 3 ip from "table(7)" to any in recv $vlan1205
setfib 4 route delete default
setfib 4 route add default 192.169.4.1
$fwa 01410 setfib 4 ip from "table(8)" to any in recv $lan
$fwa 01420 setfib 4 ip from "table(8)" to any in recv $vlan1204
$fwa 01430 setfib 4 ip from "table(8)" to any in recv $vlan1205
###---Table 9 for limit tariff users
$fwa 01440 setfib 4 ip from "table(9)" to any in recv $lan
$fwa 01450 setfib 4 ip from "table(9)" to any in recv $vlan1204
$fwa 01460 setfib 4 ip from "table(9)" to any in recv $vlan1205
#-----------------------------------
</pre>
<pre>
#NAT &#038; queues
##Исходящие очереди
###ADSL1
$fwa 05011 queue 201 tcp from "table(5)" to any $tcp_ports out xmit $inet
$fwa 05012 queue 202 tcp from "table(5)" to not any $tcp_ports out xmit $inet
$fwa 05013 skipto 5110 tcp from "table(5)" to any out xmit $inet
$fwa 05014 queue 203 udp from "table(5)" to any out xmit $inet
$fwa 05015 skipto 5110 udp from "table(5)" to any out xmit $inet
$fwa 05016 queue 201 icmp from "table(5)" to any out xmit $inet
$fwa 05017 skipto 5110 icmp from "table(5)" to any out xmit $inet
$fwa 05018 queue 204 ip from "table(5)" to any out xmit $inet
###ADSL2
$fwa 05021 queue 401 tcp from "table(6)" to any $tcp_ports out xmit $inet2
$fwa 05022 queue 402 tcp from "table(6)" to not any $tcp_ports out xmit $inet2
$fwa 05023 skipto 5120 tcp from "table(6)" to any out xmit $inet2
$fwa 05024 queue 403 udp from "table(6)" to any out xmit $inet2
$fwa 05025 skipto 5120 udp from "table(6)" to any out xmit $inet2
$fwa 05026 queue 401 icmp from "table(6)" to any out xmit $inet2
$fwa 05027 skipto 5120 icmp from "table(6)" to any out xmit $inet2
$fwa 05028 queue 404 ip from "table(6)" to any out xmit $inet2
###ADSL3
$fwa 05031 queue 601 tcp from "table(7)" to any $tcp_ports out xmit $inet3
$fwa 05032 queue 602 tcp from "table(7)" to not any $tcp_ports out xmit $inet3
$fwa 05033 skipto 5130 tcp from "table(7)" to any out xmit $inet3
$fwa 05034 queue 603 udp from "table(7)" to any out xmit $inet3
$fwa 05035 skipto 5130 udp from "table(7)" to any out xmit $inet3
$fwa 05036 queue 601 icmp from "table(7)" to any out xmit $inet3
$fwa 05037 skipto 5130 icmp from "table(7)" to any out xmit $inet3
$fwa 05038 queue 604 ip from "table(7)" to any out xmit $inet3
###ADSL4
$fwa 05041 queue 801 tcp from "table(8)" to any $tcp_ports out xmit $inet4
$fwa 05042 queue 802 tcp from "table(8)" to not any $tcp_ports out xmit $inet4
$fwa 05043 skipto 5140 tcp from "table(8)" to any out xmit $inet4
$fwa 05044 queue 803 udp from "table(8)" to any out xmit $inet4
$fwa 05045 skipto 5140 udp from "table(8)" to any out xmit $inet4
$fwa 05046 queue 801 icmp from "table(8)" to any out xmit $inet4
$fwa 05047 skipto 5140 icmp from "table(8)" to any out xmit $inet4
$fwa 05048 queue 804 ip from "table(8)" to any out xmit $inet4
###Юзвери, сидящие на лимитированных тарифах обслуживаются в первую очередь
$fwa 05051 queue 801 ip from "table(9)" to any out xmit $inet4
###ADSL5
$fwa 05061 queue 1001 tcp from "table(3)" to $net $tcp_ports out xmit $ifnet
$fwa 05062 queue 1002 tcp from "table(3)" to not $net $tcp_ports out xmit $ifnet
$fwa 05063 skipto 5150 tcp from "table(3)" to any out xmit $ifnet
$fwa 05064 queue 1003 udp from "table(3)" to $net out xmit $ifnet
$fwa 05065 skipto 5150 udp from "table(3)" to any out xmit $ifnet
$fwa 05066 queue 1004 icmp from "table(3)" to $net out xmit $ifnet
$fwa 05067 skipto 5150 icmp from "table(3)" to any out xmit $ifnet
$fwa 05068 queue 1004 ip from "table(3)" to $net out xmit $ifnet
</pre>
<pre>
#-----------------------------------
##NAT
$fwa 05110 nat 100 ip from any to any via $inet
$fwa 05120 nat 200 ip from any to any via $inet2
$fwa 05130 nat 300 ip from any to any via $inet3
$fwa 05140 nat 400 ip from any to any via $inet4
$fwa 05150 nat 500 ip from any to any via $ifnet
#----------------------------------
##Incoming queues
$fwa 05311 queue 101 tcp from any $tcp_ports to "table(5)" in recv $inet
$fwa 05312 queue 102 tcp from not any $tcp_ports to "table(5)" in recv $inet
$fwa 05313 skipto 6010 tcp from any to "table(5)" in via $inet
$fwa 05314 queue 103 udp from any to "table(5)" in recv $inet
$fwa 05315 skipto 6010 udp from any to "table(5)" in via $inet
$fwa 05316 queue 101 icmp from any to "table(5)" in recv $inet
$fwa 05317 skipto 6010 icmp from any to "table(5)" in via $inet
$fwa 05318 queue 104 ip from any to "table(5)" in recv $inet

$fwa 05321 queue 301 tcp from any $tcp_ports to "table(6)" in recv $inet2
$fwa 05322 queue 302 tcp from not any $tcp_ports to "table(6)" in recv $inet2
$fwa 05323 skipto 6010 tcp from any to "table(6)" in via $inet2
$fwa 05324 queue 303 udp from any to "table(6)" in recv $inet2
$fwa 05325 skipto 6010 udp from any to "table(6)" in via $inet2
$fwa 05326 queue 301 icmp from any to "table(6)" in recv $inet2
$fwa 05327 skipto 6010 icmp from any to "table(6)" in via $inet2
$fwa 05328 queue 304 ip from any to "table(6)" in recv $inet2

$fwa 05331 queue 501 tcp from any $tcp_ports to "table(7)" in recv $inet3
$fwa 05332 queue 502 tcp from not any $tcp_ports to "table(7)" in recv $inet3
$fwa 05333 skipto 6010 tcp from any to "table(7)" in via $inet3
$fwa 05334 queue 503 udp from any to "table(7)" in recv $inet3
$fwa 05335 skipto 6010 udp from any to "table(7)" in via $inet3
$fwa 05336 queue 501 icmp from any to "table(7)" in recv $inet3
$fwa 05337 skipto 6010 icmp from any to "table(7)" in via $inet3
$fwa 05338 queue 504 ip from any to "table(7)" in recv $inet3

$fwa 05341 queue 701 tcp from any $tcp_ports to "table(8)" in recv $inet4
$fwa 05342 queue 702 tcp from not any $tcp_ports to "table(8)" in recv $inet4
$fwa 05347 skipto 6010 tcp from any to "table(8)" in via $inet4
$fwa 05343 queue 703 udp from any to "table(8)" in recv $inet4
$fwa 05347 skipto 6010 udp from any to "table(8)" in via $inet4
$fwa 05344 queue 701 icmp from any to "table(8)" in recv $inet4
$fwa 05347 skipto 6010 icmp from any to "table(8)" in via $inet4
$fwa 05345 queue 704 ip from any to "table(8)" in recv $inet4

$fwa 05351 queue 701 ip from any to "table(9)" in recv $inet4
$fwa 05352 skipto 6010 ip from any to "table(9)" in via $inet4

$fwa 05361 queue 901 tcp from $net $tcp_ports to "table(3)" in recv $ifnet
$fwa 05362 queue 902 tcp from not $net $tcp_ports to "table(3)" in recv $ifnet
$fwa 05367 skipto 6010 tcp from $net to "table(3)" in via $ifnet
$fwa 05363 queue 903 udp from $net to "table(3)" in recv $ifnet
$fwa 05367 skipto 6010 udp from $net to "table(3)" in via $ifnet
$fwa 05364 queue 901 icmp from $net to "table(3)" in recv $ifnet
$fwa 05367 skipto 6010 icmp from $net to "table(3)" in via $ifnet
$fwa 05365 queue 904 ip from $<a href="http://snake.khd.ru/tag/vtk/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  vtk">vtk</a> to "table(3)" in recv $ifnet
</pre>
<p>Такая схема работает более или менее успешно. Пользователи распихиваются по таблицам примерно поровну, после чего за каждой группой пользователей закрепляется &#8220;свой&#8221; канал.<br />
Все вопросы можно задавать тут)</p>
]]></content:encoded>
			<wfw:commentRss>http://snake.khd.ru/2011/01/operaciya-kooperaciya-ipfw-stargazer-i-4-adsl-soedineniya-chast-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Возмущения псто</title>
		<link>http://snake.khd.ru/2010/12/vozmushheniya-psto/</link>
		<comments>http://snake.khd.ru/2010/12/vozmushheniya-psto/#comments</comments>
		<pubDate>Fri, 17 Dec 2010 01:45:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[idiots]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[vtk]]></category>

		<guid isPermaLink="false">http://snake.khd.ru/?p=644</guid>
		<description><![CDATA[Ответственно заявляю, что наш любимый хабаровский ВостокТелеком &#8211; полные уроды. Стоят себе 4 дсл-ки, никого не трогают, питают живительными интернетами воспаленное сознание и урчащие винты. Мало того, что в последние из заявленных тарифом четырех мегабит выбивалось максимум три, а обычно &#8211; два. А тут бац &#8211; &#8220;доступ запрещен, бла-бла, введен неправильный пароль или на счету <a href='http://snake.khd.ru/2010/12/vozmushheniya-psto/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Ответственно заявляю, что наш любимый хабаровский ВостокТелеком &#8211; полные уроды. Стоят себе 4 дсл-ки, никого не трогают, питают живительными интернетами воспаленное сознание и урчащие винты. Мало того, что в последние из заявленных тарифом четырех мегабит выбивалось максимум три, а обычно &#8211; два. А тут бац &#8211; &#8220;доступ запрещен, бла-бла, введен неправильный пароль или на счету недостаточно средств&#8221;. Такое и раньше бывало, и решалось обычно звонком в саппорт. А сейчас, видите ли, за дело взялись юристы и расчетная группа &#8211; отключили три линии из четырех, мотивируя это законом &#8220;О связи&#8221;, на основании которого, якобы, на один договор и одно помещение разрешается установка не более одной линии безлимитного интернета (полная хрень, кмк). Настоятельно просят подойти к ихнему юристу и написать расписочку, что интернет я потребляю только &#8220;для личного пользования&#8221;. Достали, чесслово.<br />
Товарищи френды, может среди вас есть кто-нибудь, кто шарит в юриспруденции? Договор я, скорее всего, буду разрывать &#8211; ибо такие закидоны это что-то за гранью. Меня просто интересует юридическая обоснованность подобных заявлений</p>
]]></content:encoded>
			<wfw:commentRss>http://snake.khd.ru/2010/12/vozmushheniya-psto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Про палки и банки</title>
		<link>http://snake.khd.ru/2009/11/pro-palki-i-banki/</link>
		<comments>http://snake.khd.ru/2009/11/pro-palki-i-banki/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 06:10:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[idiots]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[paypal]]></category>
		<category><![CDATA[vtb]]></category>

		<guid isPermaLink="false">http://snake.khd.ru/?p=165</guid>
		<description><![CDATA[Сегодня выяснилась пренеприятная новость &#8211; моя ВТБшная VISA Classic ни черта не работает с PayPal (из-за хитрозадой системы ВТБ). Придется оформлять VISA e-card. Стоит то конечно копейки (обслуживание 50р в год), но спрашивается нафига тогда брать VISA classic, которая стоит 750р в год, если есть VISA electron за 50?]]></description>
			<content:encoded><![CDATA[<p>Сегодня выяснилась пренеприятная новость &#8211; моя ВТБшная VISA Classic ни черта не работает с <a href="http://snake.khd.ru/tag/paypal/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  paypal">PayPal</a> (из-за хитрозадой системы ВТБ). Придется оформлять VISA e-card. Стоит то конечно копейки (обслуживание 50р в год), но спрашивается нафига тогда брать VISA classic, которая стоит 750р в год, если есть VISA electron за 50?</p>
]]></content:encoded>
			<wfw:commentRss>http://snake.khd.ru/2009/11/pro-palki-i-banki/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Каждому по потребностям &#8211; шейпинг трафика при помощи IPFW</title>
		<link>http://snake.khd.ru/2009/10/kazhdomu-po-potrebnostyam-shejping-trafika-pri-pomoshhi-ipfw/</link>
		<comments>http://snake.khd.ru/2009/10/kazhdomu-po-potrebnostyam-shejping-trafika-pri-pomoshhi-ipfw/#comments</comments>
		<pubDate>Sun, 18 Oct 2009 13:37:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[ipfw]]></category>
		<category><![CDATA[nat]]></category>
		<category><![CDATA[routing]]></category>
		<category><![CDATA[shaping]]></category>

		<guid isPermaLink="false">http://snake.khd.ru/?p=118</guid>
		<description><![CDATA[Исходные данные: FreeBSD 7.2, IPFW, MPD4.3. две ADSL линии. Задача &#8211; раздавать интернет пользователям &#8211; у каждой группы пользователей свой канал. Итак, настраиваем mpd. В /usr/local/etc/mpd4 нас интересуют два файла: snake@snake &#91;mpd4&#93;#ls -al total 118 drwxr-xr-x 2 root wheel 512 16 окт 22:57 . drwxr-xr-x 24 root wheel 1536 18 окт 20:53 .. -rw-r--r-- 1 <a href='http://snake.khd.ru/2009/10/kazhdomu-po-potrebnostyam-shejping-trafika-pri-pomoshhi-ipfw/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Исходные данные: <a href="http://snake.khd.ru/tag/freebsd/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  FreeBSD">FreeBSD</a> 7.2, <a href="http://snake.khd.ru/tag/ipfw/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  ipfw">IPFW</a>, MPD4.3. две ADSL линии.<br />
Задача &#8211; раздавать интернет пользователям &#8211; у каждой группы пользователей свой канал.<br />
<span id="more-118"></span><br />
Итак, настраиваем mpd. В /usr/local/etc/mpd4 нас интересуют два файла:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">snake<span style="color: #000000; font-weight: bold;">@</span>snake <span style="color: #7a0874; font-weight: bold;">&#91;</span>mpd4<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #666666; font-style: italic;">#ls -al</span>
total <span style="color: #000000;">118</span>
drwxr-xr-x   <span style="color: #000000;">2</span> root   wheel    <span style="color: #000000;">512</span> <span style="color: #000000;">16</span> окт <span style="color: #000000;">22</span>:<span style="color: #000000;">57</span> .
drwxr-xr-x  <span style="color: #000000;">24</span> root   wheel   <span style="color: #000000;">1536</span> <span style="color: #000000;">18</span> окт <span style="color: #000000;">20</span>:<span style="color: #000000;">53</span> ..
<span style="color: #660033;">-rw-r--r--</span>   <span style="color: #000000;">1</span> snake  snake   <span style="color: #000000;">2799</span> <span style="color: #000000;">19</span> сен 00:<span style="color: #000000;">33</span> mpd.conf
<span style="color: #660033;">-rw-r--r--</span>   <span style="color: #000000;">1</span> snake  snake    <span style="color: #000000;">638</span> <span style="color: #000000;">17</span> сен <span style="color: #000000;">23</span>:<span style="color: #000000;">14</span> mpd.links</pre></div></div>

<p>Содержимое mpd.conf:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">startup:
        <span style="color: #666666; font-style: italic;"># configure the console</span>
        <span style="color: #000000; font-weight: bold;">set</span> console port <span style="color: #000000;">5005</span>
        <span style="color: #000000; font-weight: bold;">set</span> console ip 127.0.0.1
        <span style="color: #000000; font-weight: bold;">set</span> console user user <span style="color: #7a0874; font-weight: bold;">test</span>
        <span style="color: #000000; font-weight: bold;">set</span> console open
&nbsp;
default:
        load vtk_unlim
        load vtk_unlim2
&nbsp;
vtk_unlim:
        new <span style="color: #660033;">-i</span> ng0 pppoe_vtk pppoe_vtk <span style="color: #666666; font-style: italic;">#имя соединения в mpd.links</span>
        <span style="color: #000000; font-weight: bold;">set</span> iface route default <span style="color: #666666; font-style: italic;">#установить соединение маршрутом по умолчанию</span>
        <span style="color: #000000; font-weight: bold;">set</span> iface disable on-demand
        <span style="color: #000000; font-weight: bold;">set</span> iface idle <span style="color: #000000;">0</span>
        <span style="color: #000000; font-weight: bold;">set</span> ipcp <span style="color: #c20cb9; font-weight: bold;">yes</span> vjcomp
        <span style="color: #000000; font-weight: bold;">set</span> ipcp ranges 0.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">0</span> 0.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">0</span>
        <span style="color: #000000; font-weight: bold;">set</span> bundle disable multilink
        <span style="color: #000000; font-weight: bold;">set</span> auth authname mylogin
        <span style="color: #000000; font-weight: bold;">set</span> auth password MyPaSsWoRd
        <span style="color: #000000; font-weight: bold;">set</span> <span style="color: #c20cb9; font-weight: bold;">link</span> no acfcomp protocomp
        <span style="color: #000000; font-weight: bold;">set</span> <span style="color: #c20cb9; font-weight: bold;">link</span> disable pap chap<span style="color: #666666; font-style: italic;">#настройки шифрования</span>
        <span style="color: #000000; font-weight: bold;">set</span> <span style="color: #c20cb9; font-weight: bold;">link</span> accept chap
        <span style="color: #000000; font-weight: bold;">set</span> <span style="color: #c20cb9; font-weight: bold;">link</span> mtu <span style="color: #000000;">1400</span> <span style="color: #666666; font-style: italic;">#настройка MTU</span>
        <span style="color: #000000; font-weight: bold;">set</span> <span style="color: #c20cb9; font-weight: bold;">link</span> keep-alive <span style="color: #000000;">10</span> <span style="color: #000000;">60</span>
        <span style="color: #000000; font-weight: bold;">set</span> <span style="color: #c20cb9; font-weight: bold;">link</span> max redial <span style="color: #000000;">0</span> <span style="color: #666666; font-style: italic;">#число попыток реконнекта</span>
        <span style="color: #000000; font-weight: bold;">set</span> bundle disable noretry <span style="color: #666666; font-style: italic;">#перезванивать при обрыве</span>
        <span style="color: #000000; font-weight: bold;">set</span> iface up-script <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>mpd4<span style="color: #000000; font-weight: bold;">/</span>up <span style="color: #666666; font-style: italic;">#скрипт, выполняющийся при установке соединения</span>
        open
&nbsp;
vtk_unlim2:
        new <span style="color: #660033;">-i</span> ng1 pppoe_vtk2 pppoe_vtk2
        <span style="color: #000000; font-weight: bold;">set</span> iface route default
        <span style="color: #000000; font-weight: bold;">set</span> iface disable on-demand
        <span style="color: #000000; font-weight: bold;">set</span> iface idle <span style="color: #000000;">0</span>
        <span style="color: #000000; font-weight: bold;">set</span> ipcp <span style="color: #c20cb9; font-weight: bold;">yes</span> vjcomp
        <span style="color: #000000; font-weight: bold;">set</span> ipcp ranges 0.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">0</span> 0.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">0</span>
        <span style="color: #000000; font-weight: bold;">set</span> bundle disable multilink
        <span style="color: #000000; font-weight: bold;">set</span> auth authname mylogin2
        <span style="color: #000000; font-weight: bold;">set</span> auth password mYpAsSwOrD
        <span style="color: #000000; font-weight: bold;">set</span> <span style="color: #c20cb9; font-weight: bold;">link</span> no acfcomp protocomp
        <span style="color: #000000; font-weight: bold;">set</span> <span style="color: #c20cb9; font-weight: bold;">link</span> disable pap chap
        <span style="color: #000000; font-weight: bold;">set</span> <span style="color: #c20cb9; font-weight: bold;">link</span> accept chap
        <span style="color: #000000; font-weight: bold;">set</span> <span style="color: #c20cb9; font-weight: bold;">link</span> mtu <span style="color: #000000;">1400</span>
        <span style="color: #000000; font-weight: bold;">set</span> <span style="color: #c20cb9; font-weight: bold;">link</span> keep-alive <span style="color: #000000;">10</span> <span style="color: #000000;">60</span>
        <span style="color: #000000; font-weight: bold;">set</span> <span style="color: #c20cb9; font-weight: bold;">link</span> max redial <span style="color: #000000;">0</span>
        <span style="color: #000000; font-weight: bold;">set</span> bundle disable noretry
        <span style="color: #000000; font-weight: bold;">set</span> iface up-script <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>mpd4<span style="color: #000000; font-weight: bold;">/</span>up2
        open</pre></div></div>

<p>Содержимое скриптов запуска:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span>
<span style="color: #007800;">out_if</span>=<span style="color: #ff0000;">&quot;-interface ng0&quot;</span>
route delete default
route add default <span style="color: #007800;">$out_if</span></pre></div></div>

<p>Скрипт назначает наш pppoe канал маршрутом по умолчанию как для самого сервера, так и для клиентов</p>
<p>Скрипт up2:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span>
<span style="color: #007800;">out_if</span>=<span style="color: #ff0000;">&quot;-interface ng1&quot;</span>
setfib <span style="color: #000000;">1</span> route add <span style="color: #660033;">-net</span> default <span style="color: #007800;">$out_if</span>
<span style="color: #007800;">gw</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">ifconfig</span> ng1 <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #ff0000;">&quot;inet&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">cut</span> <span style="color: #660033;">-d</span> <span style="color: #ff0000;">&quot; &quot;</span> <span style="color: #660033;">-f</span> <span style="color: #000000;">4</span><span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #007800;">host</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">ifconfig</span> ng1 <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #ff0000;">&quot;inet&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">cut</span> <span style="color: #660033;">-d</span> <span style="color: #ff0000;">&quot; &quot;</span> <span style="color: #660033;">-f</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #007800;">fw</span>=<span style="color: #ff0000;">&quot;/sbin/ipfw -q&quot;</span>
<span style="color: #007800;">users2</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>rc.fire.new <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #ff0000;">&quot;users2=&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">cut</span> <span style="color: #660033;">-d</span> <span style="color: #ff0000;">&quot;=&quot;</span> <span style="color: #660033;">-f</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #007800;">num</span>=<span style="color: #000000; font-weight: bold;">`</span>ipfw show <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #ff0000;">&quot;fwd&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">cut</span> <span style="color: #660033;">-d</span> <span style="color: #ff0000;">&quot; &quot;</span> <span style="color: #660033;">-f</span> <span style="color: #000000;">1</span><span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>rc.d<span style="color: #000000; font-weight: bold;">/</span>natd.sh
<span style="color: #007800;">$fw</span> delete <span style="color: #007800;">$num</span>
<span style="color: #007800;">$fw</span> add <span style="color: #007800;">$num</span> fwd <span style="color: #007800;">$gw</span> ip from <span style="color: #007800;">$host</span> to any</pre></div></div>

<p>Суть этого скрипта в том, что он выдирает из вывода ifconfig текущие шлюз и ip (т.к. на втором соединении ип динамический) и добавляет эти значения в правило ipfw, обеспечивающее прохождение трафика. Подробней про эти правила будет ниже.</p>
<p>Файл mpd.links:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">pppoe_vtk:
    <span style="color: #000000; font-weight: bold;">set</span> <span style="color: #c20cb9; font-weight: bold;">link</span> <span style="color: #7a0874; font-weight: bold;">type</span> pppoe <span style="color: #666666; font-style: italic;"># Тип соединения PPPoE</span>
    <span style="color: #000000; font-weight: bold;">set</span> pppoe iface em1 <span style="color: #666666; font-style: italic;">#Интерфейс, на котором создается pppoe соединение</span>
    <span style="color: #000000; font-weight: bold;">set</span> pppoe service <span style="color: #ff0000;">&quot;&quot;</span>
    <span style="color: #000000; font-weight: bold;">set</span> pppoe disable incoming <span style="color: #666666; font-style: italic;">#запрещаем входящие соединения</span>
    <span style="color: #000000; font-weight: bold;">set</span> pppoe <span style="color: #7a0874; font-weight: bold;">enable</span> originate
&nbsp;
pppoe_vtk2:
    <span style="color: #000000; font-weight: bold;">set</span> <span style="color: #c20cb9; font-weight: bold;">link</span> <span style="color: #7a0874; font-weight: bold;">type</span> pppoe
    <span style="color: #000000; font-weight: bold;">set</span> pppoe iface fxp0
    <span style="color: #000000; font-weight: bold;">set</span> pppoe service <span style="color: #ff0000;">&quot;&quot;</span>
    <span style="color: #000000; font-weight: bold;">set</span> pppoe disable incoming
    <span style="color: #000000; font-weight: bold;">set</span> pppoe <span style="color: #7a0874; font-weight: bold;">enable</span> originate</pre></div></div>

<p>mpd настроен. При запуске он должен автоматически поднять соединения и мы увидим нечто вроде этого:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">ng0: <span style="color: #007800;">flags</span>=88d1<span style="color: #000000; font-weight: bold;">&lt;</span>UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST<span style="color: #000000; font-weight: bold;">&gt;</span> metric <span style="color: #000000;">0</span> mtu <span style="color: #000000;">1400</span>
        inet 85.15.66.66 --<span style="color: #000000; font-weight: bold;">&gt;</span> 85.15.64.119 netmask 0xffffffff
ng1: <span style="color: #007800;">flags</span>=88d1<span style="color: #000000; font-weight: bold;">&lt;</span>UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST<span style="color: #000000; font-weight: bold;">&gt;</span> metric <span style="color: #000000;">0</span> mtu <span style="color: #000000;">1400</span>
        inet 85.15.81.133 --<span style="color: #000000; font-weight: bold;">&gt;</span> 85.15.80.1 netmask 0xffffffff</pre></div></div>

<p>Не забудьте прописать в /etc/syslog.conf:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">!</span>mpd
<span style="color: #000000; font-weight: bold;">*</span>.<span style="color: #000000; font-weight: bold;">*</span>                                             <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>mpd.log</pre></div></div>

<p>Теперь займемся настройкой нат. Я использовал natd. Про свежевыпущенный ipfw <a href="http://snake.khd.ru/tag/nat/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  nat">nat</a> скажу ниже</p>
<p>Прописываем в /etc/rc.conf следующее:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">snake<span style="color: #000000; font-weight: bold;">@</span>snake <span style="color: #7a0874; font-weight: bold;">&#91;</span>mpd4<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #666666; font-style: italic;">#cat /etc/rc.conf | grep natd</span>
<span style="color: #007800;">natd_enable</span>=<span style="color: #ff0000;">&quot;YES&quot;</span></pre></div></div>

<p>далее создаем файлы конфигурации (в моем случае /etc/natd2.conf, /etc/natd3.conf):</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">snake<span style="color: #000000; font-weight: bold;">@</span>snake <span style="color: #7a0874; font-weight: bold;">&#91;</span>mpd4<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #666666; font-style: italic;">#cat /etc/natd2.conf</span>
<span style="color: #666666; font-style: italic;"># порт, на котором висит natd</span>
port <span style="color: #000000;">8448</span>
<span style="color: #666666; font-style: italic;"># интерфейс</span>
interface ng0
<span style="color: #666666; font-style: italic;"># стараться не изменять порты</span>
same_ports <span style="color: #c20cb9; font-weight: bold;">yes</span>
<span style="color: #666666; font-style: italic;"># перенаправлять только трафик с адресом источника 10.0.0.0/8, 172.16.0.0/12 и 192.168.0.0/16.</span>
unregistered_only <span style="color: #c20cb9; font-weight: bold;">yes</span>
dynamic <span style="color: #c20cb9; font-weight: bold;">yes</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># проброс портов для отдельных машин наружу</span>
redirect_port tcp 10.12.51.24:<span style="color: #000000;">51024</span> <span style="color: #000000;">51024</span>
redirect_port udp 10.12.51.24:<span style="color: #000000;">51024</span> <span style="color: #000000;">51024</span>
redirect_port tcp 10.12.51.24:<span style="color: #000000;">51025</span> <span style="color: #000000;">51025</span>
redirect_port udp 10.12.51.24:<span style="color: #000000;">51025</span> <span style="color: #000000;">51025</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">snake<span style="color: #000000; font-weight: bold;">@</span>snake <span style="color: #7a0874; font-weight: bold;">&#91;</span>mpd4<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #666666; font-style: italic;">#cat /etc/natd3.conf</span>
port <span style="color: #000000;">8558</span>
interface ng1
same_ports <span style="color: #c20cb9; font-weight: bold;">yes</span>
unregistered_only <span style="color: #c20cb9; font-weight: bold;">yes</span>
dynamic <span style="color: #c20cb9; font-weight: bold;">yes</span>
redirect_port tcp 10.12.51.118:<span style="color: #000000;">31027</span> <span style="color: #000000;">31027</span>
redirect_port udp 10.12.51.118:<span style="color: #000000;">31027</span> <span style="color: #000000;">31027</span></pre></div></div>

<p>создаем скрипт в /usr/local/etc/rc.d</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">snake<span style="color: #000000; font-weight: bold;">@</span>snake <span style="color: #7a0874; font-weight: bold;">&#91;</span>mpd4<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #666666; font-style: italic;">#cat /usr/local/etc/rc.d/natd.sh</span>
<span style="color: #666666; font-style: italic;">#!/bin/sh</span>
<span style="color: #000000; font-weight: bold;">/</span>sbin<span style="color: #000000; font-weight: bold;">/</span>natd <span style="color: #660033;">-f</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>natd2.conf
<span style="color: #000000; font-weight: bold;">/</span>sbin<span style="color: #000000; font-weight: bold;">/</span>natd <span style="color: #660033;">-f</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>natd3.conf</pre></div></div>

<p>Запускаем, смотрим: в sockstat должно быть что-то такое:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">snake<span style="color: #000000; font-weight: bold;">@</span>snake <span style="color: #7a0874; font-weight: bold;">&#91;</span>mpd4<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #666666; font-style: italic;">#sockstat -l4 | grep natd</span>
root     natd       <span style="color: #000000;">1033</span>  <span style="color: #000000;">4</span>  div4   <span style="color: #000000; font-weight: bold;">*</span>:<span style="color: #000000;">8558</span>                <span style="color: #000000; font-weight: bold;">*</span>:<span style="color: #000000; font-weight: bold;">*</span>
root     natd       <span style="color: #000000;">1031</span>  <span style="color: #000000;">4</span>  div4   <span style="color: #000000; font-weight: bold;">*</span>:<span style="color: #000000;">8448</span>                <span style="color: #000000; font-weight: bold;">*</span>:<span style="color: #000000; font-weight: bold;">*</span></pre></div></div>

<p>Теперь приступим к самой ответственной части &#8211; а именно настройке фаервола <img src='http://snake.khd.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Тут я приведу конфиг полностью, с пояснениями и комментариями<br />
Про ядерный nat ipfw можно почтитать <a href='http://www.lissyara.su/?id=1967' target='_blank'>тут</a></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#Создаем каналы-пайпы. Труба одна для каждой группы пользователей</span>
<span style="color: #007800;">$fw</span> pipe <span style="color: #000000;">100</span> config bw <span style="color: #007800;">$downi</span> queue <span style="color: #000000;">50</span>
<span style="color: #007800;">$fw</span> pipe <span style="color: #000000;">200</span> config bw <span style="color: #007800;">$upi</span>   queue <span style="color: #000000;">50</span>
<span style="color: #007800;">$fw</span> pipe <span style="color: #000000;">300</span> config bw <span style="color: #007800;">$downi</span> queue <span style="color: #000000;">50</span>
<span style="color: #007800;">$fw</span> pipe <span style="color: #000000;">400</span> config bw <span style="color: #007800;">$up2</span> queue <span style="color: #000000;">50</span>
<span style="color: #007800;">$fw</span> pipe <span style="color: #000000;">500</span> config bw <span style="color: #007800;">$downvtk</span> queue <span style="color: #000000;">50</span>
<span style="color: #007800;">$fw</span> pipe <span style="color: #000000;">600</span> config bw <span style="color: #007800;">$upvtk</span> queue <span style="color: #000000;">50</span>
<span style="color: #666666; font-style: italic;">#-----------------------------------</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#Очереди трафика (подробнее смотрим man ipfw) </span>
<span style="color: #666666; font-style: italic;">#именно они обеспечивают справедливое распределение канала между пользователями</span>
<span style="color: #666666; font-style: italic;">#inet --&gt; LAN</span>
<span style="color: #007800;">$fw</span> queue <span style="color: #000000;">101</span> config weight <span style="color: #007800;">$tcp2w</span> queue <span style="color: #000000;">50</span> pipe <span style="color: #000000;">100</span> gred <span style="color: #000000;">0.002</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">10</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">35</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">0.1</span> mask dst-ip 0xffffffff
<span style="color: #007800;">$fw</span> queue <span style="color: #000000;">102</span> config weight <span style="color: #007800;">$tcp1w</span> queue <span style="color: #000000;">50</span> pipe <span style="color: #000000;">100</span> gred <span style="color: #000000;">0.002</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">10</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">35</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">0.1</span> mask dst-ip 0xffffffff
&nbsp;
<span style="color: #666666; font-style: italic;">#LAN --&gt; inet</span>
<span style="color: #007800;">$fw</span> queue <span style="color: #000000;">201</span> config weight <span style="color: #007800;">$tcp2w</span> queue <span style="color: #000000;">50</span> pipe <span style="color: #000000;">200</span> gred <span style="color: #000000;">0.002</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">10</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">35</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">0.1</span> mask src-ip 0xffffffff
<span style="color: #007800;">$fw</span> queue <span style="color: #000000;">202</span> config weight <span style="color: #007800;">$tcp1w</span> queue <span style="color: #000000;">50</span> pipe <span style="color: #000000;">200</span> gred <span style="color: #000000;">0.002</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">10</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">35</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">0.1</span> mask src-ip 0xffffffff
&nbsp;
<span style="color: #666666; font-style: italic;">#inet --&gt; LAN</span>
<span style="color: #007800;">$fw</span> queue <span style="color: #000000;">301</span> config weight <span style="color: #007800;">$tcp1w</span> queue <span style="color: #000000;">50</span> pipe <span style="color: #000000;">300</span> gred <span style="color: #000000;">0.002</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">10</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">35</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">0.1</span> mask dst-ip 0xffffffff
&nbsp;
<span style="color: #666666; font-style: italic;">#LAN --&gt; inet</span>
<span style="color: #007800;">$fw</span> queue <span style="color: #000000;">401</span> config weight <span style="color: #007800;">$tcp1w</span> queue <span style="color: #000000;">50</span> pipe <span style="color: #000000;">400</span> gred <span style="color: #000000;">0.002</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">10</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">35</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">0.1</span> mask src-ip 0xffffffff
&nbsp;
<span style="color: #666666; font-style: italic;">#VTK --&gt; LAN</span>
<span style="color: #007800;">$fw</span> queue <span style="color: #000000;">501</span> config weight <span style="color: #007800;">$tcp2w</span> queue <span style="color: #000000;">50</span> pipe <span style="color: #000000;">500</span> gred <span style="color: #000000;">0.002</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">10</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">35</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">0.1</span> mask dst-ip 0xffffffff
&nbsp;
<span style="color: #666666; font-style: italic;">#LAN --&gt; VTK</span>
<span style="color: #007800;">$fw</span> queue <span style="color: #000000;">601</span> config weight <span style="color: #007800;">$tcp2w</span> queue <span style="color: #000000;">50</span> pipe <span style="color: #000000;">600</span> gred <span style="color: #000000;">0.002</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">10</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">35</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">0.1</span> mask src-ip 0xffffffff
<span style="color: #666666; font-style: italic;">#-----------------------------------</span>
<span style="color: #666666; font-style: italic;">#Настройки ядерного NAT. У меня нормально так и не заработал, но может у вас получится ;) </span>
<span style="color: #007800;">$fw</span> nat <span style="color: #000000;">300</span> config log <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #007800;">$wan</span> same_ports deny_in
<span style="color: #666666; font-style: italic;">#-----------------------------------</span>
<span style="color: #666666; font-style: italic;">#Selfcare &amp; service</span>
<span style="color: #666666; font-style: italic;">##loopback</span>
<span style="color: #666666; font-style: italic;"># разрешаем ходить локалхост трафику, но только в пределах интерфейса loopback</span>
<span style="color: #007800;">$fwa</span> 01000 allow ip from any to any via lo0
<span style="color: #007800;">$fwa</span> 01010 deny ip from any to 127.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">8</span>
<span style="color: #007800;">$fwa</span> 01020 deny ip from 127.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">8</span> to any
<span style="color: #666666; font-style: italic;">#-----------------------------------</span>
<span style="color: #666666; font-style: italic;">##Deny networks</span>
<span style="color: #666666; font-style: italic;"># Запрещаем частные подсети на внешних интерфейсах</span>
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">1200</span> deny log ip from 10.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">8</span> to me <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$inet</span>
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">1210</span> deny log ip from any to 10.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">8</span> out via <span style="color: #007800;">$inet</span>
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">1220</span> deny log ip from 172.16.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">12</span> to any <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$inet</span>
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">1230</span> deny log ip from any to 172.16.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">12</span> out via <span style="color: #007800;">$inet</span>
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">1240</span> deny log ip from 192.168.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">16</span> to any <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$inet</span>
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">1250</span> deny log ip from any to 192.168.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">16</span> out via <span style="color: #007800;">$inet</span>
&nbsp;
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">1205</span> deny log ip from 10.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">8</span> to any <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$inet2</span>
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">1215</span> deny log ip from any to 10.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">8</span> out via <span style="color: #007800;">$inet2</span>
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">1225</span> deny log ip from 172.16.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">12</span> to any <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$inet2</span>
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">1235</span> deny log ip from any to 172.16.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">12</span> out via <span style="color: #007800;">$inet2</span>
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">1245</span> deny log ip from 192.168.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">16</span> to any <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$inet2</span>
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">1255</span> deny log ip from any to 192.168.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">16</span> out via <span style="color: #007800;">$inet2</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#-----------------------------------</span>
<span style="color: #666666; font-style: italic;">#Allowing connetctions</span>
<span style="color: #666666; font-style: italic;">#-----------------------------------</span>
<span style="color: #666666; font-style: italic;">##Intranet connections</span>
<span style="color: #666666; font-style: italic;"># Разрешаем соединение с сервером из локалки</span>
<span style="color: #007800;">$fwa</span> 02100 allow ip from <span style="color: #007800;">$hostel</span> to <span style="color: #007800;">$iplan</span> <span style="color: #007800;">$usr_ports</span> <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$lan</span>
<span style="color: #007800;">$fwa</span> 02110 allow ip from me to <span style="color: #007800;">$hostel</span> out via <span style="color: #007800;">$lan</span>
<span style="color: #007800;">$fwa</span> 02115 allow ip from me to <span style="color: #007800;">$hostel</span> out via <span style="color: #007800;">$vlan</span>
<span style="color: #666666; font-style: italic;">#-----------------------------------</span>
<span style="color: #666666; font-style: italic;">##DNS (разрешаем связь с DNS серверами прова </span>
<span style="color: #666666; font-style: italic;">#и доступ к DNS-серверу на машине из локальной сети</span>
<span style="color: #007800;">$fwa</span> 02310 allow udp from me to <span style="color: #007800;">$vtk_dns</span> out
<span style="color: #007800;">$fwa</span> 02320 allow udp from <span style="color: #007800;">$vtk_dns</span> to me <span style="color: #000000; font-weight: bold;">in</span>
<span style="color: #007800;">$fwa</span> 02330 allow udp from <span style="color: #007800;">$hostel</span> to <span style="color: #007800;">$iplan</span> <span style="color: #000000;">53</span> <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$lan</span>
<span style="color: #007800;">$fwa</span> 02340 allow udp from <span style="color: #007800;">$iplan</span> <span style="color: #000000;">53</span> to <span style="color: #007800;">$hostel</span> out via <span style="color: #007800;">$lan</span>
<span style="color: #007800;">$fwa</span> 02350 deny udp from <span style="color: #007800;">$hostel</span> to <span style="color: #007800;">$vtk_dns</span> <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$lan</span>
<span style="color: #007800;">$fwa</span> 02360 deny udp from <span style="color: #007800;">$hostel</span> to <span style="color: #007800;">$vtk_dns</span> <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$vlan</span>
<span style="color: #007800;">$fwa</span> 02370 deny udp from <span style="color: #007800;">$vtk_dns</span> to <span style="color: #007800;">$hostel</span> out via <span style="color: #007800;">$lan</span>
<span style="color: #007800;">$fwa</span> 02380 deny udp from <span style="color: #007800;">$vtk_dns</span> to <span style="color: #007800;">$hostel</span> out via <span style="color: #007800;">$vlan</span>
<span style="color: #666666; font-style: italic;">#-----------------------------------</span>
<span style="color: #666666; font-style: italic;"># Ради чего все затевалось - разрешаем пользователям из локалки доступ вовне</span>
<span style="color: #007800;">$fwa</span> 03141 allow ip from <span style="color: #ff0000;">&quot;table(1)&quot;</span>  to not me <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$lan</span>
<span style="color: #007800;">$fwa</span> 03142 allow ip from <span style="color: #ff0000;">&quot;table(1)&quot;</span> to not me <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$vlan</span>
<span style="color: #007800;">$fwa</span> 03143 allow ip from not me to <span style="color: #ff0000;">&quot;table(1)&quot;</span> out via <span style="color: #007800;">$lan</span>
<span style="color: #007800;">$fwa</span> 03144 allow ip from not me to <span style="color: #ff0000;">&quot;table(1)&quot;</span> out via <span style="color: #007800;">$vlan</span>
<span style="color: #666666; font-style: italic;">#-----------------------------------</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#NAT &amp; queues</span>
<span style="color: #666666; font-style: italic;">##Outcoming queues (исходящие очереди)</span>
<span style="color: #666666; font-style: italic;">#Настройка очередей. Трафик сервера идет отдельной очередью</span>
<span style="color: #007800;">$fwa</span> 05010 queue <span style="color: #000000;">201</span> ip from me to any out via <span style="color: #007800;">$inet</span>
<span style="color: #007800;">$fwa</span> 05020 queue <span style="color: #000000;">202</span> ip from <span style="color: #007800;">$users</span> to any out via <span style="color: #007800;">$inet</span>
<span style="color: #007800;">$fwa</span> 05030 queue <span style="color: #000000;">401</span> ip from <span style="color: #007800;">$users2</span> to any out via <span style="color: #007800;">$inet2</span>
<span style="color: #007800;">$fwa</span> 05040 queue <span style="color: #000000;">601</span> ip from any to <span style="color: #007800;">$vtk</span> out via <span style="color: #007800;">$wan</span>
<span style="color: #666666; font-style: italic;">#-----------------------------------</span>
<span style="color: #666666; font-style: italic;">##NAT</span>
<span style="color: #666666; font-style: italic;">#Заворачиваем трафик от разных групп на разные natd</span>
<span style="color: #007800;">$fwa</span> 07200 divert <span style="color: #000000;">8448</span> ip from <span style="color: #007800;">$users</span> to any out via <span style="color: #007800;">$inet</span>
<span style="color: #007800;">$fwa</span> 07250 divert <span style="color: #000000;">8448</span> ip from any to me <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$inet</span>
<span style="color: #007800;">$fwa</span> 07100 divert <span style="color: #000000;">8558</span> ip from <span style="color: #007800;">$users2</span> to any out via <span style="color: #007800;">$inet2</span>
<span style="color: #666666; font-style: italic;">#Говорим фаерволу, что трафик второй группы </span>
<span style="color: #666666; font-style: italic;">#нужно пускать через другой шлюз. </span>
<span style="color: #666666; font-style: italic;">#Именно это правило мы меняем, когда mpd делает реконнект</span>
<span style="color: #666666; font-style: italic;">#Переменные $gw и $host определяются при каждом перезапуске</span>
<span style="color: #666666; font-style: italic;">#скрипта с правилами</span>
<span style="color: #007800;">$fwa</span> 07130 fwd <span style="color: #007800;">$gw</span> ip from <span style="color: #007800;">$host</span> to any
<span style="color: #007800;">$fwa</span> 07150 divert <span style="color: #000000;">8558</span> ip from any to me <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$inet2</span>
<span style="color: #666666; font-style: italic;"># тот самый ядерный nat. оставил для примера :)</span>
<span style="color: #007800;">$fwa</span> 07400 nat <span style="color: #000000;">300</span> ip from any to any via <span style="color: #007800;">$wan</span>
<span style="color: #666666; font-style: italic;">#----------------------------------</span>
<span style="color: #666666; font-style: italic;">##Incoming queues (входящие очереди)</span>
<span style="color: #007800;">$fwa</span> 08010 queue <span style="color: #000000;">101</span> ip from any to me <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$inet</span>
<span style="color: #007800;">$fwa</span> 08020 queue <span style="color: #000000;">102</span> ip from any to <span style="color: #007800;">$users</span> <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$inet</span>
<span style="color: #007800;">$fwa</span> 08030 queue <span style="color: #000000;">301</span> ip from any to <span style="color: #007800;">$users2</span> <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$inet2</span>
<span style="color: #007800;">$fwa</span> 08040 queue <span style="color: #000000;">501</span> ip from <span style="color: #007800;">$vtk</span> to any <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$wan</span>
<span style="color: #666666; font-style: italic;">#-----------------------------------</span>
<span style="color: #666666; font-style: italic;">#Allowing connections</span>
<span style="color: #666666; font-style: italic;">##Outcoming allowers (разрешающие правила для соединений)</span>
<span style="color: #007800;">$fwa</span> 09000 allow ip from <span style="color: #007800;">$users</span> to <span style="color: #007800;">$vtk</span> out via <span style="color: #007800;">$wan</span>
<span style="color: #007800;">$fwa</span> 09010 allow ip from me to <span style="color: #007800;">$vtk</span> out via <span style="color: #007800;">$wan</span>
<span style="color: #007800;">$fwa</span> 09023 allow ip from me <span style="color: #000000;">12553</span> to any out via <span style="color: #007800;">$inet</span>
<span style="color: #007800;">$fwa</span> 09034 allow ip from me <span style="color: #000000;">12554</span> to any out via <span style="color: #007800;">$inet</span>
<span style="color: #007800;">$fwa</span> 09040 allow ip from <span style="color: #007800;">$users</span> to any out via <span style="color: #007800;">$inet</span>
<span style="color: #007800;">$fwa</span> 09050 allow ip from <span style="color: #007800;">$users2</span> to any out via <span style="color: #007800;">$inet2</span>
<span style="color: #007800;">$fwa</span> 09060 allow ip from me to any out via <span style="color: #007800;">$inet</span>
<span style="color: #007800;">$fwa</span> 09070 allow ip from me to any out via <span style="color: #007800;">$inet2</span>
<span style="color: #666666; font-style: italic;">#----------------------------------</span>
<span style="color: #666666; font-style: italic;">##Incoming allowers</span>
<span style="color: #007800;">$fwa</span> 09100 allow ip from <span style="color: #007800;">$vtk</span> to <span style="color: #007800;">$users</span> <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$wan</span>
<span style="color: #007800;">$fwa</span> 09110 allow ip from <span style="color: #007800;">$vtk</span> to me <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$wan</span>
<span style="color: #007800;">$fwa</span> 09120 allow ip from any to <span style="color: #007800;">$users</span> <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$inet</span>
<span style="color: #007800;">$fwa</span> 09130 allow ip from any to <span style="color: #007800;">$users2</span> <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$inet2</span>
<span style="color: #007800;">$fwa</span> 09143 allow ip from any to me <span style="color: #000000;">12553</span> <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$inet</span>
<span style="color: #007800;">$fwa</span> 09154 allow ip from any to me <span style="color: #000000;">12554</span> <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$inet</span>
<span style="color: #007800;">$fwa</span> 09160 allow ip from any to me <span style="color: #000000; font-weight: bold;">in</span> via <span style="color: #007800;">$inet</span>
<span style="color: #666666; font-style: italic;">#$fwa 09700 allow ip from any to me in via $inet2</span>
<span style="color: #666666; font-style: italic;">#----------------------------------</span>
<span style="color: #666666; font-style: italic;">##ICMP</span>
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">50200</span> allow icmp from me to any
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">50250</span> allow icmp from any to me
<span style="color: #666666; font-style: italic;">##Allow all outcoming</span>
<span style="color: #007800;">$fwa</span> <span style="color: #000000;">60000</span> allow ip from me to any</pre></div></div>

<p>На этом в общем-то все <img src='http://snake.khd.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  выставляем на клиентских машинах шлюзом по умолчанию наш сервер и радуемся &#8211; инет должен работать</p>
]]></content:encoded>
			<wfw:commentRss>http://snake.khd.ru/2009/10/kazhdomu-po-potrebnostyam-shejping-trafika-pri-pomoshhi-ipfw/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Посчитаем все! Stargazer как биллинг для небольшой локалки</title>
		<link>http://snake.khd.ru/2009/10/poschitaem-vse-stargazer-kak-billing-dlya-nebolshoj-lokalki/</link>
		<comments>http://snake.khd.ru/2009/10/poschitaem-vse-stargazer-kak-billing-dlya-nebolshoj-lokalki/#comments</comments>
		<pubDate>Sun, 04 Oct 2009 10:09:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[billng]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[soft]]></category>
		<category><![CDATA[stargazer]]></category>

		<guid isPermaLink="false">http://snake.khd.ru/?p=93</guid>
		<description><![CDATA[Имеется: сервер на freebsd 7.2, две безлимитных линии, две группы пользователей Задача &#8211; контролировать платежи пользователей за интернет. Для начала нам понадобится биллинг &#8211; программа, которая будет считать трафик пользователя, осуществлять авторизацию и считать абонку. В моем случае это Stargazer Для установки нам потребуются оболочка bash и библиотека expat. Распаковываем архив, идем в projects/stargazer. Выполняем: <a href='http://snake.khd.ru/2009/10/poschitaem-vse-stargazer-kak-billing-dlya-nebolshoj-lokalki/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Имеется: сервер на <a href="http://snake.khd.ru/tag/freebsd/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  FreeBSD">freebsd</a> 7.2, две безлимитных линии, две группы пользователей<br />
Задача &#8211; контролировать платежи пользователей за интернет.<br />
<span id="more-93"></span><br />
Для начала нам понадобится биллинг &#8211; программа, которая будет считать трафик пользователя, осуществлять авторизацию и считать абонку. В моем случае это <a href="http://www.stargazer.dp.ua/download.php" target="_blank">Stargazer</a></p>
<p>Для установки нам потребуются оболочка bash и библиотека expat.<br />
Распаковываем архив, идем в projects/<a href="http://snake.khd.ru/tag/stargazer/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  stargazer">stargazer</a>.<br />
Выполняем:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#./build</span>
<span style="color: #666666; font-style: italic;">#gmake install</span></pre></div></div>

<p>Если все прошло успешно, то в /etc/stargazer появятся  файлы rules, stargazer.conf и скрипты пользователей</p>
<p>Начнем по порядку:<br />
<strong>rules</strong> содержит список подсетей и направлений. По каждому направлению может быть свой тариф и свои правила подсчета.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">ALL     192.168.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">16</span>  DIR1 <span style="color: #666666; font-style: italic;">#направление 1 - локалка</span>
ALL     10.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">8</span>      DIR2 <span style="color: #666666; font-style: italic;"># направление 2 - городская сеть</span>
ALL     0.0.0.0<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">0</span>       DIR0 <span style="color: #666666; font-style: italic;"># направление 3 - инет</span></pre></div></div>

<p><strong>stargazer.conf</strong> &#8211; основной конфигурационный файл</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">################################################################################</span>
<span style="color: #666666; font-style: italic;">#                        Файл настроек сервера stargazer                       #</span>
<span style="color: #666666; font-style: italic;">################################################################################</span>
<span style="color: #666666; font-style: italic;"># Имя лог-файла куда пишутся события</span>
LogFile = <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>stargazer.log
&nbsp;
<span style="color: #666666; font-style: italic;"># Имя PID-файла куда пишется идентификатор процесса</span>
<span style="color: #666666; font-style: italic;"># По умолчанию /var/run/pid</span>
<span style="color: #666666; font-style: italic;"># PIDFile = /var/run/stargazer.pid</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Имя файла в котором определяются правила подсчета трафика</span>
Rules = <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>stargazer<span style="color: #000000; font-weight: bold;">/</span>rules
&nbsp;
<span style="color: #666666; font-style: italic;"># Время через которое пишется d БД детальная статистика пользователя</span>
<span style="color: #666666; font-style: italic;"># Значения: 1, 1/2, 1/4, 1/6.</span>
<span style="color: #666666; font-style: italic;"># 1 - раз в чаc, 1/2 - раз в пол часа, 1/4 - раз в 15 мин, 1/6 - раз в 10 мин</span>
<span style="color: #007800;">DetailStatWritePeriod</span>=<span style="color: #000000;">1</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">6</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Периодичность записи записи в БД информации о статистике пользователя (минуты)</span>
<span style="color: #666666; font-style: italic;"># При большом кол-ве пользователей эту величину стоит увеличить, т.к.</span>
<span style="color: #666666; font-style: italic;"># запись в БД может занимать длительное время.</span>
<span style="color: #666666; font-style: italic;"># Значения: 1...1440 (минуты)</span>
StatWritePeriod = <span style="color: #000000;">10</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># День снятия абонплаты</span>
<span style="color: #666666; font-style: italic;"># Значения: 0...31. 0 - Последний день месяца</span>
DayFee = <span style="color: #000000;">1</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Абонплата снимается в последний (yes) или первый (no) день учетного периода.</span>
<span style="color: #666666; font-style: italic;"># Это влияет на то, как будет снята абонплата (АП) при переходе на новый тариф.</span>
<span style="color: #666666; font-style: italic;"># Если у пользователя был тариф A с АП=100 и он хочет перейти на тариф B с АП=200,</span>
<span style="color: #666666; font-style: italic;"># то при переходе на новый тариф со счета пользователя снимется 100, если</span>
<span style="color: #666666; font-style: italic;"># DayFeeIsLastDay = yes и 200, если DayFeeIsLastDay = no</span>
DayFeeIsLastDay = <span style="color: #c20cb9; font-weight: bold;">yes</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># День сброса данных о трафике за месяц и день перехода пользователей на новые тарифы</span>
<span style="color: #666666; font-style: italic;"># Значения: 0...31. 0 - Последний день месяца</span>
DayResetTraff = <span style="color: #000000;">1</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># &quot;Размазанное&quot; снятие абонплаты. Снятие АП не раз в месяц, а каждый</span>
<span style="color: #666666; font-style: italic;"># день 1/30 или 1/31 части АП</span>
<span style="color: #666666; font-style: italic;"># Значения: yes, no</span>
SpreadFee = no
&nbsp;
<span style="color: #666666; font-style: italic;"># Данная опция определяет может ли пользователь получить доступ в интерент</span>
<span style="color: #666666; font-style: italic;"># если у него на счету нет денег, но остался предоплаченный трафик</span>
<span style="color: #666666; font-style: italic;"># Значения: yes, no</span>
FreeMbAllowInet = no
&nbsp;
<span style="color: #666666; font-style: italic;"># Эта опция определяет что будет писаться в стоимость трафика в detail_stat.</span>
<span style="color: #666666; font-style: italic;"># Если у пользователя еще есть предоплаченный трафик и WriteFreeMbTraffCost = no,</span>
<span style="color: #666666; font-style: italic;"># то в detail_stat стоимость будет 0. Если у пользователя уже нет</span>
<span style="color: #666666; font-style: italic;"># предоплаченного трафика и WriteFreeMbTraffCost = no, то в detail_stat</span>
<span style="color: #666666; font-style: italic;"># будет записана стоиость трафика. При WriteFreeMbTraffCost = yes стоимость</span>
<span style="color: #666666; font-style: italic;"># трафика будет записана в любом случае.</span>
WriteFreeMbTraffCost = no
&nbsp;
<span style="color: #666666; font-style: italic;"># Названия направлений. Направления без названий не будут отображаться в</span>
<span style="color: #666666; font-style: italic;"># авторизаторе и конфигураторе. Названия состоящие из нескольких слов должны</span>
<span style="color: #666666; font-style: italic;"># быть взяты в кавычки</span>
<span style="color: #666666; font-style: italic;"># Я использовал только одно направление - Интернет. (&lt;em&gt;прим. Snake&lt;/em&gt;)</span>
<span style="color: #000000; font-weight: bold;">&lt;</span>DirNames<span style="color: #000000; font-weight: bold;">&gt;</span>
    DirName0 = Internet
    <span style="color: #666666; font-style: italic;">#DirName1 = Город</span>
    <span style="color: #666666; font-style: italic;">#DirName2 = Локаль</span>
<span style="color: #000000; font-weight: bold;">&lt;/</span>DirNames<span style="color: #000000; font-weight: bold;">&gt;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Кол-во запускаемых процессов stg-exec.</span>
<span style="color: #666666; font-style: italic;"># Эти процессы отвечают за выполнение скриптов OnConnect, OnDisconnect, ...</span>
<span style="color: #666666; font-style: italic;"># Кол-во процессов означает сколько скриптов могут выполнятся одновременно.</span>
<span style="color: #666666; font-style: italic;"># Значения: 1...1024</span>
ExecutersNum = <span style="color: #000000;">1</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Message Key для stg-exec.</span>
<span style="color: #666666; font-style: italic;"># Идентификатор очереди сообщений для выполнятеля скриптов.</span>
<span style="color: #666666; font-style: italic;"># Его изменение может понадобится если есть необходимость запустить несколько</span>
<span style="color: #666666; font-style: italic;"># экземпляров stg. Если вы не понимаете, что это, не трогайте этот параметр!</span>
<span style="color: #666666; font-style: italic;"># Значения: 0...2^32</span>
<span style="color: #666666; font-style: italic;"># Значение по умолчанию: 5555</span>
<span style="color: #666666; font-style: italic;"># ExecMsgKey = 5555</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Путь к директории, в которой находятся модули сервера</span>
ModulesPath = <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>stg
&nbsp;
<span style="color: #666666; font-style: italic;"># Определяет директорию, в которой будут находится файлы &quot;монитора&quot;</span>
<span style="color: #666666; font-style: italic;"># работы сервера. В этой директории будут созданы пустые файлы, время </span>
<span style="color: #666666; font-style: italic;"># модификации которых будет меняться примерно раз в минуту. Если какой-то </span>
<span style="color: #666666; font-style: italic;"># компонент сервера зависнет, файл(ы) перестанет обновлятся, и по этому </span>
<span style="color: #666666; font-style: italic;"># признаку можно определить сбой в работе сервера и при надобности </span>
<span style="color: #666666; font-style: italic;"># перезапустить. Если параметр не указан или пустой, мониторинг производится </span>
<span style="color: #666666; font-style: italic;"># не будет. Параметр не является обязательным, по умолчанию пустой.</span>
<span style="color: #666666; font-style: italic;"># MonitorDir=/var/stargazer/monitor</span>
&nbsp;
<span style="color: #666666; font-style: italic;">################################################################################</span>
<span style="color: #666666; font-style: italic;"># Store module</span>
<span style="color: #666666; font-style: italic;"># Настройки плагина работающего с БД сервера</span>
<span style="color: #666666; font-style: italic;"># Выберите нужный модуль хранения статистики (БД или файлы). Должен быть активен только один модуль!</span>
<span style="color: #666666; font-style: italic;"># Второй параметр - это имя модуля без mod_ в начале и .so в конце</span>
<span style="color: #666666; font-style: italic;"># Т.е. полное имя модуля mod_store_files.so</span>
<span style="color: #000000; font-weight: bold;">&lt;</span>StoreModule store_files<span style="color: #000000; font-weight: bold;">&gt;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;"># Рабочая директория сервера, тут содержатся данные о тарифах, пользователях,</span>
    <span style="color: #666666; font-style: italic;"># администраторах и т.д.</span>
    WorkDir = <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>stargazer
&nbsp;
&nbsp;
    <span style="color: #666666; font-style: italic;"># Владелец, группа и права доступа на файлы статистики (stat) пользователя</span>
    ConfOwner = root
    ConfGroup = wheel
    ConfMode = <span style="color: #000000;">600</span>
&nbsp;
&nbsp;
    <span style="color: #666666; font-style: italic;"># Владелец, группа и права доступа на файлы конфигурации (conf) пользователя</span>
    StatOwner = root
    StatGroup = wheel
    StatMode = <span style="color: #000000;">640</span>
&nbsp;
    <span style="color: #666666; font-style: italic;"># Владелец, группа и права доступа на лог-файлы (log) пользователя</span>
    UserLogOwner = root
    UserLogGroup = wheel
    UserLogMode = <span style="color: #000000;">640</span>
&nbsp;
    <span style="color: #666666; font-style: italic;"># Удалять резервные копии после успешной записи conf/stat</span>
    <span style="color: #666666; font-style: italic;"># Значения: yes, no</span>
    <span style="color: #666666; font-style: italic;"># По умолчанию: yes</span>
    <span style="color: #666666; font-style: italic;"># RemoveBak = yes</span>
&nbsp;
    <span style="color: #666666; font-style: italic;"># Восстанавливать файлы conf/stat из резервных копий при ошибке чтения</span>
    <span style="color: #666666; font-style: italic;"># Значения: yes, no</span>
    <span style="color: #666666; font-style: italic;"># По умолчанию: no</span>
    <span style="color: #666666; font-style: italic;"># ReadBak = no</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">&lt;/</span>StoreModule<span style="color: #000000; font-weight: bold;">&gt;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#&lt;StoreModule store_firebird&gt;</span>
<span style="color: #666666; font-style: italic;">#    # Адрес сервера БД</span>
<span style="color: #666666; font-style: italic;">#    server=localhost</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;">#    # Путь к БД на сервере или ее алиас</span>
<span style="color: #666666; font-style: italic;">#    database=/var/stg/stargazer.fdb</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;">#    # Имя пользователя БД</span>
<span style="color: #666666; font-style: italic;">#    user=stg</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;">#    # Пароль пользователя БД</span>
<span style="color: #666666; font-style: italic;">#    password=123456</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;">#    # Уровень изоляции транзаций (не обязательно, по умолчанию oncurrency):</span>
<span style="color: #666666; font-style: italic;">#    #  concurrency</span>
<span style="color: #666666; font-style: italic;">#    #  dirtyRead</span>
<span style="color: #666666; font-style: italic;">#    #  readCommitted</span>
<span style="color: #666666; font-style: italic;">#    #  consistency</span>
<span style="color: #666666; font-style: italic;">#    isolationLevel=concurrency</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;">#    # Действия при блокировках (не обязательно, по умолчанию wait):</span>
<span style="color: #666666; font-style: italic;">#    #  wait</span>
<span style="color: #666666; font-style: italic;">#    #  noWait</span>
<span style="color: #666666; font-style: italic;">#    lockResolution=wait</span>
<span style="color: #666666; font-style: italic;">#&lt;/StoreModule&gt;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#&lt;StoreModule store_postgresql&gt;</span>
<span style="color: #666666; font-style: italic;">#    # Адрес сервера БД</span>
<span style="color: #666666; font-style: italic;">#    server=localhost</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;">#    # Имя БД</span>
<span style="color: #666666; font-style: italic;">#    database=stargazer</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;">#    # Имя пользователя БД</span>
<span style="color: #666666; font-style: italic;">#    user=stg</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;">#    # Пароль пользователя БД</span>
<span style="color: #666666; font-style: italic;">#    password=123456</span>
<span style="color: #666666; font-style: italic;">#&lt;/StoreModule&gt;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#&lt;StoreModule store_mysql&gt;</span>
<span style="color: #666666; font-style: italic;">#    # Имя пользователя БД</span>
<span style="color: #666666; font-style: italic;">#    dbuser = stg</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;">#    # Пароль пользователя БД</span>
<span style="color: #666666; font-style: italic;">#    rootdbpass = 123456</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;">#    # Имя БД на сервере</span>
<span style="color: #666666; font-style: italic;">#    dbname = stg</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;">#    # Адрес сервера БД</span>
<span style="color: #666666; font-style: italic;">#    dbhost = localhost</span>
<span style="color: #666666; font-style: italic;">#&lt;/StoreModule&gt;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">################################################################################</span>
<span style="color: #666666; font-style: italic;"># Прочие модули</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">&lt;</span>Modules<span style="color: #000000; font-weight: bold;">&gt;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;"># Настройки плагина авторизации Always Online &quot;mod_auth_ao.so&quot;</span>
    <span style="color: #666666; font-style: italic;"># Второй параметр - это имя модуля без mod_ в начале и .so в конце</span>
    <span style="color: #666666; font-style: italic;"># Т.е. полное имя модуля mod_auth_ao.so</span>
    <span style="color: #000000; font-weight: bold;">&lt;</span>Module auth_ao<span style="color: #000000; font-weight: bold;">&gt;</span>
    <span style="color: #000000; font-weight: bold;">&lt;/</span>Module<span style="color: #000000; font-weight: bold;">&gt;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;"># Настройки плагина авторизации InetAccess &quot;mod_auth_ia.so&quot;</span>
    <span style="color: #666666; font-style: italic;"># Второй параметр - это имя модуля без mod_ в начале и .so в конце</span>
    <span style="color: #666666; font-style: italic;"># Т.е. полное имя модуля mod_auth_ia.so</span>
    <span style="color: #000000; font-weight: bold;">&lt;</span>Module auth_ia<span style="color: #000000; font-weight: bold;">&gt;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;"># Порт на котором принимаются обращения от авторизатора</span>
        <span style="color: #666666; font-style: italic;"># Значения: 1...65534</span>
        Port = <span style="color: #000000;">5555</span>
&nbsp;
        <span style="color: #666666; font-style: italic;"># Время между посылками запроса пользователю жив ли он</span>
        <span style="color: #666666; font-style: italic;"># и обновлением данных статистики (секунды)</span>
        <span style="color: #666666; font-style: italic;"># Значения: 5...600</span>
        UserDelay = <span style="color: #000000;">15</span>
&nbsp;
        <span style="color: #666666; font-style: italic;">#Таймаут для пользователя. Если в течение этого времени авторизатор</span>
        <span style="color: #666666; font-style: italic;">#не отвечает, пользователь будет отключен</span>
        <span style="color: #666666; font-style: italic;"># Значения: 15...1200</span>
        UserTimeout = <span style="color: #000000;">65</span>
&nbsp;
        <span style="color: #666666; font-style: italic;"># Этот параметр определяет что будет передаваться программе InetAccess от сервера</span>
        <span style="color: #666666; font-style: italic;"># как отстаток предоплаченного трафика</span>
        <span style="color: #666666; font-style: italic;"># Значения:</span>
        <span style="color: #666666; font-style: italic;"># FreeMb = 0 - кол-во бесплатных мегабайт в пресчете на цену нулевого направления</span>
        <span style="color: #666666; font-style: italic;"># FreeMb = 1 - кол-во бесплатных мегабайт в пресчете на цену первого направления</span>
        <span style="color: #666666; font-style: italic;"># FreeMb = 2 - кол-во бесплатных мегабайт в пресчете на цену второго направления</span>
        <span style="color: #666666; font-style: italic;"># FreeMb = 3 - кол-во бесплатных мегабайт в пресчете на цену третьего направления</span>
        <span style="color: #666666; font-style: italic;"># ........................</span>
        <span style="color: #666666; font-style: italic;"># FreeMb = 9 - кол-во бесплатных мегабайт в пресчете на цену девятого направления</span>
        <span style="color: #666666; font-style: italic;"># FreeMb = cash - кол-во денег на которые юзер может бесплатно качать</span>
        <span style="color: #666666; font-style: italic;"># FreeMb = none - ничего не передавать</span>
        FreeMb = cash
    <span style="color: #000000; font-weight: bold;">&lt;/</span>Module<span style="color: #000000; font-weight: bold;">&gt;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;"># Модули можно использовать несколько раз с разными параметрами</span>
    <span style="color: #666666; font-style: italic;">#&lt;Module auth_ia&gt;</span>
    <span style="color: #666666; font-style: italic;">#    Port = 7777</span>
    <span style="color: #666666; font-style: italic;">#    UserDelay = 15</span>
    <span style="color: #666666; font-style: italic;">#    UserTimeout = 65</span>
    <span style="color: #666666; font-style: italic;">#    FreeMb = 0</span>
    <span style="color: #666666; font-style: italic;">#&lt;/Module&gt;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;"># Настройки модуля конфигурации SgConfig &quot;mod_conf_sg.so&quot;</span>
    <span style="color: #666666; font-style: italic;"># Второй параметр - это имя модуля без mod_ в начале и .so в конце</span>
    <span style="color: #000000; font-weight: bold;">&lt;</span>Module conf_sg<span style="color: #000000; font-weight: bold;">&gt;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;"># Порт по которому сервер взаимодействует с конфигуратором</span>
        <span style="color: #666666; font-style: italic;"># Значения: 1...65535</span>
        Port = <span style="color: #000000;">5555</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">&lt;/</span>Module<span style="color: #000000; font-weight: bold;">&gt;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;"># Модуль захвата трафика &quot;mod_cap_bpf.so&quot;</span>
    <span style="color: #666666; font-style: italic;"># Второй параметр - это имя модуля без mod_ в начале и .so в конце</span>
    <span style="color: #666666; font-style: italic;"># Без параметров. Только имя модуля.</span>
    <span style="color: #000000; font-weight: bold;">&lt;</span>Module cap_bpf<span style="color: #000000; font-weight: bold;">&gt;</span>
        <span style="color: #666666; font-style: italic;"># Интерфейс(ы) на котором нужно производить подсчет трафика</span>
        iface = rl0
        iface = rl1
        iface = dc0
    <span style="color: #000000; font-weight: bold;">&lt;/</span>Module<span style="color: #000000; font-weight: bold;">&gt;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;"># Модуль захвата трафика &quot;mod_cap_nf.so&quot;</span>
    <span style="color: #666666; font-style: italic;"># Принимает информацию о трафике по протоколу NetFlow</span>
    <span style="color: #666666; font-style: italic;"># Второй параметер - это имя модуля без mod_ в начале и .so в конце</span>
    <span style="color: #000000; font-weight: bold;">&lt;</span>Module cap_nf<span style="color: #000000; font-weight: bold;">&gt;</span>
        <span style="color: #666666; font-style: italic;"># TCPPort - порт для TCP-соединений</span>
        TCPPort = <span style="color: #000000;">42111</span>
&nbsp;
        <span style="color: #666666; font-style: italic;"># UDPPort - порт для UDP-соединений</span>
        UDPPort = <span style="color: #000000;">42111</span>
&nbsp;
        <span style="color: #666666; font-style: italic;"># Могут иметь совпадающие значения.</span>
        <span style="color: #666666; font-style: italic;"># Если параметр не указан - соответствующий порт не &quot;прослушивается&quot;.</span>
    <span style="color: #000000; font-weight: bold;">&lt;/</span>Module<span style="color: #000000; font-weight: bold;">&gt;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;"># Настройки модуля пингующего пользователей &quot;mod_ping.so&quot;</span>
    <span style="color: #666666; font-style: italic;"># Второй параметр - это имя модуля без mod_ в начале и .so в конце</span>
    <span style="color: #000000; font-weight: bold;">&lt;</span>Module <span style="color: #c20cb9; font-weight: bold;">ping</span><span style="color: #000000; font-weight: bold;">&gt;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;"># Время, в секундах, между пингами одного и того же пользователя</span>
        <span style="color: #666666; font-style: italic;"># Значения: 10...3600</span>
        PingDelay = <span style="color: #000000;">15</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">&lt;/</span>Module<span style="color: #000000; font-weight: bold;">&gt;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#    # Настройки модуля для удаленного выполнения скриптов OnCOnnect и</span>
<span style="color: #666666; font-style: italic;">#    # OnDisconnect &quot;mod_remote_script.so&quot;</span>
<span style="color: #666666; font-style: italic;">#    # Второй параметр - это имя модуля без mod_ в начале и .so в конце</span>
<span style="color: #666666; font-style: italic;">#    &lt;Module remote_script&gt;</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;">#        # Время, в секундах, между посылками подтверждений, того, что пользователь</span>
<span style="color: #666666; font-style: italic;">#        # всё еще онлайн</span>
<span style="color: #666666; font-style: italic;">#        # Значения: 10...600</span>
<span style="color: #666666; font-style: italic;">#        SendPeriod = 15</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;">#        # Соответствие подсетей, в которой находится пользователь и</span>
<span style="color: #666666; font-style: italic;">#        # соответствующего роутера. Первая часть строки - подслеть, заданная</span>
<span style="color: #666666; font-style: italic;">#        # как IP-адрес и маска, через пробел - IP-адрес роутера на котором</span>
<span style="color: #666666; font-style: italic;">#        # должны выполняться скрипты</span>
<span style="color: #666666; font-style: italic;">#        # Например эта запись &quot;192.168.1.0/24 192.168.1.1&quot; означает, что для</span>
<span style="color: #666666; font-style: italic;">#        # всех пользователей из подсети 192.168.1.0/24, скрипты будут</span>
<span style="color: #666666; font-style: italic;">#        # выполняться на роутере с адресом 192.168.1.1</span>
<span style="color: #666666; font-style: italic;">#        # Subnet0...Subnet100</span>
<span style="color: #666666; font-style: italic;">#        Subnet0 = 192.168.1.0/24 192.168.1.7</span>
<span style="color: #666666; font-style: italic;">#        Subnet1 = 192.168.2.0/24 192.168.2.5</span>
<span style="color: #666666; font-style: italic;">#        Subnet2 = 192.168.3.0/24 192.168.2.5</span>
<span style="color: #666666; font-style: italic;">#        Subnet3 = 192.168.4.0/24 192.168.2.5</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;">#        # Пароль для шифрования пакетов между stg-сервером и сервером,</span>
<span style="color: #666666; font-style: italic;">#        # выполняющим скрипты</span>
<span style="color: #666666; font-style: italic;">#        Password = 123456</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;">#        # Этот параметр определяет какие параметры пользователя передаются</span>
<span style="color: #666666; font-style: italic;">#        # на удаленный сервер</span>
<span style="color: #666666; font-style: italic;">#        # Cash, FreeMb, Passive, Disabled, AlwaysOnline, TariffName, NextTariff, Address,</span>
<span style="color: #666666; font-style: italic;">#        # Note, Group, Email, RealName, Credit, EnabledDirs, Userdata0...Userdata9</span>
<span style="color: #666666; font-style: italic;">#        UserParams=Cash Tariff EnabledDirs</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;">#        # Порт по которому сервер отсылает сообщения на роутер</span>
<span style="color: #666666; font-style: italic;">#        # Значения: 1...65535</span>
<span style="color: #666666; font-style: italic;">#        Port = 9999</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;">#    &lt;/Module&gt;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#    &lt;Module radius&gt;</span>
<span style="color: #666666; font-style: italic;">#        Password = 123456</span>
<span style="color: #666666; font-style: italic;">#        ServerIP = 127.0.0.1</span>
<span style="color: #666666; font-style: italic;">#        Port = 6666</span>
<span style="color: #666666; font-style: italic;">#        AuthServices = Login-User</span>
<span style="color: #666666; font-style: italic;">#        AcctServices = Framed-User</span>
<span style="color: #666666; font-style: italic;">#    &lt;/Module&gt;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">&lt;/</span>Modules<span style="color: #000000; font-weight: bold;">&gt;</span>
<span style="color: #666666; font-style: italic;">################################################################################</span></pre></div></div>

<p>Скрипты OnConnect, OnDisconnect и другие обрабатываются при наступлении соответствующего события. Например, при подключении пользователя ему должен открываться доступ к интернету. Соответственно, при отключении пользователя &#8220;окно&#8221; должно закрываться.<br />
Вот пример моих скриптов:<br />
<strong>OnConnect</strong>:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Login</span>
<span style="color: #007800;">LOGIN</span>=<span style="color: #007800;">$1</span>
<span style="color: #666666; font-style: italic;">#user IP</span>
<span style="color: #007800;">IP</span>=<span style="color: #007800;">$2</span>
<span style="color: #666666; font-style: italic;">#cash</span>
<span style="color: #007800;">CASH</span>=<span style="color: #007800;">$3</span>
<span style="color: #666666; font-style: italic;">#user ID</span>
<span style="color: #007800;">ID</span>=<span style="color: #007800;">$4</span>
<span style="color: #666666; font-style: italic;">#Selected dirs to connect</span>
<span style="color: #007800;">DIRS</span>=<span style="color: #007800;">$5</span>
<span style="color: #007800;">fw</span>=<span style="color: #ff0000;">&quot;/sbin/ipfw&quot;</span>
<span style="color: #800000;">${fw}</span> table <span style="color: #000000;">1</span> add <span style="color: #007800;">$IP</span></pre></div></div>

<p>При соединении IP пользователя добавляется в таблицу фаервола, и ему открывается доступ в инет. </p>
<p><strong>OnDisconnect</strong>:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Login</span>
<span style="color: #007800;">LOGIN</span>=<span style="color: #007800;">$1</span>
<span style="color: #666666; font-style: italic;">#user IP</span>
<span style="color: #007800;">IP</span>=<span style="color: #007800;">$2</span>
<span style="color: #666666; font-style: italic;">#cash</span>
<span style="color: #007800;">CASH</span>=<span style="color: #007800;">$3</span>
<span style="color: #666666; font-style: italic;">#user ID</span>
<span style="color: #007800;">ID</span>=<span style="color: #007800;">$4</span>
<span style="color: #666666; font-style: italic;">#Selected dirs to disconnect</span>
<span style="color: #007800;">DIRS</span>=<span style="color: #007800;">$4</span>
<span style="color: #007800;">fw</span>=<span style="color: #ff0000;">&quot;/sbin/ipfw&quot;</span>
<span style="color: #800000;">${fw}</span> table <span style="color: #000000;">1</span> del <span style="color: #007800;">$IP</span></pre></div></div>

<p>При отключении ип пользователя удаляется из таблицы, доступ закрывается.</p>
<p>Остальная настройка подробно описана в мануале, ничего сложного там нет. Трафик считается, деньги исправно списываются.</p>
]]></content:encoded>
			<wfw:commentRss>http://snake.khd.ru/2009/10/poschitaem-vse-stargazer-kak-billing-dlya-nebolshoj-lokalki/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

