Очень часто бывает нужен простой Nat чтобы дать нескольким другим компьютерам доступ в сеть. Конечно, можно поставить squid или vpn сервер, но зачем, когда можно более просто, и лаконично дать доступ? Этот небольшой пост как раз об этом. Когда я был "мал да зелен", и приобрёл второй компьютер, я зачем-то сразу полез ставить squid. Опыта было мало, а сделать нужно было. В итоге после недели мучений, я это дело бросил. Опыта и знаний явно не хватало. С iptables я тогда был незнаком, поэтому оставил это дело, и решил купить роутер, но тут один знакомый админ со стажем, подсказал мне как легко, и просто можно "раздать" сеть.
Для начала, включим форвардинг в ядре если не включен:
su
echo 1 > /proc/sys/net/ipv4/ip_forward
Для того, чтобы ядро загружалось всегда с включенным форвариднгом надо открыть файл /etc/sysctl.conf (от супер пользователя - root), и в него добавить или изменить имеющуюся строчку:
net.ipv4.ip_forward=1
Фактически сам nat делается одной командой:
sudo iptables -t nat -I POSTROUTING -s 192.168.8.0 -j MASQUERADE
Этой командой мы делаем "полный nat" для компьютера с адресом 192.168.8.0. Полный в том смысле, что всё, что видит компьютер сервер (тот, на котором nat), то видит и клиент. Если компьютеров несколько, и находятся они в одной подсети, то можно указать диапазон адресов с помощью маски:
sudo iptables -t nat -I POSTROUTING -s 192.168.8.0/255.255.255.0 -j MASQUERADE
Маска 255.255.255.0 разрешает 254 адреса. Т.е. все адреса от 192.168.8.1 до 192.168.8.254. Для расчёта диапазона адресов, рекомендую использовать какой либо из интернет калькуляторов. Например этот.
В случае если сервер видит несколько сетей, а необходимо дать доступ к одной, то это можно сделать так:
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.8.0/255.255.255.0 -j MASQUERADE
На компьютере "клиенте", чтобы появилась сеть, необходимо в качестве шлюза по умолчанию (gateway), указать адрес nat сервера.
Рекомендую использовать этот способ только в домашней локальной сети. В общественной сети легко можно подменить ip адрес.
----------
Сейчас очень большой спрос на недвижимость за рубежом. Всё больше людей предпочитаю купить домик где нибудь в Чехии, и ездить туда на лето отдыхать. Ведь в ряде случаев, это может оказаться дешевле чем ездить по тур. путёвкам. Покупать недвижимость в Чехии, и за рубежом вообще стоит только у проверенных фирм и компаний. Например недвижимость в южной Чехии от www.Karlovy-Vary.ru как раз является надёжной фирмой.
Похожие записи:

