Недавно
пришлось поднимать простенький шлюз в интернет, без всяких примочек и
дополнительных приложений. Задача стояла следующая сделать полную
маршрутизацию всех сетевых пакетов из внутренней сети во внешнюю
(интернет).
Для
начала на шлюзе я поднял кэширующий DNS сервер. Для того, чтобы клиенты внутренней локалки могли нормально работать с внешним миром.
Затем включил поддержку IP маршрутизации в ядро системы подредактировав файл
/etc/sysctl.conf
В данном файле в значении:
net.ipv4.ip_forward =0
Поставил 1, в итоге получил:
net.ipv4.ip_forward =1
Затем подредактировал еще один файлик (изначально он пустой), - просто вставил в него единичку
где вместо 192.168.100.0/24 - вставляете адрес вашей подсети, а интерфейс eth0 -
на интерфейс который у вас смотрит в интернет (хотя как знать может
быть у вас такие же адреса и интерфейсы, как и на моем щлюзе ;-) ).
Справка
iptables — утилитакомандной строки, является стандартным интерфейсом управления работоймежсетевого экрана (брандмауэра)netfilter дляядер Linux версий 2.4 и 2.6. Для использования утилиты iptables требуются привилегиисуперпользователя (root). Иногда под словом iptables имеется в виду и сам межсетевой экран netfilter.
http://ru.wikipedia.org/wiki/Iptables
На клиентских машинах прописываем адрес интерфейса нашего шлюза, который у нас смотрит в локалку ( в моем случае это 192.168.100.100) и адрес кэширующего DNS сервера.
Проверим интернет из локалки на клиентской машине и (если вы все сделали правильно) сохраним наше правило в iptables:
service iptables save
Через setup (можно и через chkconfig) сделаем сервис iptables загружаемым вместе с системой.
Проверим как наше правило работает, командой:
iptables -vn -L -t nat
Как видим, пакетики успешно гуляют через наш, вновь созданный маршрутизатор. Ура! ;-)
При перепечатке указание ссылки на http://centos.moy.su обязательно
после правки /etc/sysctl.conf вместо echo 1 > /proc/sys/net/ipv4/ip_forward проще sysctl -p автоматом внесет все из /etc/sysctl.conf sysctl -a покажет все установки