Брррр ... Собрал все в кучу. Давай вспомним условие задачи:
>Уважаемые читатели этого сообщения
>проблема следующая :
>в сетке нету TCP/IP протокола (не разрешают ставить), машины Windows95
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Обратим внимание
>коннектятся между собой по IPX протоколу как клиенты Mikrosoft...
>Необхоимо чтобы машины в подсетке 40 видели подсетку 41 и наоборот...
>КАК перебросить пакеты???
>Итак, вопрос исчерпан :)
>Для FreeBSD 4.5
>Решение следущее (советую выполнять в той же очередности...):
Я бы не советовал ;)
>1.
>В конфигурации ядра
>options INET
^^^^^^^^^^^^^^ У нас же НЕТ IP протокола ?!
>options IPX
>options IPFIREWALL
>IPFIREWALL_DEFAULT_TO_ACCEPT
IPFW обрабатывает исключительно IP пакеты. DEFAULT_TO_ACCEPT не оказывает на прохождение IPX пакетов совершенно никакого действия.
>options BRIDGE # !!! Внимание! Нигде в доке этого не сказано!!!
Естественно не сказано. У меня откровенно говоря вообще вызывает крайнее недоумение. Использование моста превращает сервер в этакий 2-х портовый Ethernet-переходник стоимостью около 500$. Если я правильно понимаю, топология сети получается примерно такая:
Подсеть 40 ======= FreeBSD Bridge ======= Подсеть 41
А не проще ли объединить прямым шнурком обе подсетки в 1 ?
Ни Интернет сервисы, ни файловый сервер нам не нужены, нужна просто 1 рабочая группа MS Network. Так зачем городить весь огород, и вообще зачем тут Unix ?!
>pseudo-device ether
>pseudo-device ef
> options ETHER_II
> # enable Ethernet_II frame
> options ETHER_8023 #
>enable Ethernet_802.3 (Novell) frame
> options ETHER_8022 #
>enable Ethernet_802.2 frame
> options ETHER_SNAP #
>enable Ethernet_802.2/SNAP frame
Зачем тебе все 4 типа фреймов ?! Ты доку на страничке И.Паскаля читал ?
Для транспорта IP используются Ethernet II фреймы. Для IPX по умолчанию 802.2, а автоапределение типа фреймов у Win95/98 клиентов работает криво. Поэтому, чтобы не задавать конфигурацию каждого клиента вручную, тебе понадобятся:
options ETHER_8022 # < Для IPX
options ETHER_II # < Для IP, которого у тебя кстати нет ;)
># У меня две карточки ed - здесь нужно прописать
>вместо них
># Ваши...
># 'device ed' requires 'device miibus'
>device miibus # MII bus support - надо так надо
>:)
>device ed0 at isa? port 0x300 irq 5 iomem 0xd8000
>device ed1 at isa? port 0x320 irq 10 iomem 0xd8000
Ну это естественно ...
>2.
>В loader.conf:
> if_ef_load="YES"
Ага ... Сначала ты собираешь все в ядро, а потом пытаешься подгрузить внешний модуль. Масло маслянное. Бессмысленно
>3.
>В /etc/rc.conf:
>network_interfaces="lo0 ed0 ed1 ed0f2 ed1f2"
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Не нужно , достаточно того, что ниже
>ifconfig_ed0f2_ipx="ipx 0x00000040"#в Win95 тип пакета 802.2 адрес сети 40
>ifconfig_ed1f2_ipx="ipx 0x00000041"#в Win95 тип пакета 802.2 адрес сети 41
^^^^^^^^^^^^^ тип _фрейма_ 802.2
Вообще-то, виндовый клиент для Novell сетей должен определять его автоматически. Но в ходе экспериментов удалось выяснить, что нормально определяется только 802.2 фрейм, а FreeBSD использует Ethernet II. Если для каждого клиента выставить вручную в настройках сетевой карты тип фрейма Ethernet II, то все будет работать и без поддержки 802.2. Но помоему легче 1 раз пересобрать ядро, чем возиться с каждым клиентом.
>ipxgateway_enable="YES" # Set to YES to enable IPX routing.
>ipxrouted_enable="YES" # Set to YES to run the IPX routing daemon.
Тут все верно.
>firewall_enable="YES"
>firewall_type="open"
ЗАЧЕМ фильтр для IP пакетов, которые у тебя не ходят ?!
>В файл /etc/sysctl.conf
>net.link.ether.bridge=1
>net.link.ether.bridge_cfg=ed0f2:0,ed1f2:0
>net.link.ether.bridge_ipfw=1
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Даже если забыть про то, что BRIDGE бесполезен, то почитав man bridge, можно узнать, что все НЕ IP пакеты пропускаются по умолчанию:
net.link.ether.bridge_ipfw
set to 1 to enable ipfw(8) filtering on bridged packets. Note
that ipfw(8) rules only apply to IP packets. Non-IP packets ar
accepted by default. See the BUGS section and the ipfw(8) man-
page for more details on the interaction of bridging and the
firewall.
>Вот вроде и все :)
Действительно, собрал в кучу все что можно.
>КТО МОЖЕТ ОКАЗАТЬ ПОМОЩЬ ПО НАСТРОЙКЕ ipfw типа MAC to mac, MAC
>to any,
>any to MAC и просто с карты на карту НИЗКИЙ ПОКЛОН!
Опять же почитав man ipfw:
{ MAC | mac } dst-mac src-mac
Match packets with a given dst-mac and src-mac addresses, speci-
fied as the any keyword (matching any MAC address), or six groups
of hex digits separated by commas, and optionally followed by a
mask indicating how many bits are significant, as in
MAC 10:20:30:40:50:60/33 any
Note that the order of MAC addresses (destination first, source
second) is the same as on the wire, but the opposite of the one
used for IP addresses.
mac-type mac-type
Matches packets whose Ethernet Type field corresponds to one of
those specified as argument. mac-type is specified in the same
way as port numbers (i.e. one or more comma-separated single val-
ues or ranges). You can use symbolic names for known values such
as vlan, ipv4, ipv6. Values can be enter as decimal or hexadeci-
mal (if prefixed by 0x), and they are always printed as hexadeci-
mal (unless the -N option is used, in which case symbolic resolu-
tion will be attempted).
Но это, заметь, опять только для IP пакетов. Для IPX не прокатит.
В качестве заключения - у меня FreeBSD стоит гейтом между 2-мя IPX сетями, в одной из который живет файловый сервер под нетварью. Все прекрасно работает паралельно с IP. Конфигурация в моем посте выше.
подсеть 0xFEE1C001 ==== FreeBSD ==== подсеть 0xDEADBEAF ==== NetWare 4.12
/Удачи