Сеть на базе 100mb/s. В сеть входят два компьютера, comp1 и comp2
Comp1.
Intel Pentium III 900 mhz, hdd 80gb, ram 256, D-link 100mb/s
Os - Windows XP
Net Config
ip 192.168.0.2
netmask 255.255.255.0
gateway 192.168.0.68 (на этот параметр прошу обратить особое внимание,
он будет рассмотрен более подробно позже)
dns1 193.24.22.6
dns2 193.24.22.33
...................
Провайдер предоставляет услуги ADSL. Выделен один реальный ip адрес,
шлюз и два сервера dns. Необходимо предоставить пользователям локальной
сети, пользоваться услугами интернет. Для решения этой задачи, мы решили
применить следующую схему.
Установить сервер под управлением Os FreeBSD, снабдить его двумя
сетевыми интерфейсами, один из которых будет принадлежать сети
провайдера, второй - локальной сети.
Для решения поставленной задачи, нам необходимо сконфигурировать ядро
должным образом, что бы операционная система могла на уровне ядра
осуществлять форвардинг трафика, с одного сетевого интерфейса на другой.
Так же, так как адреса нашей локальной сети, являются серыми, то нам
необходимо применить технологию NAT ( Network Adress Translation) Для
этого в конфигурационный файл ядра( мы его назвали CUSTOM ) необходимо
включить следующие опции:
Конфигурация ядра.
cd /sys/i386/conf
cp GENERIC CUSTOM
vi CUSTOM
Далее мы добавим необходимый для решения поставленной задачи- опции.
options IPFIREWALL (включает FIREWALL на уровне ядра, то есть как только будет
приходить пакет, он тут же будет анализироваться ядром,
на предмет соответствия правилам безопасности)
options IPFIREWALL_VERBOSE_LIMIT=10 (включает ограничение записи пакетов в
лог, для избежания переполнения флудом)
options IPFIREWALL_DEFAULT_TO_ACCEPT ( включает по умолчанию полную прозрачность
файрвола, если эту опцию убрать, то до тех
пор пока вы не заведете правила, все пакеты будут
отбрасываться. Вообще говоря, есть два варианта
конфигурации Файрвола. Первый вы запрещаете весь
трафик, и затем вводя соответствующие правила
разрешаете то что считаете нужным. Второй вы
открываете весь трафик, и затем соответствующими
правилами, закрываете тот что считаете ненужным.)
options IPDIVERT ( Эта опция позволяет перенаправлять трафик с одного сетевого
интерфейса на другой )
Подсказка по vi:
* Для активации режима ввода нажмите клавишу "i"
* Для отмены режима ввода нажмите "Esc"
* Для удаления символа, стоящего перед курсором, в режиме просмотра, нажмите "x"
* Для удаления строки, на которой стоит курсор, нажмите два раза "d"
* Для перехода в коммандный режим, нажмите "Ctrl+':'"
* Для сохранения внесенных изменений, перейдите в коммандный режим, введите "w",
и затем enter
* Для выхода из редактора "vi", перейдите в коммандный режим, введите "q",
и нажмите enter
* Для выхода из редактора "vi" без сохранения, перейдите в коммандный режим,
введите "q!", и нажмите enter
Сборка:
cd /usr/src
make buildkernel KERNCONF=CUSTOM
make installkernel KERNCONF=CUSTOM
Вся операция на данном оборудовании занимает ~30 минут
Во время процесса компиляции ядра, вы можете внести изменения в
конфигурационный файлы системы. Alt+"номер функциональной клавиши"
переключит вас в другой сеанс работы с операционной системой.
Авторизируйтесь справами суперпользователя, и внесите нижеследующие
измения в конфигурационные файлы операционной системы.
Правка конфигурационных файлов операционной системы.
! Внимание нумерация строк включена для удобства комментариев, и должна
остсутствовать в файлах конфигурации !
1 При загрузке операционной системы запускает, файрвол ipfw
2 Конфигурирует файрволл при загрузке, в соответствии с правилами,
перечисленными в секции simple, файла /etc/rc.firewall
3 При загрузке включает демон natd
4 При загрузке запускает nat демон на интерфейсе rl0. Всегда демон NAT
должен запускаться на внешнем интерфейсе
5 Когда этот параметр установлен, то компьютер запускается в режиме ip
маршрутизатора, то есть включается возможность перенаправлять трафик
с одного сетевого интерфейса на другой.
6 При загрузке конфигурирует сетевой интерфейс rl0
7 При загрузке конфигурирует сетевой интерфейс vr0
8 Организует маршрут по умолчанию до указанного ip адреса.
2. Включен ли ADSL modem ? Если нет, то ни один индикатор на модеме не
будет активен.
3. Подключен ли ADSL модем к телефонной линии. Это можно проверить
следующим способом. На модеме имеется индикатор "Link" если этот
индикатор находиться в нестабильном состоянии ( постоянно мигает ),
значит модем не может установить связь с внешним миром.
4. Подключен ли модем к сетевому интерфейсу ПК. На модеме имеются
индикатор "LAN" Если он не активен, значит нет связи с сетевым
интерфейсом.
5. Проверте правильно ли вы подключили сетевые интерфейсы.
5.1 Дайте команду ifconfig -a. Изучите дамп команды. Проверте соответствует
ли дамп реальной ситуации.
5.2 Проврьте на те ли сетевые интерфейсы, вы подключили соответствующие провода.
Это стоит понимать, как например если на rl0(в нашем случае это внешний
сетевой интерфейс) мы подключаем провод с локальной сети.
6. Включен ли switch ?
Настройка comp1.
1. Открывает оснастку "Сетевое окружение".
2. "Отобразить сетевые подключения".
3. Щелкаем правой кнопкой мыши по оснастке "Подключение по локальной сети"
4. Выбираем пункт свойства
5. Встаем на пункт "Протокол интернета TCP/IP". Нажимаем кнопку "Свойства"
6. Прописываем следующие характеристики сети
IP-адрес 192.168.0.2
Маска подсети 255.255.255.0
Основной шлюз 192.168.0.68 Давайте рассмотрим этот параметр подробнее что бы
понять, как будет происходить взаимодействие сетей.
Допустим пользователь локальной сети, решил посмотреть содержимое сайта
some_site.com, адрес которого например 0.0.0.0 comp1 формирует пакет
на установление соединения с some_site. Мы не будем углубляться в
тонкости формирования, запроса на установления соединения с удаленным
хостом. Так как адрес some_site неизвестен, но и не принадлежит
локальной сети то основываясь на запись основной шлюз, пакет будет
послан на comp2 интерфейс vr0 192.168.0.68. Приняв пакет, ядро comp2
начинает его анализировать - ipfw. ipfw последовательно его сопоставляет
на соответствия правилам, начиная с правила с наименьшим номером, и
заканчивая самым последним в списке правил, номер которого будет самым
высоким.
В нашем случае есть правило
1400 341 95477 divert 8668 ip from any to via rl0 (см. подробнее о настройке ipfw)
Номер правила 1400. Правило гласит перенаправлять все пакеты по
протоколу TCP/IP на порт 8668 сетевого интерфейса rl0 Как только ipfw
дойдет до этого правила. Пакет тут же будет передан на порт 8668
сетевого интерфейса rl0.
Что бы лучше понять суть "divert 8668" - этой части правила. Наберите
cat /etc/services|grep natd.
В нашем случае получим следующий вывод
natd 8668/divert #Network Adress Translation
А так же вспомните запись в файле /etc/rc.conf
natd_interface="rl0"
Все это значит, что демон natd при старте системы запускается на сетевом
интерфейсе rl0. И будет прослушивать порт 8668
Как только приходит пакет на порт 8668, включается демон natd, суть
которого состоит в следующем. Наш пакет в заголовке будет содержать
адрес компьютера отправителя 192.168.0.2 Такова адреса в интернете не
существует
Поэтому демон natd заменит этот адрес на 193.24.23.35. А так же создаст
временную запись соответствия пакет-локальный адрес-измененный
адрес. И передаст его на сетевой интерфейс rl0. Далее вступает в
силу запись /etc/rc.conf
defaultrouter="193.24.23.33"
Суть этой записи состоит в том, что если приходит пакет с запросом к
неизвестному ip адресу, такой пакет будет отправляться на адрес
указанный в записи defultrouter. Если нет другого соответствующего
именно этой ситуации маршрута.
Таблицу маршрутов вы можете просмотреть по команде netstat -rn( см.
подробнее о настройке маршрутизации) Адрес 193.24.23.33 это адрес
шлюза провайдера. Вполне естественным будет выглядеть отправка этого
пакета, на шлюз провайдера, так как эти сетевые интерфейсы -сегменты
одной сети. Далее этот пакет достигнет пункта назначения, и пройдет
все шаги в обратном порядке.
На этом настройка сети заканчивается. После этого comp1 должен
беспрепятственно совершать запросы за прделы локальной сети.
Если в вашем случае, желаемый результат не достигнут, пишите мне на
email ZaikinM@mail.ru. В письме укажите характеристики вашей сети, так
же как приведены в самом начале данной статьи. А так же опишите проблему
и место в котором она возникает.
Автор будет благодарен за любую критику, и исправление допущенных им
ошибок и неточностей.