Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

Мини-HOWTO: Мост + Firewall + DSL
Пред.След.

Настройка

Полная настройка состоит из следующих шагов:

  • Настройка оборудования (и проверка того, что оно работает)

  • Патч и конфигурирование ядра

  • Настройка сети (ifconfig, маршрутизация, мост)

  • Настройка firewall

Пример конфигурации

В процессе описания настроек я буду предполагать, что у вас установлены две сетевых карты, имеется внешнее DSL-соединение (DSL-модем подключен к одной из сетевых карт), и локальная сеть, подключенная ко второй сетевой карте. Я называю карту, подключенную к DSL-модему "eth1", а карту локальной сети - "eth0". Имена карт в системе зависят от того, в какой слот они включены.

Я также предполагаю, что вам выделена подсеть IP-адресов 192.168.2.128-191, т.е маска сети будет - 255.255.255.192, а DSL-маршрутизатор имеет адрес 192.168.2.129. Все эти значение - фиктивные, они здесь приведены исключительно для иллюстрации сути настройки. Я буду использовать IP-адрес 192.168.2.130 для firewall-машины (на обеих сетевых картах), хотя я выяснил, что можно иметь и различные адреса для сетевых карт, если вам это необходимо.

Настройка оборудования

Вам понадобятся две сетевые карты. Самая большая проблема, с которой я столкнулся, возникла после того, как я выбрал первый попавшийся PCI-слот для второй карты на материнской плате, и оказалось, что этот слот использовал то же прерывание, что и первая карта. Я вообще не знал, что из-за этого могут возникнуть проблемы (на этот предмет не было никакой информации, и я думал, что все будет нормально работать). Обе карты тихо умерли (без индикации каких-либо ошибок) и перестали вообще передавать и принимать пакеты. Обычно, когда вы пытаетесь изменить конфигурацию, последнее, что делаете - меняете слоты карт. Я не знаю, существует ли эта проблема для всех сетевых карт, или только для наших, но я бы никому не советовал использовать общие прерывания. Драйвер, который мы будем использовать, выдает на экран IRQ каждой сетевой карты при загрузке системы. Существует большое количество советов, как заставить ядро обнаружить несколько сетевых карт (смотрите "Howto: Ethernet" , раздел Использование нескольких сетевых карт на одной машине); однако, мне это не понадобилось (мое ядро обнаруживало обе карты без каких-либо аргументов).

Затем вам надо подключить вторую карту к DSL-модему (или к тому, что соединяет вас с внешним миром) и убедиться, что это соединение работает. Вы должны дать команду ifconfig для второй карты с соответствующим IP-адресом и увидеть работающий ping до маршрутизатора на дальнем конце подключения к глобальной сети. Таким образом вы проверите, можно ли вы посылать пакеты по DSL-соединению. Например, в нашей сети нужно сделать следующее:

ifconfig eth1 192.168.2.130 netmask 255.255.255.192 broadcast 192.168.2.191

чтобы настроить вторую карту. А затем

  ifconfig eth0 down # чтобы быть уверенным в том, что эта карта не мешает работе
  ping 192.168.2.129

чтобы проверить доступность маршрутизатора. Для пущей уверенности проверьте доступность машин локальной сети через первую карту:

  ifconfig eth1 down # чтобы быть уверенным в том, что эта карта не мешает работе
  ifconfig eth0 up 
  ping 192.168.2.x # где x - это адрес машины в локальной сети
 

К этому моменту вы имеете полную уверенность в том, что оборудование исправно и работает.

Настройка моста

Вам понадобится утилита конфигурирования моста (автор Alan Cox) - она позволит контролировать работу моста, встроенного в ядро при включенной опции CONFIG_BRIDGE. BRCFG распространяется в виде исходных текстов и заранее скомпилированных исполняемых файлов. Я не знаю, с каким ядром были собраны эти файлы, но у меня все несколько разошлось, когда я попытался собрать их с include-файлами моего ядра (2.2.13). Поэтому, к сожалению, эти исходные тексты пришлось немного подправить. Ниже приведен сам патч:

diff -C 3 -r /tmp/BRCFG/brcfg.c ./brcfg.c
*** /tmp/BRCFG/brcfg.c  Wed Feb 21 19:11:59 1996
--- ./brcfg.c   Wed Dec  8 12:52:23 1999
***************
*** 1,6 ****
  
! #include <sys/types.h>
! #include <sys/socket.h>
  #include <skbuff.h>
  
  #include "br.h"
--- 1,6 ----
  
! #include <types.h>
! #include <socket.h>
  #include <skbuff.h>
  
  #include "br.h"
 

Используйте этот патч, пересоберите brcfg и установите их в соответствующее место (Я выбрал /usr/sbin).

Конфигурация ядра

Вам придется собрать свое ядро с применением включенной опции "Мост" и патча фильтрования моста (а также firewall-а, сети и т.п., если у вас еще это не встроено). Вам, как минимум, потребуются следующие опции ядра:

  CONFIG_EXPERIMENTAL=y
  CONFIG_BRIDGE=y
  CONFIG_FIREWALL=y           
  CONFIG_IP_FIREWALL=y        

Вам также придется взять Патч фильтрования моста и применить его к ядру. Пересоберите, установите новое ядро и перезагрузитесь.

Соединяем все вместе

