<?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; NAT</title>
	<atom:link href="http://avz.org.ua/wp/tag/nat/feed/" rel="self" type="application/rss+xml" />
	<link>http://avz.org.ua/wp</link>
	<description>Заметки о Linux и прочие полезные howto</description>
	<lastBuildDate>Fri, 30 Jul 2010 18:37:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Строим NAT средствами FreeBSD</title>
		<link>http://avz.org.ua/wp/2009/06/04/freebsd-nat/</link>
		<comments>http://avz.org.ua/wp/2009/06/04/freebsd-nat/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 19:15:11 +0000</pubDate>
		<dc:creator>Admin</dc:creator>
				<category><![CDATA[ *nix]]></category>
		<category><![CDATA[divert]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[ipfw]]></category>
		<category><![CDATA[NAT]]></category>

		<guid isPermaLink="false">http://avz.org.ua/wp/?p=224</guid>
		<description><![CDATA[Для наглядности считаем, что внутренняя сеть адресуется блоком 192.168.0.0/24, шлюзом для внутренней сети выступает 192.168.0.1, IP-адрес внешнего интерфейса роутера &#8211; 20.30.40.50, внутренний интерфейс называется xl0 (кстати, он может совпадать и с внешним, если на интерфейсе прибиты одновременно и внешний адрес, и внутренний). 1. Проверяем, что ядро собрано с опциями &#171;IPDIVERT&#187; и &#171;IPFIREWALL&#187;, если нет &#8211; [...]


Похожие заметки:<ol><li><a href='http://avz.org.ua/wp/2009/07/18/pptpd-vpn-server/' rel='bookmark' title='Permanent Link: Строим VPN-сервер на основе pptpd'>Строим VPN-сервер на основе pptpd</a> <small>PPTP – это Point-to-Point Tunelling Protocol, используется чаще всего для организации защищенного подключения удаленных пользователей во внутреннюю сеть компании через...</small></li>
<li><a href='http://avz.org.ua/wp/2009/01/09/linux-nat/' rel='bookmark' title='Permanent Link: NAT в linux'>NAT в linux</a> <small>Исходные данные: есть роутер с двумя физическими интерфейсами &#8211; eth0 (внешний) и eth1 (внутренний). На внутреннем интерфейсе прибит ip-адрес 192.168.0.1/24....</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Для наглядности считаем, что внутренняя сеть адресуется блоком 192.168.0.0/24, шлюзом для внутренней сети выступает 192.168.0.1, IP-адрес внешнего интерфейса роутера &ndash; 20.30.40.50, внутренний интерфейс называется xl0 (кстати, он может совпадать и с внешним, если на интерфейсе прибиты одновременно и внешний адрес,  и внутренний).</p>
<p>1. Проверяем, что ядро собрано с опциями &laquo;IPDIVERT&raquo; и &laquo;IPFIREWALL&raquo;, если нет &ndash; пересобираем ядро или добавляем куда-то в стартовые скрипты загрузку модулей ipfw.ko и ipdivert.ko (команда kldload).</p>
<p>2. В файл /etc/rc.conf добавляем следующие строки:<br />
<code>firewall_enable="YES"<br />
firewall_type="OPEN"<br />
gateway_enable="YES"<br />
natd_enable="YES"<br />
natd_interface="xl0"</code></p>
<p>Здесь &laquo;xl0&#8243; указано для примера, вместо него нужно подставить реальное имя внешнего интерфейса (уходя через который пакеты имеют уже другой адрес отправителя).</p>
<p>3. Добавляем правила в ipfw, которые будут заворачивать трафик к natd:<br />
<code>ipfw add 1000 divert natd ip from 192.168.0.0/24 to not 192.168.0.0/24 out xmit xl0<br />
ipfw add 1100 divert ip from not 192.168.0.0/24 to 20.30.40.50 in recv xl0</code></p>
<p>Можно было и просто написать<br />
<code>ipfw add 1000 divert ip from any to any via xl0</code><br />
но мне первый вариант кажется более изящным (особенно в случае когда на интерфейсе xl0 висит куча сеток, а мы хотим чтобы натились только некоторые их них).</p>
<p>Номера правил (в примере 1000 и 1100) следует выбирать с учетом взаимного влияния других правил, лучше их ставить где-то в начале. Если, к примеру, у Вас будет что-то типа &laquo;allow tcp from any to any established&raquo; под номером 500, то с очень большой вероятностью получите грабли, т.к. трафик для установившихся TCP-сессий не будет проходить через natd, поскольку правило с номером 500 сработает раньше правил с номерами 1000 и 1100.</p>
<p><strong>Важное</strong> замечание: если шлюз для внутренней сети 192.168.0.1 и внешний адрес 20.30.40.50 висят на одном интерфейсе, то внешний адрес 20.30.40.50 обязательно должен быть первым (основным, который НЕ-alias), а 192.168.0.1 &ndash; алиасом (см. man ifconfig). Иначе работать не будет (сам когда-то полчаса ломал голову в такой ситуации, удивляясь почему не работает то, что построено строго в соответствии с рекомендациями признанных гуру).</p>
<p>Вместо &laquo;natd&raquo; в этих правилах можно писать &laquo;8668&#8243; &#8211; это &laquo;порт&raquo;, который &laquo;слушает&raquo; natd. Хотя мне лично непонятно что это за &laquo;порт&raquo; такой &ndash; не в терминах же протокола TCP употребляется здесь слово &laquo;порт&raquo; (потому что natd работает далеко не только для TCP-трафика, а еще и для UDP, ICMP и др.).</p>
<p>Как построить NAT в другую сторону (извне вовнутрь) описано <a href="http://freebsd.rogness.net/redirect.cgi?basic/nat.html" title="PAT, reverse NAT">здесь</a> во второй части статьи.</p>


<p>Похожие заметки:<ol><li><a href='http://avz.org.ua/wp/2009/07/18/pptpd-vpn-server/' rel='bookmark' title='Permanent Link: Строим VPN-сервер на основе pptpd'>Строим VPN-сервер на основе pptpd</a> <small>PPTP – это Point-to-Point Tunelling Protocol, используется чаще всего для организации защищенного подключения удаленных пользователей во внутреннюю сеть компании через...</small></li>
<li><a href='http://avz.org.ua/wp/2009/01/09/linux-nat/' rel='bookmark' title='Permanent Link: NAT в linux'>NAT в linux</a> <small>Исходные данные: есть роутер с двумя физическими интерфейсами &#8211; eth0 (внешний) и eth1 (внутренний). На внутреннем интерфейсе прибит ip-адрес 192.168.0.1/24....</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://avz.org.ua/wp/2009/06/04/freebsd-nat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NAT в linux</title>
		<link>http://avz.org.ua/wp/2009/01/09/linux-nat/</link>
		<comments>http://avz.org.ua/wp/2009/01/09/linux-nat/#comments</comments>
		<pubDate>Fri, 09 Jan 2009 16:18:39 +0000</pubDate>
		<dc:creator>Admin</dc:creator>
				<category><![CDATA[ *nix]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[NAT]]></category>
		<category><![CDATA[xinetd]]></category>
		<category><![CDATA[проброс портов]]></category>

		<guid isPermaLink="false">http://avz.org.ua/wp/?p=38</guid>
		<description><![CDATA[Исходные данные: есть роутер с двумя физическими интерфейсами &#8211; eth0 (внешний) и eth1 (внутренний). На внутреннем интерфейсе прибит ip-адрес 192.168.0.1/24. Для того, чтобы включить NAT (network address translation) в его упрощенном варианте, который называется маскардинг (встречается таже термин &#171;маскарад&#187;) нужно сделать следующее: echo 1 &#62; /proc/sys/net/ipv4/ip_forward /sbin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 [...]


Похожие заметки:<ol><li><a href='http://avz.org.ua/wp/2009/05/22/linux-installcheckpoints/' rel='bookmark' title='Permanent Link: Порядок настройки свежеустановленной Linux'>Порядок настройки свежеустановленной Linux</a> <small>Здесь описан порядок начальной настройки свежеустановленной операционной системы (на примере RedHat-подобных дистрибутивов, таких как Fedora, CentOS и т.п). Проверить, что...</small></li>
<li><a href='http://avz.org.ua/wp/2009/02/02/linuxquotas/' rel='bookmark' title='Permanent Link: Дисковые квоты в Linux'>Дисковые квоты в Linux</a> <small>Включение дисковых квот в Linux. Взято с http://www.yolinux.com/TUTORIALS/LinuxTutorialQuotas.html Редактируем файл /etc/fstab, добавляя параметры &laquo;usrquota&raquo; и/или &laquo;grpquota&raquo; в строки для нужного...</small></li>
<li><a href='http://avz.org.ua/wp/2009/07/18/pptpd-vpn-server/' rel='bookmark' title='Permanent Link: Строим VPN-сервер на основе pptpd'>Строим VPN-сервер на основе pptpd</a> <small>PPTP – это Point-to-Point Tunelling Protocol, используется чаще всего для организации защищенного подключения удаленных пользователей во внутреннюю сеть компании через...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Исходные данные: есть роутер с двумя физическими интерфейсами &#8211; eth0 (внешний) и eth1 (внутренний). На внутреннем интерфейсе прибит ip-адрес 192.168.0.1/24. Для того, чтобы включить NAT (network address translation) в его упрощенном варианте, который называется маскардинг (встречается таже термин &laquo;маскарад&raquo;) нужно сделать следующее:
<ol>
<code>
<li>echo 1 &gt; /proc/sys/net/ipv4/ip_forward</p>
<li>/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE
<li>/sbin/iptables -I FORWARD -d 192.168.0.0/24 -j ACCEPT
<li>/sbin/iptables -I FORWARD -s 192.168.0.0/24 -j ACCEPT</code>
</ol>
<p>Чтобы действие из п.1 не приходилось выполнять каждый раз после перезагрузки роутера, нужно поправить соответствующую опцию в /etc/sysctl.conf</p>
<p>Если требуется построить NAT в другую сторону, известный также как DNAT, то это можно сделать примерно так:</p>
<p><code>/sbin/iptables -t nat -A PREROUTING -p tcp -d 195.5.5.1 –dport 8182 -j DNAT –to-destination 10.10.10.18:80</code></p>
<p>Здесь 195.5.5.1 &ndash; внешний ip-адрес сервера, попытки установить соединение на 195.5.5.1 tcp-порт 8182 будут перенапрявляться на машину во внутренней сети с ip-адресом 10.10.10.18 на порт 80. При этом 10.10.10.18 должен быть directly-connected для сервера (то есть доступным для нашего сервера с DNAT-ом без использования промежуточных маршрутизаторов). А вот если это условие не выполняется, проброс портов можно сделать с помощью xinetd, создав в директории /etc/xinetd.d файл примерно такого содержания:<br />
<code>service redir8182<br />
{<br />
 flags = REUSE<br />
 socket_type = stream<br />
 wait = no<br />
 user = nobody<br />
 group = nobody<br />
 protocol = tcp<br />
 disable = no<br />
 port = 8182<br />
 redirect = 10.10.10.18 80<br />
}</code><br />
И в файл /etc/services добавить строку:<br />
<code>redir8182 8182/tcp  # access to the internal web-server from the world</code></p>
<p>Если какая-то машинка за NAT-ом испытывает трудности с подключением к внешнему VPN-серверу и винда показывает ошибку №619, то стоит попробовать включить модуль ядра ip_nat_pptp на linux-роутере, который исполняет NAT:<br />
<code>modprobe ip_nat_pptp</code></p>


<p>Похожие заметки:<ol><li><a href='http://avz.org.ua/wp/2009/05/22/linux-installcheckpoints/' rel='bookmark' title='Permanent Link: Порядок настройки свежеустановленной Linux'>Порядок настройки свежеустановленной Linux</a> <small>Здесь описан порядок начальной настройки свежеустановленной операционной системы (на примере RedHat-подобных дистрибутивов, таких как Fedora, CentOS и т.п). Проверить, что...</small></li>
<li><a href='http://avz.org.ua/wp/2009/02/02/linuxquotas/' rel='bookmark' title='Permanent Link: Дисковые квоты в Linux'>Дисковые квоты в Linux</a> <small>Включение дисковых квот в Linux. Взято с http://www.yolinux.com/TUTORIALS/LinuxTutorialQuotas.html Редактируем файл /etc/fstab, добавляя параметры &laquo;usrquota&raquo; и/или &laquo;grpquota&raquo; в строки для нужного...</small></li>
<li><a href='http://avz.org.ua/wp/2009/07/18/pptpd-vpn-server/' rel='bookmark' title='Permanent Link: Строим VPN-сервер на основе pptpd'>Строим VPN-сервер на основе pptpd</a> <small>PPTP – это Point-to-Point Tunelling Protocol, используется чаще всего для организации защищенного подключения удаленных пользователей во внутреннюю сеть компании через...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://avz.org.ua/wp/2009/01/09/linux-nat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
