Настроение сейчас - ниже среднегоМногие новички в сетях и FreeBSD сталкиваются с вопросом:
“Как соединить две сети если сервер на FreeBSD имеет физическое подключение к обеим сетям ?”
Иными словами сервер FreeBSD должен выступать в роли router (маршрутизатор).
Итак, что мы имеем:
Ethernet сеть 
Две подсети класса “С” (/24 - маска 255.255.255.0) 
Сервер FreeBSD с двумя сетевыми картами 
Клиенты в обеих подсетях 
Наша задача, чтобы клиенты из подсети 192.168.1.0/24 могли обмениваться трафиком с клиентами из подсети 192.168.0.0/24.
Сначала настроим сервер FreeBSD и заставим его передавать (маршрутизировать) пакеты из одной подсети в другую.
За это отвечает параметр net.inet.ip.forwarding, посмотрим в какое значение он имеет:
[root@freebsd ~]# sysctl net.inet.ip.forwarding
net.inet.ip.forwarding: 0
На данный момент его значение “0″, а это значит, что сервер FreeBSD не будет выполнять маршрутизации.
Включим эту функцию:
[root@freebsd ~]# sysctl net.inet.ip.forwarding=1
net.inet.ip.forwarding: 0 -> 1
Так мы изменили значение с “0″ на “1″. Теперь нужно сделать, так чтобы после ребута это значение всегда было 1-цой. Это можно сделать 2-мя способами:
в файл /etc/rc.conf добавить строчку: gateway_enable=”YES” 
в файл /etc/sysctl.conf добавить строчку: net.inet.ip.forwarding=1 
На сервере у нас есть две сетевые карты и соответственно два интерфейса: em0 и em1.
Пусть em0 “смотрит” в сеть слева, а em1 в сеть справа. Назначим IP-адреса для интерфейсов FreeBSD сервера:
[root@freebsd ~]# ifconfig em0 add 192.168.1.1/24
[root@freebsd ~]# ifconfig em1 add 192.168.0.1/24
--------------------------------------------------------------------------------
Примечание:
Если на команду ifconfig вы получаете ответ:
command not found
воспользуйтесь командой
[root@virus ~]# whereis ifconfig
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz /usr/src/sbin/ifconfig
которая укажет где именно располагается утилита ifconfig
как видно из результата выполнения команды whereis утилита ifconfig находится /sbin/ifconfig
вводите полный путь до утилиты ifconfig, тогда надпись command not found появляться не будет и команда будет выполняться
--------------------------------------------------------------------------------
Посмотрим что получилось:
[root@freebsd ~]# ifconfig -a
em0: flags=8843 metric 0 mtu 1500
           ether 00:02:a5:4e:92:48
           inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255
           media: Ethernet autoselect (100baseTX )
           status: active
em1: flags=8802 metric 0 mtu 1500
           ether 00:02:a5:4e:92:49
           inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
           media: Ethernet autoselect (100baseTX )
           status: activeРассмотрим что все это значит :
em0 и em1 - имена сетевых интерфейсов
флаг UP - означает что сетевая карта включена, если этого флага не будет, то пакеты не будут приниматься на этом интерфейсе (для включения воспользуйтесь командой: ifconfig ИМЯ_ИНТЕРФЕЙСА up)
ether - это mac-адрес этой сетевой карты
inet - назначенный IP-адрес для этого интерфейса и broadcast адрес для этой подсети
media - информация о скорости и дуплексе интерфейса
status - текущий статус интерфейса. Если status: no carrier, то это означает, что на сетевой карте нет линка.
Сохраним настройки, чтобы IP-адреса назначались интерфейсам после ребута сервера, для этого необходимо добавить в файл /etc/rc.conf следующие строчки:
ifconfig_em0=”inet 192.168.1.1 netmask 255.255.255.0″
ifconfig_em1=”inet 192.168.0.1 netmask 255.255.255.0″
Если на сервере вы используете firewall, например ipfw, то добавим правила разрешающие проход пакетов из одной сети в другую:
ipfw add 100 allow ip from 192.168.1.1/24 to 192.168.0.1/24
ipfw add 110 allow ip from 192.168.1.0/24 to 192.168.1.1/24
Теперь настройте клиентские компьютеры:
Выставить IP-адрес из нужной подсети: 192.168.1.ХХХ или 192.168.0.ХХХ 
Выставить маску подсети 255.255.255.0 
Выставить шлюз по умолчанию: для подсети 192.168.1.ХХХ это 192.168.1.1, а для подсети 192.168.0.ХХХ это 192.168.0.1 (именно эти IP-адреса на интерфейсах нашего FreeBSD сервера) 
Наступило время проверить есть ли связь сервера и клиентов. Для этого возьмем заведомо рабочий клиентский компьютер из 2-х сетей, например это будут компьютеры с IP-адресами:
192.168.1.11 
192.168.0.15 
Воспользуемся утилитой ping на сервере:
[root@freebsd ~]# ping 192.168.1.11
Если результат будет таким:
PING 192.168.1.11 (192.168.1.11): 56 data bytes
64 bytes from 192.168.1.11: icmp_seq=0 ttl=64 time=0.466 ms
64 bytes from 192.168.1.11: icmp_seq=1 ttl=64 time=0.238 ms
64 bytes from 192.168.1.11: icmp_seq=2 ttl=64 time=0.272 ms
^C
— 192.168.1.11 ping statistics —
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.238/0.325/0.466/0.100 ms
Значит 
Читать далее...