Настройка Шлюза с DHCP ошибка при запуске шлюза. Ошибка решена. Всё работает.

Про установку и настройку DHCP перенес на wiki

[[http://wiki.calculate-linux.org/ru/Установка*и*настройка_DHCP*сервиса*на_Calculate_Directory_Server]]

Настройка шлюза

Для настройки Calculate Directory Server в качестве шлюза используется Shorewall. Shorewall или более точно Shoreline Firewall — инструмент для настройки файрвола (межсетевого экрана). Технически является надстройкой над подсистемой Netfilter (iptables/ipchains) ядра Linux и обеспечивает упрощённые методы конфигурирования данной подсистемы. Он предоставляет более высокий уровень абстракции для описания правил работы файрвола.
Программа не является демоном, то есть не работает постоянно. Правила хранятся в текстовых файлах, при запуске shorewall считывает свои файлы конфигурации и преобразует их в настройки понятные ipchains/iptables, после чего данные настройки файрвола могут дейстовать до перезапуска операционной системы.

компьютеры внутренней сети имеют адреса 10.10.0.0/24
Calculate Directory Server, подключенный к внутренней сети через интерфейс eth1 с установленным ip адресом 10.10.0.1, и имеющий выход в интернет через интерфейс eth0 с установленным ip адресом 192.168.0.77 (шлюз)

Для начала определим необходимые зоны: net - интернет, loc - локальная сеть, fw - CDS. В /etc/shorewall/zones поместим записи:

# mcedit /etc/shorewall/zones

###############################################################################
#ZONE TYPE OPTIONS IN OUT
# OPTIONS OPTIONS
fw firewall
net ipv4
loc ipv4

Теперь необходимо указать, что зона net обслуживается интерфейсом eth0, а зона loc - интерфейсом eth1. Входящий трафик на обоих интерфейсах будем пропускать через фильтры: tcpflags,routefilter,nosmurfs,logmartians. В /etc/shorewall/interfaces поместим записи:

# mcedit /etc/shorewall/interfaces

###############################################################################
#ZONE INTERFACE BROADCAST OPTIONS
net eth0 detect tcpflags,nosmurfs,routefilter,logmartians
loc eth1 detect tcpflags,nosmurfs,routefilter,logmartians

Опишем правила по умолчанию (политики) для трафика проходящего через шлюз: локальной сети (loc) и шлюзу ($FW) разрешен доступ во все зоны, пакеты из сети (net) сбрасывается, к остальным применяется правило REJECT c логом. В /etc/shorewall/policy поместим записи:

# mcedit /etc/shorewall/policy

###############################################################################
#SOURCE DEST POLICY LOG LIMIT: CONNLIMIT:
# LEVEL BURST MASK
loc all ACCEPT
$FW all ACCEPT
net all DROP
all all REJECT info

Добавим маскарадинг для пакетов исходящих из локальной сети в интернет. В /etc/shorewall/masq поместим записи:

# mcedit /etc/shorewall/masq

###############################################################################
#INTERFACE:DEST SOURCE ADDRESS PROTO PORT (S) IPSEC MARK USER/
# GROUP
eth0 10.10.0.0/24 192.168.0.77

Шлюз обеспечивающий выход в интернет локальной сети готов

Разрешаем запуск shorewall, для этого устанавливаем параметр STARTUP_ENABLED=Yes в файле /etc/shorewall/shorewall.conf

# mcedit /etc/shorewall/shorewall.conf

Запустим

# /etc/init.d/shorewall start

/etc/init.d/shorewall start
shorewall | * Starting shorewall …
shorewall | ERROR: Invalid interfaces file entry (too many columns) /etc/shorewall/interfaces (line 12) [ !! ]
shorewall | * ERROR: shorewall failed to start

Ругается на эту строчку

net eth0 detect tcpflags,nosmurfs,routefilter,logmartians

Попробовал это:

# emerge net-firewall/shorewall

В файле mcedit /etc/shorewall/shorewall.conf сделал параметр IP_FORWARDING=yes

# mcedit /etc/shorewall/shorewall.conf

Не помогло. В чем моя ошибка?

Вычислил ошибку
Оказывается (в инструкции есть)

Начиная с версии 4.5.3 shorewall поддерживает второй формат в котором нет необходимости указывать BROADCAST

Проверим какая у нас версия

calculate ~ # shorewall check
Checking using Shorewall 5.0.7.2…
Processing /etc/shorewall/params …
Processing /etc/shorewall/shorewall.conf…
Loading Modules…
Checking /etc/shorewall/zones…
Checking /etc/shorewall/interfaces…
ERROR: Invalid interfaces file entry (too many columns) /etc/shorewall/interfaces (line 12)

Откроем файл

calculate ~ # mcedit /etc/shorewall/interfaces

И действительно там только 3 колонки а у нас 4 вот на это и ругался shorewall при запуске (если перевести то в переводе так и сказано Файл неверный интерфейсы ввода (слишком много столбцов) / внимательность в linux прежде всего!)

Приведем к виду
net eth0 tcpflags,nosmurfs,routefilter,logmartians
loc eth1 tcpflags,nosmurfs,routefilter,logmartians

Проверим командой

alculate ~ # shorewall check
Checking using Shorewall 5.0.7.2…
Processing /etc/shorewall/params …
Processing /etc/shorewall/shorewall.conf…
Loading Modules…
Checking /etc/shorewall/zones…
Checking /etc/shorewall/interfaces…
Determining Hosts in Zones…
Locating Action Files…
Checking /etc/shorewall/policy…
Running /etc/shorewall/initdone…
Adding Anti-smurf Rules
Checking TCP Flags filtering…
Checking Kernel Route Filtering…
Checking Martian Logging…
Checking /etc/shorewall/masq…
Checking MAC Filtration – Phase 1…
Checking /etc/shorewall/rules…
Checking /etc/shorewall/conntrack…
Checking MAC Filtration – Phase 2…
Applying Policies…
Checking /usr/share/shorewall/action.Drop for chain Drop…
Checking /usr/share/shorewall/action.Broadcast for chain Broadcast…
Shorewall configuration verified

Она выполнит процесс компиляции, но не станет запускать сгенерированный
скрипт; вы же сможете отловить все ошибки и предупреждения.

Как видим у нас всё в порядке

Запустим

calculate ~ # shorewall start
Compiling using Shorewall 5.0.7.2…
Processing /etc/shorewall/params …
Processing /etc/shorewall/shorewall.conf…
Loading Modules…
Compiling /etc/shorewall/zones…
Compiling /etc/shorewall/interfaces…
Determining Hosts in Zones…
Locating Action Files…
Compiling /etc/shorewall/policy…
Running /etc/shorewall/initdone…
Adding Anti-smurf Rules
Compiling TCP Flags filtering…
Compiling Kernel Route Filtering…
Compiling Martian Logging…
Compiling /etc/shorewall/masq…
Compiling MAC Filtration – Phase 1…
Compiling /etc/shorewall/rules…
Compiling /etc/shorewall/conntrack…
Compiling MAC Filtration – Phase 2…
Applying Policies…
Compiling /usr/share/shorewall/action.Drop for chain Drop…
Compiling /usr/share/shorewall/action.Broadcast for chain Broadcast…
Generating Rule Matrix…
Compiling /usr/share/shorewall/action.Reject for chain Reject…
Creating iptables-restore input…
Shorewall configuration compiled to /var/lib/shorewall/.start
Starting Shorewall…
Initializing…
Processing /etc/shorewall/init …
Processing /etc/shorewall/tcclear …
Setting up Route Filtering…
Setting up Martian Logging…
Setting up Proxy ARP…
Preparing iptables-restore input…
Running /sbin/iptables-restore …
IPv4 Forwarding Enabled
Processing /etc/shorewall/start …
Processing /etc/shorewall/started …
done.

Проверить всё настройки можно командой

calculate ~ # shorewall show

Шлюз работает. DHCP раздает адреса. Выход с локальной сети в интернет есть.

Как я понял
можно выполнять команду /etc/init.d/shorewall start а можно и shorewall start
обе правильные просто одна использовалась в старых версиях программ

Прошу прощения за оформление. Немного не привык работать с таким форматированием. Научусь.

Следующее, что мне надо настроить это NTP сервер о нём и будет следующая статья.

Используйте тэг “pre” для выделения лога. Иначе всё сбивается в кучу и начинает неправильно отрабатывать разметка. Подробнее написано по ссылке “Помощь” справа над окном редактирования текста.

Вроде разобрался с форматированием. Следующие сообщения будет по нормальному отображаться.

Так можно и эти отредактировать :wink:

Конечно отредактирую, но попозже. Хочу сделать что то типо шаблона чтобы писать вначале у себя в текстовом файле с учетом этого форматирования а потом публиковать и лишь подправлять.
С моим дохлым интернетом опасно писать большие статьи… а пересохранять не удобно
Я живу в медвежьем углу Костромы 5 км от центра а скорость 800 - 1200 килобит максимум :))) операторы меняются как перчатки уже контор 4 было за 1 год