Итак, теперь у нас имеются две сетевые карты, вновь собранное ядро и установленный пакет brcfg. Теперь вам понадобится стартовый скрипт, запускающий все это при загрузке системы. Я использовал загрузочные скрипты в стиле RedHat (/etc/rc.d). Специфические данные: сетевые адреса и маски я поместил в файл /etc/sysconfig/network:

 GATEWAY=192.168.2.129          # адрес DSL-маршрутизатора
 GATEWAYDEV=eth1                # сетевая карта, к которой подключен DSL
 ETH0_ADDR=192.168.2.130        # IP-адрес сетевой карты в локальной сети
 ETH0_MASK=255.255.255.192	# Сетевая маска нашей локальной сети
 ETH0_BROAD=192.168.2.191       # Широковещательный (broadcast) адрес локальной сети
 ETH1_ADDR=192.168.2.130        # IP-адрес сетевой карты, подключенной к DSL
                                # (он может отличаться от адреса карты в локальной сети)
 ETH1_MASK=$ETH0_MASK           # Сетевая маска на стороне DSL, она должна быть аналогична маске eth0
 ETH1_BROAD=$ETH1_BROAD         # то же самое и для широковещательного адреса

(Примечание переводчика: Видимо в эти настройки вкралась ошибка. В последней строке, по видимому, должно быть написано ETH1_BROAD=$ETH0_BROAD)

Затем я создал скрипт под именем /etc/rc.d/init.d/bridge, занимающийся настройкой моста:

#!/bin/sh
#
# bridge      Этот скрипт настраивает мост на DSL
#
# Описание: Скрипт использует brcfg для запуска моста и ifconfig для настройки сетевых карт
# имя процесса: bridge
# config: 

# Исходный текст библиотеки функций.
. /etc/rc.d/init.d/functions

# Исходная конфигурация сети.
. /etc/sysconfig/network

# Обработка способа вызова скрипта.
case "$1" in
  start)
        echo -n "Настройка моста (Configuring bridge): "
        ifconfig eth0 $ETH0_ADDR netmask $ETH0_MASK broadcast $ETH0_BROAD
        ifconfig eth1 $ETH1_ADDR netmask $ETH1_MASK broadcast $ETH1_BROAD
        route add $GATEWAY dev $GATEWAYDEV
        route add default gw $GATEWAY dev $GATEWAYDEV
        ifconfig eth0 promisc
        ifconfig eth1 promisc
        brcfg -enable
        echo
        ;;
  stop)
        # Остановка демонов.
        brcfg -disable
        ifconfig eth0 down
        ifconfig eth1 down
        ;;
  restart)
        $0 stop
        $0 start
        ;;
  status)
        ifconfig eth0
        ifconfig eth1
        brcfg
        ;;
  *)
        echo "Использование: bridge {start|stop|restart|status}"
        exit 1
esac

exit 0
 

Этот скрипт запускается при загрузке системы. Он выделяет адреса каждой карте, добавляет маршрут по умолчанию, указывающий на маршрутизатор DSL, добавляет специальный маршрут именно на DSL-маршрутизатор, устанавливает обе карты в режим "promisc", и затем включает мост. Я также создал ссылки на этот скрипт в следующих каталогах в /etc/rc.d:

 /etc/rc.d/rc0.d/K90bridge
 /etc/rc.d/rc1.d/K90bridge
 /etc/rc.d/rc2.d/S11bridge
 /etc/rc.d/rc3.d/S11bridge
 /etc/rc.d/rc4.d/S11bridge
 /etc/rc.d/rc5.d/S11bridge
 /etc/rc.d/rc6.d/K90bridge

В результате этого, скрипт запускается после запуска сети. Вам также необходимо убрать любое другое конфигурирование сетевых карт, которое делается в скрипте /etc/rc.d/init.d/network (в RedHat это достигается удалением файлов ifcfg-eth? в каталоге /etc/sysconfig/network-scripts/).

Чтобы проверить, все ли работает, я бы советовал загрузиться вам в однопользовательском режиме (укажите ядру опцию "single" , т.е. в lilo наберите "lilo: linux single"), а затем по одному загружать скрипты из каталога /etc/rc.d/rc3.d, пока не запустите мост. Запустив мост, проверьте, доступны ли вам некоторые машины (возможно вам придется использовать команду "ping -n", чтобы не включенный еще DNS не вызывал проблем):

  • используйте команду ping для DSL-маршрутизатора

  • используйте команду ping для локальной машины

  • используйте команду ping для машины в глобальной сети

Если вам доступны все три вида машин, то, скорее всего, все работает. Заметьте, что настройка моста практически не занимает времени при загрузке системы. Вы всегда можете проверить состояние моста командой brcfg без параметров.

Настройка Firewall

Вы все еще не настроили firewall (если таковой вам нужен) для предотвращения неавторизованного доступа к локальной сети. Патч "Фильтрование моста" , который вы установили, позволяет вам использовать новое встроенное правило "bridgein" в команде ipchains. Это правило используется, когда пакет передается по мосту от eth0 к eth1, или наоборот. Это правило не используется, когда пакет назначается самому firewall-у; вместо этого вам надо использовать правило input. Я не буду углубляться в детали настройки firewall; для этого читайте Howto: ipchains.

Настройка локальных машин

На каждой локальной машине вам надо просто правильно настроить IP-адрес, маску сети и использовать DSL-маршрутизатор в качестве шлюза по умолчанию. Firewall/мост будет направлять пакеты к DSL-маршрутизатору и от него.


Пред.НачалоСлед.
Мосты, Firewall-ы, и DSL-соединения Проблемы
VPS в 21 локации

От 104 рублей в месяц

Безлимитный трафик. Защита от ДДоС.

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...