Простейший Nat в linux с помощью iptables

Очень часто бывает нужен простой 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.1 -j MASQUERADE

Этой командой мы делаем "полный nat" для компьютера с адресом 192.168.8.1. Полный в том смысле, что всё, что видит сервер (тот, на котором nat), то видит и клиент. Если компьютеров несколько, и находятся они в одной подсети, то можно указать диапазон адресов с помощью маски:

sudo iptables -t nat -I POSTROUTING -s 192.168.8.0/255.255.255.0 -j MASQUERADE

Маска 255.255.255.0 разрешает 254 адреса (0 в данном случае адрес сети, 255 - broadcast адрес). Т.е. все адреса от 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 адрес.


Понравилась статья? Поделись с друзьями!




Комментарии на этом сайте требуют включенного Javascript в вашем браузере. Вероятно, ваш браузер не поддерживает Javascript, или он был отключен по каким-то причинам. Если вы хотите прокомментировать пост, или просто почитать комментарии, то пожалуйста, включите Javascript или попробуйте открыть эту страницу другим браузером.