При перезагрузке служба не стартовала.
Оказывается параметр в файле лишь говорить что запуск разрешен.

Добавление запуска Shorewall при загрузке
Для того, чтобы Shorewall запускался при загрузке шлюза, необходимо выполнить:

rc-update add shorewall boot

и еще невозможно подключится по ssh

В /etc/shorewall/rules поместим запись:

SSH/ACCEPT net $FW

Вот только вопрос в примере

#SECTION ESTABLISHED
#SECTION RELATED
SECTION NEW

а у меня

?SECTION ALL
?SECTION ESTABLISHED
?SECTION RELATED
?SECTION INVALID
?SECTION UNTRACKED
?SECTION NEW

что это за восклицательные знаки? что это за параметры?

без изменения этих восклицаний добавил параметр и всё работает и доступ по ssh появился и шлюз стартует при перезагрузке

Перенёс в wiki [[http://wiki.calculate-linux.org/ru/nastroika_shliuza]]
Название перевело в транслит и поправить не могу.
В моих статьях нет сверху навигации.

Ошибка с транслитом исправлена. Для навигации будем делать отдельное меню. Просто указанием родительской страницы думаю не обойтись.

Alexander Tratsevskiy wrote:

Для навигации будем делать отдельное меню. Просто указанием родительской страницы думаю не обойтись.

Вот и хорошо. Тоже все голову ломал как вы хотите с одной родительской всё сделать…