ISP`s IT Аутсорсинг
Быстрый переход: Главная блога Главная сайта Форум
Если Вы чего то недопоняли или не нашли - задайте
вопрос на нашем форуме и мы попробуем Вам помочь.
Subnets.ru Регистрация IP и Автономных систем mega-net.ru

Архив за Август 16th, 2008

Добро пожаловать в блог! Надеемся, что Вы еще вернетесь.

Многие новички в сетях и 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-мя способами:

  1. в файл /etc/rc.conf добавить строчку: gateway_enable=»YES»
  2. в файл /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<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> 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 <full-duplex>)
           status: active
em1: flags=8802<UP,BROADCAST,SIMPLEX,MULTICAST> 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 <full-duplex>)
           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

Значит все хорошо и связь между сервером и клиентом есть. Проделайте тоже самое с 192.168.0.15.

Если результат ping отрицательный, то убедитесь что на клиентском компьютере правильно выставлен IP-адрес и маска подсети, а так же наличие линка на сетевой карте.

Теперь можно попробовать проверить связь между клиентскими компьютерами из разных подсетей.

Так же воспользуемся утилитой ping, но уже на компьютере с IP-адресом 192.168.1.11:

ping 192.168.0.15

Если ответ есть, то и свзяь между компьютерами из разных подсетей есть.

Если ответа нет, то воспользуемся утилитой tracert (для Windows) или traceroute (для FreeBSD):

tracert 192.168.0.15

Если сразу «идут звездочки»:

1 * * *

То проверьте правильность выставление шлюза по умолчанию.

Если трасса выглядит так:

1 192.168.1.1 (192.168.1.1) 0.421 ms 0.447 ms 0.485 ms
2 * * *

То пакет доходит до сервера, убедитесь что firewall сервера не блокирует пакеты и что клиентский компьютер с IP-адресом 192.168.0.15 правильно настроен и «видит» сервер (проверьте IP-адрес, маску подсети, шлюз по умолчанию и наличие ping до сервера)

Вы все проверили, но по прежнему ничего не работает ? Воспользуемся утилитой tcpdump на сервере, которая покажет пакеты проходящие через интерфейсы сервера:

[root@freebsd ~]# tcpdump -ni em0
и
[root@freebsd ~]# tcpdump -ni em1

Запустите пинг с одного клиентского компьютера из одной подсети на другой клиентский компьютер в другой подсети (как мы делали в примерах выше) и смотрите в вывод команды tcpdump на сервере, который будет примерно таким:

[root@freebsd ~]# tcpdump -ni em0

12:17:23.398376 IP 192.168.1.11 > 192.168.0.15: ICMP echo request, id 49222, seq 0, length 64
12:17:24.399906 IP 192.168.1.11 > 192.168.0.15: ICMP echo request, id 49222, seq 1, length 64

Т.е. компьютер 192.168.1.11 посылает пакет ICMP echo request до компьютера 192.168.0.15, но ответов мы не видим. Посмотри передает ли сервер эти пакеты на другую сетевую карту:

[root@freebsd ~]# tcpdump -ni em1

12:21:18.167017 IP 192.168.1.11 > 192.168.0.15: ICMP echo request, id 50246, seq 4, length 64
12:21:19.168022 IP 192.168.1.11 > 192.168.0.15: ICMP echo request, id 50246, seq 5, length 64

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

Когда все работает вывод будет таким:

12:21:17.165998 IP 192.168.1.11 > 192.168.0.15: ICMP echo request, id 50246, seq 3, length 64
12:21:17.171199 IP 192.168.0.15 > 192.168.1.11: ICMP echo reply, id 50246, seq 3, length 64
12:21:18.167017 IP 192.168.1.11 > 192.168.0.15: ICMP echo request, id 50246, seq 4, length 64
12:21:18.171353 IP 192.168.0.15 > 192.168.1.11: ICMP echo reply, id 50246, seq 4, length 64

Мы видим стандартый вывод «запрос-ответ», когда на пакет ICMP echo request приходит ответ в виде пакета ICMP echo reply

Ссылки:

З.Ы. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА !

Автор: Николаев Дмитрий (virus (at) subnets.ru)
Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 7, среднее: 4,43 из 5)
Загрузка...
Отправить на почту Отправить на почту

У Вас может возникнуть необходимость поднять vlan и trunk на оборудовании Juniper, например маршутизаторы:

Juniper серии M7i, M10i или серия MX

Как это сделать ?

Первое что мы делаем это переходим в режим конфигурации:

configure

Как вы наверняка заметили, что конфиг Juniper похож на конфиг DNS серверов и состоит из секций.

Перейдем в секцию конфигурации интерфейсов:

edit interfaces

Дадим команду show чтобы посмотреть какие интерфейсы у нас есть:

show

ge-0/0/0 {

}
fxp0 {
      unit 0 {
      }
}
lo0 {
     unit 0 {
         family inet {
             address 127.0.0.1/32;
        }
     }
}

ge-0/0/0 — это наш гигабитный интерфейс на котором мы и будем поднимать vlan
fxp0 — это managment интерфейс (встроенный)
lo0 — это соответственно Loopback интерфейс

Приступим собственно к настройке, возьмем для примера создание 2-х vlan — 5 и 10 на гигабитном интерфейсе ge-0/0/0.

Для того чтобы поднять на интерфейсе ge-0/0/0 vlan`ы нам нужно в «корне» этого интерфейса выставить vlan-tagging, т.е. указать что этот интерфейс будет trunk`ом и будет принимать vlan`ы:

[edit interfaces]
root@juniper#
set ge-0/0/0 vlan-tagging

Следующий шаг это создание sub interface (саб-интерфейсов):

[edit interfaces]
root@juniper#
set ge-0/0/0 unit 5

Тем самым мы создали саб-интерфейс под номером 5-ть. Номера саб-интерфейсов никак не привязаны к номеру vlan. Вы можете задавать любые значения, я (мне так удобней) делаю саб-интерфейсы с номерами vlan, некоторые делаю саб-интерфейсы давая номера по порядку. Тут дело за вами.

Теперь зададим созданному саб-интерфейсу номер vlan:

[edit interfaces]
root@juniper#
set ge-0/0/0 unit 5 vlan-id 5

Выставим ему описание:

[edit interfaces]
root@juniper#
set ge-0/0/0 unit 5 description «My 5 vlan»

Укажем его IP-адрес:

[edit interfaces]
root@juniper#
set ge-0/0/0 unit 5 family inet address 192.168.1.1/24

Посмотрим что у нас получилось:

show

ge-0/0/0 {
   vlan-tagging;
   unit 5 {
       description "My 5 vlan";
       vlan-id 5;
       family inet {
            address 192.168.1.1/24;
       }
}

Теперь по аналогии создадим vlan 10, но немного упростим себе жизнь дабы вводить команду поменьше.

Для этого перейдем в конфигурации чуть глубже, непосредственно в секцию интерфейса ge-0/0/0:

[edit interfaces]
root@juniper#
edit ge-0/0/0

[edit interfaces ge-0/0/0]
root@juniper#

Тем самым нам уже не будет требоваться вводить имя интерфейса при каждой команде, а так же мы введем все сразу одной строкой:

[edit interfaces ge-0/0/0]
root@juniper#
set unit 10 vlan-id 10 description «My 10 vlan» family inet address 192.168.2.1/24

Так мы сразу выполнили все четыре пункта:

  1. создали саб-интерфейс
  2. задали номер влана
  3. задали описание
  4. назначили IP-адрес

Посмотрим что же у нас получилось:

show

ge-0/0/0 {
   vlan-tagging;
   unit 5 {
       description "My 5 vlan";
       vlan-id 5;
       family inet {
            address 192.168.1.1/24;
       }
   unit 10 {
       description "My 10 vlan";
       vlan-id 10;
       family inet {
            address 192.168.2.1/24;
       }
}

Вот и все, теперь интерфейс ge-0/0/0 принимает vlan 5 и 10 и вы можете «подавать» в этот интерфейс trunk в котором прописать эти vlan`ы.

Осталось проверить все ли правильно и не ошиблись ли вы:

[edit interfaces ge-0/0/0]
root@juniper#
commit check

Если в ответ появится configuration check succeeds то все ОК, конфигурация верна. Осталось её закомитить:

[edit interfaces ge-0/0/0]
root@juniper#
commit comment «Set up two sub interfaces on ge-0/0/0»

Конфигурация применится на Juniper и сохранится с указанным комментарием.


Заметка:
Juniper сохраняет до 50-ти конфигураций которые вы commit`ите. Посмотреть можно их список:
root@juniper> show system commit

Если вы находитесь в режиме конфигурирования, то нужно добавлять слово «run»:
[edit]
root@juniper#
run show system commit


Ссылки:

З.Ы. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА !

Автор: Николаев Дмитрий (virus (at) subnets.ru)
Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 9, среднее: 4,44 из 5)
Загрузка...
Отправить на почту Отправить на почту