Ох, сколько я же здесь не писал! Сколько материала накопил! Но, наверное, здесь это будет последняя статья. Перееду я на новое место.
Пригласили меня на обслуживание одной организации. У них случилась беда. Вся сеть заражена вирусами. Плотно заражена. Ситуацию осложняло то, что в сети использовались личные ноутбуки сотрудников — в организации так заведено, что торговый отдел использует свои ПК. Естественно ни о каком контроле речи и не было. В итоге получили сеть живущей своей жизнью. Установлена WiFi точка доступа, к ней ноутбуки и цепляются.
Я принял решение раздробить сеть на 2 части, но оставить один сегмент. Управляемого коммутатора в обозримом будущем в сети не предвиделось, но на базе старого ПК я решил сделать сетевой мост и установить его в разрыв между коммутатором и точкой доступа. OpenSUSE на данный ПК вставать отказалась, зато Debian встал на ура.
Устанавливаем необходимые и не очень нам пакеты. Нам понадобится пакет bridge-utils, а mc я поставил ради редактора mcedit:
# apt-get install bridge-utils mc

Теперь настраиваем соединение типа мост из двух сетевых карт:
# mcedit /etc/network/interfaces
Убираем все настройки наших сетевых карт, оставляя только lo интерфейс и вводим новые, касающиеся нашего моста:
auto br0
iface br0 inet static
bridge_ports eth0 eth1
address 192.168.254.51
netmask 255.255.255.0
network 192.168.254.0
broadcast 192.168.254.255
gateway 192.168.254.254
Сохраняем конфигурацию и перезагружаем сеть:
# /etc/init.d/networking restart
По умолчанию хождение пакетов разрешено, а нам его необходимо запретить.
Создаем файл конфигурации iptables, куда мы будем прописывать наши настройки сетевого экрана:
# mcedit /etc/iptables-rules
Сначала запрещаем Forward пакетов, потом начинаем устанавливать разрешения.
В сети используется dhcp сервер, поэтому разрешаем хождение пакетов необходимых для его работы. Сотрудникам нужен Интернет, его тоже разрешаем, попутно разрешив DNS запросы. Так же необходим доступ к RDP серверу компании.
# Generated by iptables-save v1.4.2 on Thu Apr 1 23:30:23 2010
*filter
:INPUT ACCEPT [1123:100154]
:FORWARD DROP [205:61455]
:OUTPUT ACCEPT [778:99021]
-A FORWARD -p udp -m udp --sport 67:68 --dport 67:68 -j ACCEPT
-A FORWARD -p udp -m udp --dport 53 -j ACCEPT
-A FORWARD -p tcp -m tcp --dport 80 -j ACCEPT
-A FORWARD -p tcp -m tcp --dport 443 -j ACCEPT
-A FORWARD -p tcp -m tcp --dport 3389 -j ACCEPT
COMMIT
# Completed on Thu Apr 1 23:30:23 2010

Я вводил правила в командной строке, а потом сохранил их использую iptables-save. Как поступите вы — решать вам.
Теперь нам необходимо сделать правила загружаемыми вместе с системой. Создаем файл iptables в каталоге /etc/network/if-pre-up.d/:
# mcedit /etc/network/if-pre-up.d/iptables
С таким содержимым:
#!/bin/bash
/sbin/iptables-restore < /etc/iptables-rules
И делаем его исполняемым:
# chmod +x /etc/network/if-pre-up.d/iptables
Все хорошо, но вот получаться адреса по dhcp отказались. Я перерыл кучу информации, смотрел вывод tcpdump. Идут запросы. Казалось все просто — один сегмент, пакеты не блокируются. Но нет.
И тут я наткнулся на dhcrelay. Мое спасение. Устанавливаем пакет dhcp3-relay:
# apt-get install dhcp3-relay
После установки запустится конфигуратор приложения. На первый вопрос вводим адрес нашего DHCP сервера (в этой сети его адрес 192.168.254.252):

На второй вводим имя нашего виртуального интерфейса моста (в моем случае br0, мы указывали его при редактировании файла /etc/network/interfaces):

На третий вопрос отвечаем немым согласием просто нажав клавишу Enter:

Ну вот и все, вроде, ничего не упустил. Адреса ПК получать стали.