Прозрачный прокси для домашней сети (часть первая)
Рассмотрим типичную ситуацию: один входящий канал, несколько компьютеров, желание разделить доступ и собирать статистику использования канала. В Сети очень много руководств и howto на эту тему. Моя статья не претендует на замену аналогичных статей из wiki, это скорее записки из собственного опыта.
Итак, начальные условия: три компьютера, соединены через хаб(свич), на одном из них две сетевые карты и линукс (в моем случае - Gentoo). Одна сетевая карта смотрит в локалку, вторая - в мир (кабельный модем Arris). Что мы сделаем: настроим dhcp и маскарадинг для доступа в мир машин из внутренней сети.
Установка dhcp.
Зачем нужен dhcp для такой маленькой сети, спросите Вы? Отвечаю: лично я - программист. С администрированием сталкивался в ранней молодости. Часто конфигурирование сети вызывало проблемы. Смена сетевых адресов, смена провайдеров. dhcp позволяет управлять сетевыми настройками всех внутренних машин с одной, поэтому я рекомендую его использовать.
Итак, этап первый - устанавливаем dhcp:
emerge -av dhcp
Опционально, его можно установить в chroot - это на Ваше усмотрение.
Конфигурирование dhcp.
Я настроил dhcp на привязки к mac-адресам сетевых карт. Зачем? Чтобы попинговать компы и получить доступ по ssh, в случае чего, и при этом не искать в логах, какой адрес был кому назначен. Зачем тогда dhcp? Я уже говорил. У меня нет опыта в настройке сетей, часто менял конфигурацию, менял несколько раз провайдера. Каждый раз менять настройки на компьютере брата и своем ноуте - слегка утомительно. А так - dhcp отдает клиентам параметры прокси, шлюза, DNS и т.п.
В общем, все понятно. Настраиваем:
dhcpd.conf
ddns-update-style ad-hoc;
default-lease-time 600;
max-lease-time 7200;
authoritative;
log-facility local7;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.100 192.168.0.150;
option subnet-mask 255.255.255.0;
option netbios-name-servers 192.168.0.1;
option broadcast-address 192.168.0.255;
option routers 192.168.0.1;
option domain-name-servers 194.6.196.250, 194.6.196.4;
host solshark_ibm {
hardware ethernet 00:01:03:86:95:B1;
fixed-address 192.168.0.2;
}
host gellan {
hardware ethernet 00:17:31:e6:bb:67;
fixed-address 192.168.0.3;
}
}
Назначение строчек конфига самоочевидно:
- range - диапазон адресов для динамического выделения;
- routers - шлюз по умолчанию;
- domain-name-servers - DNS;
Теперь настроим маскарадинг для того, чтобы выпускать машины из внутренней сети в мир:
simplefirewall.sh
EXTIF='eth1'
INTIF='eth0'
IPT='/sbin/iptables'
# Включаем форвардинг ip в ядре.
/bin/echo 1 > /proc/sys/net/ipv4/ip_forward
# Включаем маскарадинг для разрешения доступа в интернет
$IPT -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE
echo "Включаем форвардинг"
# Форвардить сетевой трафик с $INTIF1 на интерфейс $EXTIF
$IPT -A FORWARD -i $INTIF -o $EXTIF -m state --state NEW,ESTABLISHED -j ACCEPT