Что курил автор при изложении вот такого бреда?????
"Маска 255.255.255.0 разрешает 24 адреса. Т.е. все адрес от 192.168.8.0 до 192.168.8.24."
и как давно маска 255.255.255.0 стала разрешением 24 адресов, на не 256 адресов?
как я понимаю, сам аФтАр не смог понять принципа формирования адресов, да и воспользоваться калькулятором он тоже не смог..
[Ответить]
bosha Отвечает:
Июнь 5th, 2010 at 13:43
Пардон. Я опечатлся спросони.
Спасибо за исправление, но нельзя ли быть проще? Ошибки все допускают, особенно во время сессии, и когда посты готовят пачкой на пару недель вперёд.
[Ответить]
dyug Отвечает:
Июнь 5th, 2010 at 14:03
теоретически - можно.
Только вот в таком виде - сколько после этого му* будут мне доказывать, что вот же человек написал, и оно работает как он написал..
Да, и ссылка на ипкалк была не совсем корректна, в конце урла подставляламь точка с запятой, что и приводило к нерабчей ссылке.
P.S. все ошибаются.
[Ответить]
bosha Отвечает:
Июнь 5th, 2010 at 14:17
Я почему-то спросони не количество адресов решил указать, а бит. Сам не знаю почему.
>Только вот в таком виде – сколько после этого му* будут мне доказывать, что вот же человек написал, и оно работает как он написал..
Не спорю, но всё же одна случайная ошибка не указывает на то, что автор не разобрался в том, о чём пишет. Я бы не стал писать не разобравшись сам =]
>Да, и ссылка на ипкалк была не совсем корректна, в конце урла подставляламь точка с запятой, что и приводило к нерабчей ссылке.
Из-за плагина который делает редирект такое бывает с некоторыми браузерами и адресами. Если такое часто повторяться будет, то выключу его.
[Ответить]
Ссылка | Июнь 5th, 2010 at 13:05
Автор, убире пост, не позорься. И да, ссылка на ipcalc нерабочая.
[Ответить]
bosha Отвечает:
Июнь 5th, 2010 at 13:45
В чём позор? В опечатке спросони?
Ссылка рабочая.
[Ответить]
Ссылка | Июнь 5th, 2010 at 13:28
Ммм... Сколько ананистов набежало... =D
[Ответить]
bosha Отвечает:
Июнь 5th, 2010 at 14:18
Всего один вроде =]
[Ответить]
Ссылка | Июнь 5th, 2010 at 14:07
Спасибо! Как раз хотел сделать себе шлюз =)
[Ответить]
bosha Отвечает:
Июнь 5th, 2010 at 15:29
Всегда пожалуйста =]
[Ответить]
predator Отвечает:
Июнь 5th, 2010 at 16:23
Ещё понадобилось
echo 1 > /proc/sys/net/ipv4/ip_forward
и в "/etc/sysctl.conf"
net.ipv4.ip_forward=1
[Ответить]
Ссылка | Июнь 5th, 2010 at 14:39
Какой интересный адрес компьютера 192.168.8.0, да и к чему он там?
-I тут тоже не к месту.
Правильная строка ната без заморочек выглядит так:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
[Ответить]
dma Отвечает:
Июнь 5th, 2010 at 15:55
И да, ипфорвардинг должен быть включен.
[Ответить]
bosha Отвечает:
Июнь 5th, 2010 at 16:21
Спасибо. Добавил.
[Ответить]
bosha Отвечает:
Июнь 5th, 2010 at 16:21
>Какой интересный адрес компьютера 192.168.8.0, да и к чему он там?
Обычный адрес. Первый который в голову пришёл для примера.
>Правильная строка ната без заморочек выглядит так:
Правильная? Я указал адрес. Ошибкой это не является. Извините, привычка не разрешать всё подряд. Случаи разные бывают. Даже в домашней сети.
[Ответить]
dma Отвечает:
Июнь 5th, 2010 at 16:37
Это не обычный адрес, а адрес подсети. Компьютер не может иметь такой адрес.
[Ответить]
dma Отвечает:
Июнь 5th, 2010 at 16:54
А еще ваш нат работает во все стороны, по идее. В общем, все неправильно. :)
[Ответить]
bosha Отвечает:
Июнь 5th, 2010 at 17:07
У меня (и не только) работает. Уже сколько раз использовал. По какой же идее не работает? Правила верны, форвардинг включен.
[Ответить]
Ссылка | Июнь 5th, 2010 at 15:51
bosha, dma имел в виду, что если не указан исходящий интерфейс (-o), то правило применяется к трафику, идущему с любого интерфейса. Представь, что у тебя два интерфейса в приватных сетях (например, 192.168.8.0/24 на eth1 и 192.168.9.0/24 на eth2) -- с твоим правилом без -o ВНЕЗАПНО (tm) начнёт маскарадиться трафик из 192.168.8 в 192.168.9.
В твоём (вероятно, простейшем) случае вряд ли такое будет иметь место, но держать в уме стОит.
Соответственно, "...дать доступ к одной" в последнем параграфе это не вполне верно: доступ ты ограничиваешь как раз при помощи -s (хотя обычно это делают в цепочке FORWARD), а -o указывает интерфейс на котором маскарадинг будет иметь место.
Лично я за версию dma из коммента 5 с добавкой сети (если нужно):
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.8.0/24 -j MASQUERADE
[Ответить]
bosha Отвечает:
Июнь 6th, 2010 at 10:28
У меня же обо всём этом написано. И указано что если трафик надо ограничить одним интерфейсом, то можно его указать и указан пример.
У меня такой же пример, только указан другой интерфейс и маска вместо бита. Нумерация интерфейсов может быть любой. У кого то это может оказаться eth3. Я так понимаю Вам просто не понравилась формулировка? Я с радостью изменю на более верную, только предложите её ;)
[Ответить]
Ссылка | Июнь 6th, 2010 at 02:46
>Маска 255.255.255.0 разрешает 256 адресов. Т.е. все адрес от 192.168.8.0 до 192.168.8.256.
Не обижайтесь, но все же вы не разбираетесь в вопросе. В этих двух предложениях две ошибки - математическая и техническая.
В диапазоне от 0 до 256 всего чисел 257 (сюрприз).
Вторая ошибка - адрес 192.168.8.256. Попробуйте присвоить такой адрес своей сетевой карте. Фокус в том, что десятичное 256 это 100 шестнадцатеричное, т.е. требует более одного октета для записи. А поскольку адрес IPv4 состоит всего из четырех октетов, то и значения в нем не могут превышать 255.
[Ответить]
bosha Отвечает:
Июнь 6th, 2010 at 20:24
Да, признаю. Есть ошибка. По невнимательности лишнюю цифру приписал, от этого "вылезла" вторая ошибка.
Спасибо.
[Ответить]
Ссылка | Июнь 6th, 2010 at 20:00
н-да уж уважаемый
вы уж либо отоспитесь, либо ...
да и мануалы покурить не помешает =)
[Ответить]
bosha Отвечает:
Апрель 17th, 2011 at 15:05
@ivlad66, комментарий, извините, ни о чём. Можно конкретнее что по Вашему не так?
[Ответить]
Ссылка | Апрель 17th, 2011 at 13:55
Можно я тоже кину камень в огород, выше уже было замечание, что компьютер не должен иметь адреса оканчивающиеся на 0 и 255, ноль зарезервирован для подсетей, 255 для широковещательных сообщений.
[Ответить]
bosha Отвечает:
Апрель 19th, 2011 at 13:26
@O_O, там где-то написано что нужно использовать *.0 для ПК?
[Ответить]
Ссылка | Апрель 19th, 2011 at 13:02
Ага..
"Этой командой мы делаем "полный nat" для компьютера с адресом 192.168.8.0."
[Ответить]
bosha Отвечает:
Апрель 19th, 2011 at 14:07
@O_O, это же пример. Переформулирую: я где-то призываю использовать адрес на *.0?
[Ответить]
Ссылка | Апрель 19th, 2011 at 14:05
Не корректный пример, может привести к ошибке или ошибочному пониманию :) Я без сарказма, сам учусь.
[Ответить]
bosha Отвечает:
Апрель 19th, 2011 at 14:19
@O_O, убедили, исправлю :)
Спасибо за дополнения\исправления.
[Ответить]
Ссылка | Апрель 19th, 2011 at 14:17
Добрый день! у меня небольшая проблема! если сможете помочь был бы благодарен
есть сервер на котором поднят нат, за натом около 1000 абонентов и вот у них возникли такие проблемы как : работает ICQ но не работает QIP и джаббер, все сайты работают видео показывает за исключением видео на сайте VKONTAKTE.RU а сам сайт нормально работает только видео не работает не работает SUPPORT и клиентская программа друг вокруг.
iptables-save
:INPUT DROP [0:0]
:FORWARD DROP [2587:161682]
:OUTPUT ACCEPT [38:7566]
-A INPUT -s 192.168.181.1
-A INPUT -s 192.168.180.1
-A INPUT -p icmp -j ACCEPT
-A INPUT -i eth0.181 -p icmp -j ACCEPT
-A INPUT -i eth1.180 -p icmp -j ACCEPT
-A INPUT -s 192.168.117.0/255.255.255.0 -j ACCEPT
-A INPUT -d 127.0.0.1 -j ACCEPT
-A INPUT -s 127.0.0.1 -j ACCEPT
-A INPUT -s 192.168.180.0/255.255.255.252 -j ACCEPT
-A INPUT -s 192.168.181.0/255.255.255.252 -j ACCEPT
-A INPUT -d 192.168.180.0/255.255.255.252 -j ACCEPT
-A INPUT -d 192.168.181.0/255.255.255.252 -j ACCEPT
-A FORWARD -s 192.168.180.1 -d 192.168.117.0/255.255.255.0 -j ACCEPT
-A FORWARD -s 192.168.117.0/255.255.255.0 -d 192.168.180.1 -j ACCEPT
-A FORWARD -p udp -m udp --dport 135:139 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -p tcp -m tcp --dport 135:139 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -p udp -m udp --dport 445 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -p tcp -m tcp --dport 445 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -p tcp -m tcp -m multiport --dports 25,53,80,110,8080,443,5190,5222,5223,3646,491,8190,9044,8127,573 -j ACCEPT
-A FORWARD -p tcp -m tcp -m multiport --sports 25,53,80,110,8080,443,5190,5222,5223,3646,491,8190,9044,8127,573 -j ACCEPT
-A FORWARD -s 192.168.0.0/255.255.0.0 -p tcp -m tcp ! --dport 80 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 200 --connlimit-mask 32 -j DROP
-A FORWARD -s 192.168.0.0/255.255.0.0 -p udp -m state --state NEW -m recent --set --name UDPFLOOD --rsource
-A FORWARD -s 192.168.0.0/255.255.0.0 -p udp -m state --state NEW -m recent --update --seconds 5 --hitcount 20 --name UDPFLOOD --rsource -j DROP
-A FORWARD -d 255.255.255.255 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -s 255.255.255.255 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -d 192.168.166.0/255.255.255.0 -j ACCEPT
-A FORWARD -s 192.168.166.0/255.255.255.0 -j ACCEPT
-A FORWARD -d 192.168.200.0/255.255.255.0 -j ACCEPT
-A FORWARD -s 192.168.200.0/255.255.255.0 -j ACCEPT
-A FORWARD -d 192.168.201.0/255.255.255.0 -j ACCEPT
-A FORWARD -s 192.168.201.0/255.255.255.0 -j ACCEPT
-A FORWARD -s 192.168.167.0/255.255.255.0 -j ACCEPT
-A FORWARD -d 192.168.167.0/255.255.255.0 -j ACCEPT
-A FORWARD -d 192.168.139.0/255.255.255.0 -j ACCEPT
-A FORWARD -s 192.168.139.0/255.255.255.0 -j ACCEPT
-A FORWARD -d 192.168.159.0/255.255.255.0 -j ACCEPT
-A FORWARD -s 192.168.159.0/255.255.255.0 -j ACCEPT
-A FORWARD -d 192.168.160.0/255.255.255.0 -j ACCEPT
-A FORWARD -s 192.168.160.0/255.255.255.0 -j ACCEPT
-A FORWARD -d 192.168.161.0/255.255.255.0 -j ACCEPT
-A FORWARD -s 192.168.161.0/255.255.255.0 -j ACCEPT
-A FORWARD -d 192.168.162.0/255.255.255.0 -j ACCEPT
-A FORWARD -s 192.168.162.0/255.255.255.0 -j ACCEPT
-A FORWARD -d 192.168.163.0/255.255.255.0 -j ACCEPT
-A FORWARD -s 192.168.163.0/255.255.255.0 -j ACCEPT
-A FORWARD -d 192.168.164.0/255.255.255.0 -j ACCEPT
-A FORWARD -s 192.168.164.0/255.255.255.0 -j ACCEPT
-A FORWARD -d 192.168.165.0/255.255.255.0 -j ACCEPT
-A FORWARD -s 192.168.165.0/255.255.255.0 -j ACCEPT
-A FORWARD -d 192.168.168.0/255.255.255.0 -j ACCEPT
-A FORWARD -s 192.168.168.0/255.255.255.0 -j ACCEPT
-A FORWARD -d 192.168.169.0/255.255.255.0 -j ACCEPT
-A FORWARD -s 192.168.169.0/255.255.255.0 -j ACCEPT
-A FORWARD -d 192.168.171.0/255.255.255.0 -j ACCEPT
-A FORWARD -s 192.168.171.0/255.255.255.0 -j ACCEPT
COMMIT
# Completed on Thu Jun 16 11:19:28 2011
# Generated by iptables-save v1.3.5 on Thu Jun 16 11:19:28 2011
*nat
:PREROUTING ACCEPT [6491:412207]
:POSTROUTING ACCEPT [4:267]
:OUTPUT ACCEPT [0:0]
-A POSTROUTING -s 192.168.162.50 -o eth0.181 -j SNAT --to-source 46.16.226.34
-A POSTROUTING -s 192.168.200.0/255.255.255.0 -o eth0.181 -j SNAT --to-source 109.70.185.30-109.70.185.31
-A POSTROUTING -s 192.168.201.0/255.255.255.0 -o eth0.181 -j SNAT --to-source 109.70.185.30-109.70.185.31
-A POSTROUTING -s 192.168.166.0/255.255.255.0 -o eth0.181 -j SNAT --to-source 109.70.185.30-109.70.185.31
-A POSTROUTING -s 192.168.167.0/255.255.255.0 -o eth0.181 -j SNAT --to-source 109.70.185.24-109.70.185.29
-A POSTROUTING -s 192.168.139.0/255.255.255.0 -o eth0.181 -j SNAT --to-source 46.16.226.32-46.16.226.39
-A POSTROUTING -s 192.168.159.0/255.255.255.0 -o eth0.181 -j SNAT --to-source 46.16.226.32-46.16.226.39
-A POSTROUTING -s 192.168.160.0/255.255.255.0 -o eth0.181 -j SNAT --to-source 46.16.226.32-46.16.226.39
-A POSTROUTING -s 192.168.161.0/255.255.255.0 -o eth0.181 -j SNAT --to-source 46.16.226.32-46.16.226.39
-A POSTROUTING -s 192.168.162.0/255.255.255.0 -o eth0.181 -j SNAT --to-source 46.16.226.32-46.16.226.39
-A POSTROUTING -s 192.168.163.0/255.255.255.0 -o eth0.181 -j SNAT --to-source 46.16.226.32-46.16.226.39
-A POSTROUTING -s 192.168.164.0/255.255.255.0 -o eth0.181 -j SNAT --to-source 46.16.226.32-46.16.226.39
-A POSTROUTING -s 192.168.165.0/255.255.255.0 -o eth0.181 -j SNAT --to-source 46.16.226.32-46.16.226.39
-A POSTROUTING -s 192.168.168.0/255.255.255.0 -o eth0.181 -j SNAT --to-source 46.16.226.32-46.16.226.39
-A POSTROUTING -s 192.168.169.0/255.255.255.0 -o eth0.181 -j SNAT --to-source 46.16.226.32-46.16.226.39
-A POSTROUTING -s 192.168.171.0/255.255.255.0 -o eth0.181 -j SNAT --to-source 46.16.226.32-46.16.226.39
COMMIT
# Completed on Thu Jun 16 11:19:28 2011
[Ответить]
Ссылка | Июнь 16th, 2011 at 11:35