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

Метки статьи: ‘FreeBSD’

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

Кратко о BIRD:

 The BIRD project aims to develop a fully functional dynamic IP routing daemon.

 - Both IPv4 and IPv6
 - Multiple routing tables
 - BGP
 - RIP
 - OSPF
 - Static routes
 - Inter-table protocol
 - Command-line interface
 - Soft reconfiguration
 - Powerful language for route filtering

 WWW: http://bird.network.cz/
 Пользователи FreeBSD могут найти демоны BIRD в портах:
    IPv4 версия: /usr/ports/net/bird
    IPv6 версия: /usr/ports/net/bird6

С момента размещения статьи Используем BIRD для создания «пограничного» маршрутизатора размещенную zaikini, я все мечтал найти время и уделить его изучению и пробам BIRD.

О демоне BIRD народ хорошо отзывается, да и многие IX`ы держат свои Route Server`а именно на этом демоне.

И вот наконец мне предоставилась такая возможность. Для одного проекта понадобилось автоматом генерить blackhole маршруты для BGP и тут я вспомнил что как раз давно хотел попробовать BIRD.

Поднял на тестовом стенде из тройки виртуальных машин:

  • FreeBSD 9.1 + BIRD 1.3.11
  • FreeBSD 8.4 + BIRD 1.3.11
  • FreeBSD 7.2 + BIRD 1.3.2
  • FreeBSD 7.2 + BIRD 1.3.11

Погонял BGP и OSPF в различных конфигурациях и схемах — понравилось. Даже больше скажу — очень понравилось. Есть конечно в BIRD некоторые вещи пока не совсем мне понятные или как это сказать не до конца логичные, НО в целом абалденный демон. Респект и уважуха разработчикам BIRD.

Итоговый «приговор» по BIRD: must have.

До сего момента мы работали на Quagga, но она иногда реально достает своими непонятными приколами, когда после реконфига чего либо помогает тока рестарт демонов дабы эти изменения наконец сказались.

Рестарт bgpd и о чудо ! Все непонятки устраняются и все работает как и положено. Но сейчас не об этом речь 🙂

Вообщем пересели мы на BIRD. Что дальше ? А дальше, как это водится, понадобился Looking Glass для BIRD`а, не всегда ж есть желание/возможность лазать в консоль 🙂

Погуглил… нагуглил только sileht/bird-lg и ulg—universal-looking-glass — оба написаны на python.

Попытки найти нечто подобное лукинг глассу для Cisco/Quagga/Juniper и на PHP мне не удалось.

«Ну что ж… Толи лыжи, толи … получается что нету… значит надо написать самому.» — сказал я и приступил к реализации :).

Через некоторое время первая версия LG на PHP была готова и протестирована.

Пока из функционала было реализовано самое необходимое — возможность посмотреть маршрут, пингать и трасернуть.

Потом я подумал о том, что скорее всего я не один такой, кто не хочет/может пользоваться LG на питоне, так же о (похоже) единственно существующем варианте LG для BIRD`а, а так же о том что сам пользуюсь бесплатным ПО, которое пишут и выкладывают другие и … и решил что нужно так же поделиться с общественностью своей разработкой.

Итак представляю вам свой труд и новый проект в рамках проекта Subnets.ru: BIRD Looking Glass на PHP.

Для работы LG вам необходимо:

Более детально написано в README и ошибках, которые, если чего то не хватает, вам будет выдавать web интерфейс LG после его установки.

Я не смотрю на свои возможности через «розовые очки», я больше сис.админ чем программист, но все же кое что напрограммить и я могу 🙂

Лично я свою первоочередную задачу (наличие хоть какого LG для BIRD на PHP) решил. Возможно сей «продукт» поможет и вам.

Это явно не последняя версия этого LG, как снова дойдут руки — буду допиливать функционал далее, благо дело мыслей много, а желаний (как это обычно и бывает) ещё больше :).

В LG встроен механизм проверки наличия новой версии, поэтому если таковая появится, то те кто установит и будет использовать узнают об этом зайдя на главную страницу своего LG.

Надо ли пояснять, что для функционирования сего механизма сервер с LG должен иметь доступ к Инету, а если быть точнее то к URL`у http://bird-lg.subnets.ru/.

Работа LG проверена под OS FreeBSD, если у вас другая ось то вы как раз проверите сами.

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

Автор: Николаев Дмитрий (virus (at) subnets.ru)

Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 2, среднее: 5,00 из 5)
Загрузка...
Отправить на почту Отправить на почту
Пришла пора апгрейда одного из серверов.

Ему на замену пришел свеженький IBM x3250 M4 (P/N 258372G) c контроллером ServeRAID BR10il (LSISAS 1064E B3, P/N 49Y4737).
На болванку была нарезана FreeBSD 8.3-RELEASE-amd64, болванка вставлена в DVD привод, пошел процесс загрузки системы и… облом – еще до появления меню с опциями ловим какой-то kernel panic, информацию о причинах которого не успеваем увидеть на мониторе из-за мгновенного ухода сервера в ребут.

Загрузка без ACPI помогла узреть причину паники:
NMI ISA b8, EISA ff
RAM parity error, likely hardware failure

Ну, думаем, битая память приехала. Удалили планку с дополнительными 4Гб. Результат при загрузке FreeBSD не изменился. Поменяли местами планки памяти – эффект нулевой.
Попробовали загрузиться с установочных дисков с другими версиями FreeBSD (7.3, 8.2, 9.0 amd64/i386) – результат был неизменным: kernel panic.

Решили убрать RAID-контроллер – без него загрузка с любого дистрибутива FreeBSD проходила абсолютно нормально. «Узкое место» было найдено. Для того, чтобы определить «живость» контроллера решили попробовать поставить другую систему – и, о чудо, CentOS расчудесно встал с первого раза. Параллельно был найден топик на форуме FreeBSD с симптомами, на 100% совпадающими с нашим случаем. Решили попробовать загрузится с уже установленной системы с ядром, включающим в себя минимальное кол-во устройств и опций. Засада была в том, что жесткие диски были SAS, а у нас не было под рукой ни одной машинки с SAS контроллером.
Выходом стала установка FreeBSD на USB флешку. После установки было собрано ядро со следующим конфигом:
cpu             HAMMER
device          acpi
device          ata
device          atadisk
device          atapicd
device          atkbd
device          atkbdc
device          bpf
device          cd
device          ch
device          cpufreq
device          da
device          ehci
device          em
device          ether
device          firmware
device          gif
device          kbdmux
device          loop
device          md
device          miibus
device          mpt
device          ohci
device          pass
device          pci
device          psm
device          pty
device          random
device          sa
device          sc
device          scbus
device          ses
device          splash
device          tun
device          uart
device          uhci
device          uhid
device          ukbd
device          ulpt
device          umass
device          usb
device          vga
device          vlan
ident           MINI
makeoptions     DEBUG=-g
options         ATA_STATIC_ID
options         AUDIT
options         CD9660
options         COMPAT_43TTY
options         COMPAT_FREEBSD32
options         COMPAT_FREEBSD4
options         COMPAT_FREEBSD5
options         COMPAT_FREEBSD6
options         COMPAT_FREEBSD7
options         FFS
options         GEOM_LABEL
options         GEOM_PART_GPT
options         HWPMC_HOOKS
options         INCLUDE_CONFIG_FILE
options         INET
options         KBD_INSTALL_CDEV
options         KDB
options         KDB_TRACE
options         KTRACE
options         MAC
options         MD_ROOT
options         MSDOSFS
options         NFSCLIENT
options         NFSLOCKD
options         NFSSERVER
options         NFS_ROOT
options         P1003_1B_SEMAPHORES
options         PREEMPTION
options         PRINTF_BUFR_SIZE=128
options         PROCFS
options         PSEUDOFS
options         SCHED_ULE
options         SCSI_DELAY=5000
options         SMP
options         SOFTUPDATES
options         STACK
options         SYSVMSG
options         SYSVSEM
options         SYSVSHM
options         UFS_ACL
options         UFS_DIRHASH
options         UFS_GJOURNAL
options         USB_DEBUG
options         _KPOSIX_PRIORITY_SCHEDULING
options         IPDIVERT
options         IPFIREWALL
options         IPFIREWALL_FORWARD
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT=100
options         IPSTEALTH
И FreeBSD смогла загрузиться с этим ядром без вопросов. Из двух дисков был организован (в биосе) RAID-1  для установки системы, а два оставшихся подключены as is:
mini# mptutil show config
mpt0 Configuration: 1 volumes, 4 drives
    volume 0 (465G) RAID-1 OPTIMAL spans:
        drive 1 (465G) ONLINE <IBM-ESXS ST9500620SS BD26> SAS
        drive 0 (465G) ONLINE <IBM-ESXS ST9500620SS BD26> SAS
        spare pools: 0
    drive da2 (465G) ONLINE <IBM-ESXS ST9500620SS BD26> SCSI-6
    drive da3 (465G) ONLINE <IBM-ESXS ST9500620SS BD26> SCSI-6
Для установки FreeBSD сначала нужно понять, на какой именно диск ее следует устанавливать. В этом вопросе нам поможет camcontrol:
#camcontrol devlist
<Multiple Card  Reader 1.00>       at scbus2 target 0 lun 0 (da0,pass0)
<LSILOGIC Logical Volume 3000>     at scbus0 target 6 lun 0 (pass1,da1)
<IBM-ESXS ST9500620SS BD26>        at scbus0 target 8 lun 0 (pass2,da2)
<IBM-ESXS ST9500620SS BD26>        at scbus0 target 9 lun 0 (pass3,da3)
Итак, устанавливать будем на da1. Поехали:
Создаем разметку для схемы MBR:
mini#  gpart create -s mbr da1
da1 created
Создадим партицию с типом freebsd:
mini# gpart add -t freebsd da1
da1s1 added
На созданной партиции создадим дополнительную разметку для BSD схемы:
mini# gpart create -s bsd da1s1
da1s1 created
Создадим партицию для /
mini# gpart add -s 1G -t freebsd-ufs da1s1
da1s1a added
Создадим партицию для свопа:
mini# gpart add -s 8G -t freebsd-swap da1s1
da1s1b added
Создадим остальные партиции:
mini# gpart add -s 10G -t freebsd-ufs da1s1
da1s1d added
mini# gpart add -s 10G -t freebsd-ufs da1s1
da1s1e added
mini# gpart add -s 20G -t freebsd-ufs da1s1
da1s1f added
Запишем загрузчик
mini# gpart bootcode -b /boot/mbr da1
Сделаем активным первый раздел:
mini# gpart set -a active -i 1 da1
Посмотрим на результат нашей работы:
Mini# gpart show da0
=>       63  976562113  da0  MBR  (465G)
         63  976559157    1  freebsd  [active]  (465G)
  976559220       2956       — free —  (1.5M)
mini# gpart show da1s1
=>        0  976559157  da1s1  BSD  (465G)
          0    2097152      1  freebsd-ufs  (1.0G)
    2097152   16777216      2  freebsd-swap  (8.0G)
   18874368   20971520      4  freebsd-ufs  (10G)
   39845888   20971520      5  freebsd-ufs  (10G)
   60817408   41943040      6  freebsd-ufs  (20G)
Отформатируем наши партиции:
mini# newfs /dev/da1s1a
mini# newfs -U /dev/da1s1d
mini# newfs -U /dev/da1s1e
mini# newfs -U /dev/da1s1f
Смонитруем da1s1a (наш будущий /) в /mnt
mini# mount /dev/da1s1a /mnt
Создадим директории:
mini# mkdir /mnt/usr
mini# mkdir /mnt/var
mini# mkdir /mnt/tmp
Смонтируем остальные разделы в соответствующие вновь созданные директории:
mini# mount /dev/da1s1d /mnt/var
mini# mount /dev/da1s1e /mnt/tmp
mini# mount /dev/da1s1f /mnt/usr
В нашем случае установка FreeBSD будет производиться по сети с удаленного ftp-сервера, так что мы предварительно настроили сетевую карту для обеспечения серверу доступа в интернет.
Далее запускаем sysinstall и переходим в пункт Custom.
В Options изменяем значение Install Root на /mnt
В Distributions выбираем Developer
В Media я выбрал установку по сети с ftp-сервера: FTP Passive (ftp2.ru.freebsd.org)
Commit’им.
После окончания установки, выходим из sysinstall и изменим корневой каталог:
mini# chroot /mnt/ /bin/sh
Перейдем в директорию с конфигом ядра:
mini# cd /sys/amd64/conf
Создадим ядро (в нашем случае мы ему дали название MINI), соберем и установим наше минималистичное ядро:
mini# config MINI
mini# cd ../compile/MINI
mini# make cleandepend && make depend
mini# make -j8
mini# make install
Создадим файл /etc/fstab, с содержанием, соответствующим выполненным нами ранее действиям:
# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/da0s1b             none            swap    sw              0       0
/dev/da0s1a             /               ufs     rw              1       1
/dev/da0s1d             /var            ufs     rw              2       2
/dev/da0s1e             /tmp            ufs     rw              2       2
/dev/da0s1f             /usr            ufs     rw              2       2
Меняем рутовый пароль:
mini# passwd root
Перегружаемся в нашу свежеустановленную систему:
mini# shutdown –r now
Вот такая нелегкая установка системы вышла.
Дополнительная информация:
1. man 8 gpart

 

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

Автор:  Панфилов Алексей (lehis (at) subnets.ru)

Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (Еще не голосовали)
Загрузка...
Отправить на почту Отправить на почту

Задача

Обеспечить функционирование второго канала (backup) в Интернет для офиса при использовании канала от Yota.

Для обеспечения NAT`а возьмем ng_nat.

Железо

  • USB-модем Samsung SWC-U200
  • Сервер FreeBSD 8.2-STABLE

Реализация

Для USB-модемов Samsung SWC-U200 и Samsung SWC-E100 в портах появились userland-драйвер, находящийся в /usr/ports/net/lvwimax.

Инсталлируем их обычным способом:

# cd /usr/ports/net/lvwimax/
# make install clean

Перезапускаем демон отслеживания изменения состояния устройств:

# /etc/rc.d/devd restart

Для автостарта драйвера при загрузке системы добавим в /etc/rc.conf:

lvwimax_mac_address=»60:D0:A9:XX:YY:ZZ»

lvwimax_enable=»YES»

где 60:D0:A9:XX:YY:ZZ — MAC адрес USB-модема (его можно посмотреть либо на коробочке либо в личном кабинете).

 

Для логгирования отладочной инфы в отдельные файлы в начало /etc/syslog.conf следует добавить:

local6.err              /var/log/lvwimax_err.log

local6.info             /var/log/lvwimax_info.log

local6.debug            /var/log/lvwimax_debug.log

Создать файлы лога:

# touch /var/log/lvwimax_err.log

# touch /var/log/lvwimax_info.log

# touch /var/log/lvwimax_debug.log

и перезапустить syslogd:

# /etc/rc.d/syslogd restart

Загружаем модули ядра для работы NAT:

# kldload ng_ipfw

# kldload ng_nat

Для загрузки модулей при старте системы добавим в /boot/loader.conf:

ng_ipfw_load=»YES»

ng_nat_load=»YES»

 

dhclient вызывает скрипт конфигурации сетевых параметров — dhclient-script, который после конфигурирования сетевого интерфейса смотрит, есть ли файл с именем /etc/dhclient-exit-hooks. Если файл находится, то он запускается на исполнение.

Этим мы и воспользуемся для изменения конфигурации NAT после получения IP-адреса по DHCP от провайдера.

Создадим файл /etc/dhclient-exit-hooks с содержанием:

#!/bin/sh

if [ "$reason" = "REBOOT" -o "$reason" = "BOUND" -o "$reason" = "RENEW" -o "$reason" = "REBIND" ]; then

ipfw -q delete 410

ipfw -q delete 420

ipfw -q delete 430

if ngctl show Yota_nat: >/dev/null 2>&1; then

/usr/sbin/ngctl shutdown Yota_nat:

echo "Destroy old nat config was complete" >>/var/log/dhc.log

fi

/usr/sbin/ngctl mkpeer ipfw: nat 70 out

/usr/sbin/ngctl name ipfw:70 Yota_nat

/usr/sbin/ngctl connect ipfw: Yota_nat: 80 in

/usr/sbin/ngctl msg Yota_nat: setaliasaddr $new_ip_address

echo "Create nat config was complete" >>/var/log/dhc.log

 ipfw -q add 410 netgraph 80 ip from any to $new_ip_address via tap0 in

ipfw -q add 420 netgraph 70 ip from table"(99)" to any via vlan10 in

ipfw -q add 430 fwd $new_routers ip from $new_ip_address to any

echo "Apply ipfw rules for nat was complete" >>/var/log/dhc.log

 fi

Сделаем скрипт исполняемым:

# chmod a+x /etc/dhclient-exit-hooks

В нем вся «магия» по управлению конфигурацией NAT при изменении адреса после работы dhclient’a:

удаление старых правил ipfw, удаление старой конфигурации NAT, создание новой конфигурации NAT, применение новых правил ipfw.

При этом маршрут по умолчанию не изменяется.

 

Вставляем USB-модем в сервер и в путь:

# /usr/local/etc/rc.d/lvwimax start

Смотрим в ifconfig для проверки наличия интерфейса и полученного по DHCP IP-адреса:

tap0: flags=8843 metric 0 mtu 1386
        options=80000
        ether 60:d0:a9:f9:4a:74
        inet6 fe80::62d0:a9ff:fef9:4a74%tap0 prefixlen 64 scopeid 0x12
        inet 10.184.244.147 netmask 0xfffffc00 broadcast 10.184.247.255
        nd6 options=3
        Opened by PID 63322

Осталось в table(99)  поместить хосты или подсети для доступа в интернет через Yota.

Ссылки

P.S. Естественно, что данный способ будет работать с любым провайдером, для подключения к которому используется dhclient.

P.S.S. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА ! Уважайте чужой труд.

Автор: Панфилов Алексей (lehis (at) subnets.ru

 

Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 1, среднее: 5,00 из 5)
Загрузка...
Отправить на почту Отправить на почту

Произошел очередной инцидент с исходящим VoIP-трафиком в Колумбию, Гандурас и прочую Зимбабву с аккаунта одного из клиентов. Система мониторинга своевременно оповестила нас о происходящем. Аккаунт был заблокирован до выяснения обстоятельств.В процессе разборов было выяснено, что в этот раз пароли были достаточно криптостойкими, логины более 8 символов да и попыток подбора вообще не было — злоумышленники просто авторизовались с пакистанских адресов и стали понемногу сливать трафик. Клиент попросил реализовать возможность авторизации только с его IP адресов.

В данном случае авторизация проходит на OpenSER.

Решением стало использование функции allow_uri модуля permissions.

Функция работает следующим образом:

при поступлении запроса на авторизацию создается пара в форме (From URI и псевдопеременная) и

  • авторизация разрешается, если пара соответствует хотя бы одной записи в файле allow;
  • авторизация запрещается, если пара соответствует хотя бы одной записи в файле deny;
  • авторизация разрешается (действие по умолчанию).

И все было бы совсем просто, если бы клиент не находился за NAT’ом…

Для решения проблемы авторизации из-за NAT`а на OpenSER проанализируем при помощи функции nat_uac_test запрос на регистрацию пришел из-за NAT или нет. Если клиент находится за NAT’ом, то вызываем функцию fix_nated_register для добавления к полю Contact атрибута «received», содержащего реальный IP, при ответе 200 OK и сохранения в локальной БД OpenSER’a.

Файлы с правилами allow и deny, с именем my-register, ищутся в директории с конфигом OpenSER с соответствующими расширениями.

В моем случае это будут:

/usr/local/etc/openser/my-register.allow
«^sip:00412345678» : «^192\.168\.137\.250$»

/usr/local/etc/openser/my-register.deny
«^sip:00412345678» : ALL

Немного изменяем конфиг самого OpenSER, загружаем модуль:

loadmodule «permissions.so»

…skiped…

а так же для метода REGISTER:

if(nat_uac_test("19")){
     xlog("L_INFO", "NATed REGISTER [$fU@$si]\n");
     fix_nated_register();
}
if (allow_uri("my-register","$si")){
      if(!www_authorize("sip.mydomain.com", "subscriber")){
          xlog("L_NOTICE", "Register authentication failed - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
          www_challenge("sip.mydomain.com", "0");
          exit;
      }
}else{
      xlog("L_NOTICE", "Register denied by config - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
      sl_send_reply("403", "Register authentication failed");
      exit;
}

…skiped…

и для метода INVITE:

if(nat_uac_test("19")){
     xlog("L_INFO", "NATed REGISTER [$fU@$si]\n");
     fix_nated_register();
}
if (allow_uri("my-register","$si")){
     if(!proxy_authorize("sip.mydomain.com", "subscriber")){
           xlog("L_NOTICE", "Proxy authentication failed - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
           proxy_challenge("sip.mydomain.com", "0");
           exit;
      }
}else{
     xlog("L_NOTICE", "Proxy denied by config - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
     sl_send_reply("403", "Proxy authentication failed");
     exit;
}

Рестартим OpenSER для применения изменений и пользуемся расширившимся функционалом.

Ниже приведены возможные варианты дебага:

Debug при методе REGISTER и нахождении IP в списке разрешенных:

NATed REGISTER [00412345678@192.168.137.250]
May  5 21:14:19 [16176] DBG:permissions:allow_uri: looking for From: sip:00412345678@sip.mydomain.com;transport=UDP URI: 192.168.137.250
May  5 21:14:19 [16176] DBG:permissions:allow_uri: allow rule found => URI is allowed
May  5 21:14:19 [16176] DBG:core:parse_headers: flags=4000
May  5 21:14:19 [16176] DBG:auth:pre_auth: credentials with given realm not found
Register authentication failed - M=REGISTER RURI=sip:sip.mydomain.com;transport=UDP F=sip:00412345678@sip.mydomain.com;transport=UDP T=sip:00412345678@sip.mydomain.com;transport=UDP IP=192.168.137.250 ID=MDhjYjQwOTZjMzFjNGNmMDcwNzI1NTU0ODA1Zjg1MTU.

Debug при методе REGISTER и нахождении IP в списке запрещенных:

NATed REGISTER [00412345678@192.168.137.250]
May  5 21:10:54 [13758] DBG:permissions:allow_uri: looking for  From: sip:00412345678@sip.mydomain.com;transport=UDP URI:  192.168.137.250
May  5 21:10:54 [13758] DBG:permissions:allow_uri: deny rule found => URI is denied
Register denied by config - M=REGISTER  RURI=sip:sip.mydomain.com;transport=UDP  F=sip:00412345678@sip.mydomain.com;transport=UDP  T=sip:00412345678@sip.mydomain.com;transport=UDP IP=192.168.137.250  ID=NDA2Y2NlMGFjNzZjN2YwZDJjYjllYzUxNDJlYmEzYjA.

Debug при методе INVITE и нахождении IP в списке разрешенных:

NATed REGISTER [00412345678@192.168.137.250]
May  5 20:19:20 [13299] DBG:permissions:allow_uri: looking for From: sip:00412345678@sip.mydomain.com;transport=UDP URI: 192.168.137.250
May  5 20:19:20 [13299] DBG:permissions:allow_uri: allow rule found => URI is allowed
May  5 20:19:20 [13299] DBG:core:parse_headers: flags=10000
May  5 20:19:20 [13299] DBG:auth:pre_auth: credentials with given realm not found
Proxy authentication failed - M=INVITE RURI=sip:8499XXXXXXX@sip.mydomain.com;transport=UDP F=sip:00412345678@sip.mydomain.com;transport=UDP T=sip:8499XXXXXXX@sip.mydomain.com;transport=UDP IP=192.168.137.250 ID=NTkxNDhiMTlmOWNiOWY1MjM2Nzk0YTY3ODgxNzYzMjU.

Debug при методе INVITE и нахождении IP в списке запрещенных:

NATed REGISTER [00412345678@192.168.137.250]
May  5 20:26:04 [13758] DBG:permissions:allow_uri: looking for From: sip:00412345678@sip.mydomain.com;transport=UDP URI: 192.168.137.250
May  5 20:26:04 [13758] DBG:permissions:allow_uri: deny rule found => URI is denied
Proxy denied by config - M=INVITE RURI=sip:8499XXXXXXX@sip.mydomain.com;transport=UDP F=sip:00412345678@sip.mydomain.com;transport=UDP T=sip:8499XXXXXXX@sip.mydomain.com;transport=UDP IP=192.168.137.250 ID=MDk0YTQ1ODMzZjE0ODAxZDMwMGYxZjU1YmIyOTc4ZWY.

Полезные ресурсы по теме:

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

Автор: Панфилов Алексей (lehis (at) subnets.ru)

Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 4, среднее: 5,00 из 5)
Загрузка...
Отправить на почту Отправить на почту

Xorg и два монитора
Две видеокарты, два монитора настройка xorg.conf

Многие из нас используют или хотят использовать для работы два монитора, ибо это удобно.

Решил выложить конфиги для иксов, т.к. хочу сохранить их для истории и с вами поделиться. Да и потом будет где подсмотреть, а не заново разбираться 🙂

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

Итак OS FreeBSD 8.2-STABLE, оболочка enlightenment-0.16.999.52995 и конфигурации X11 (xorg.conf) для работы с двумя мониторами.

Конфигов будет 3, под три разные карты, все они реализуют работу двух мониторов и все они рабочие, т.к. взяты копипастом с рабочих машин:

1. ATI Radeon: Radeon X850XT (PCIE) — двухголовая видюха:

Ставим порт с драйверами:

Port:   xf86-video-radeonhd-1.3.0_4
Path:   /usr/ports/x11-drivers/xf86-video-radeonhd
Info:   X.Org ati RadeonHD display driver

Монитор «Benq» — основной
Монитор «Samsung» — стоит справа от основного и является отдельным рабочим столом

/etc/X11/xorg.conf:

Section "ServerLayout"
 Identifier "Layout0"
 Screen 0 "Screen0" 0 0
 Screen 1 "Screen1" LeftOf "Screen0"
 InputDevice "Keyboard0" "CoreKeyboard"
 "AllowEmptyInput" "off"
 InputDevice "Mouse0" "CorePointer"
 "AllowEmptyInput" "off"
 Option "Clone" "false"
 Option "Xinerama" "true"
EndSection

Section "ServerFlags"
  Option "AutoAddDevices" "False"
EndSection

Section "Files"
    #RgbPath         "/usr/local/share/X11/rgb"
    ModulePath      "/usr/local/lib/xorg/modules"
    FontPath        "/usr/local/lib/X11/fonts/cyrillic/"
    FontPath        "/usr/local/lib/X11/fonts/misc/"
    FontPath        "/usr/local/lib/X11/fonts/TTF/"
    FontPath        "/usr/local/lib/X11/fonts/OTF"
    FontPath        "/usr/local/lib/X11/fonts/Type1/"
    FontPath        "/usr/local/lib/X11/fonts/100dpi/"
    FontPath        "/usr/local/lib/X11/fonts/75dpi/"
    FontPath        "/usr/local/lib/X11/fonts/webfonts/"
EndSection

Section "Module"
    Load           "extmod"
    Load           "record"
    Load           "dbe"
    Load           "glx"
    Load           "xtrap"
    Load           "freetype"
    Load           "type1"
EndSection

Section "InputDevice"
    Identifier     "Keyboard0"
    Driver         "kbd"
    Option         "XkbModel" "pc101"
    Option         "XkbLayout" "us,ru"
    Option         "XkbVariant" ",winkeys"
    Option         "XKbOptions" "grp:ctrl_shift_toggle,grp_led:scroll_lock"
EndSection

Section "InputDevice"
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/sysmouse"
    Option         "ZAxisMapping" "4 5 6 7"
EndSection

Section "Monitor"
        Identifier   "Monitor0"
        VendorName   "Benq"
        ModelName    "E2200HDA"
        HorizSync    30.0 - 83.0
        VertRefresh  50.0 - 76.0
        Option "PreferredMode" "1920x1080"
EndSection

Section "Monitor"
        Identifier   "Monitor1"
        VendorName   "Samsung"
        ModelName    "SyncMaster 710N"
        HorizSync    30.0 - 81.0
        VertRefresh  56.0 - 75.0
        Option "PreferredMode" "1280x1024"
EndSection

Section "Device"
    Identifier   "Card0"
    Driver      "radeon"
    VendorName  "ATI Technologies Inc"
    BoardName   "R480 [Radeon X850XT (PCIE)] (Primary)"
    BusID       "PCI:4:0:0"
    Screen      0
    Option      "DualHead" "true"
    Option      "monitor-VGA-0" "Monitor0"
    Option      "monitor-DVI-0" "Monitor1"
EndSection

Section "Device"
    Identifier   "Card1"
    Driver      "radeon"
    VendorName  "ATI Technologies Inc"
    BoardName   "R480 [Radeon X850XT (PCIE)] (Secondary)"
    BusID       "PCI:4:0:1"
    Screen      1
    Option      "DualHead" "true"
    Option      "RightOf" "VGA-0"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Card0"
    Monitor        "Monitor0"
    SubSection     "Display"
        Viewport    0 0
        Depth       1
        Modes "1920x1080" "1280x1024" "800x600" "640x480"
        Virtual 3200 3200
    EndSubSection
    SubSection     "Display"
        Viewport    0 0
        Depth       4
        Modes "1920x1080" "1280x1024" "800x600" "640x480"
        Virtual 3200 3200
    EndSubSection
    SubSection     "Display"
        Viewport    0 0
        Depth       8
        Modes "1920x1080" "1280x1024" "800x600" "640x480"
        Virtual 3200 3200
    EndSubSection
    SubSection     "Display"
        Viewport    0 0
        Depth       15
        Modes "1920x1080" "1280x1024" "800x600" "640x480"
        Virtual 3200 3200
    EndSubSection
    SubSection     "Display"
        Viewport    0 0
        Depth       16
        Modes "1920x1080" "1280x1024" "800x600" "640x480"
        Virtual 3200 3200
    EndSubSection
    SubSection     "Display"
        Viewport    0 0
        Depth       24
        Modes "1920x1080" "1280x1024" "800x600" "640x480"
        Virtual 3200 3200
    EndSubSection
    SubSection     "Display"
        Viewport    0 0
        Depth       32
        Modes "1920x1080" "1280x1024" "800x600" "640x480"
        Virtual 3200 3200
    EndSubSection
EndSection

Section "Screen"
    Identifier "Screen1"
    Device     "Card1"
    Monitor    "Monitor1"
    SubSection     "Display"
        Viewport    0 0
        Depth       1
        Modes "1280x1024" "800x600" "640x480"
        Virtual 3200 3200
    EndSubSection
    SubSection     "Display"
        Viewport    0 0
        Depth       4
        Modes "1280x1024" "800x600" "640x480"
        Virtual 3200 3200
    EndSubSection
    SubSection     "Display"
        Viewport    0 0
        Depth       8
        Modes "1280x1024" "800x600" "640x480"
        Virtual 3200 3200
    EndSubSection
    SubSection     "Display"
        Viewport    0 0
        Depth       15
        Modes "1280x1024" "800x600" "640x480"
        Virtual 3200 3200
    EndSubSection
    SubSection     "Display"
        Viewport    0 0
        Depth       16
        Modes "1280x1024" "800x600" "640x480"
        Virtual 3200 3200
    EndSubSection
    SubSection     "Display"
        Viewport    0 0
        Depth       24
        Modes "1280x1024" "800x600" "640x480"
        Virtual 3200 3200
    EndSubSection
    SubSection     "Display"
        Viewport    0 0
        Depth       32
        Modes "1280x1024" "800x600" "640x480"
        Virtual 3200 3200
    EndSubSection
EndSection

2. Zotac GT220 ZONE на чипсете NVIDIA

Ставим порт с драйверами:

Port:   nvidia-driver-256.53_1
Path:   /usr/ports/x11/nvidia-driver
Info:   NVidia graphics card binary drivers for hardware OpenGL rendering

Подгружаем:
# kldload nvidia.ko

Делаем чтобы подгружалось само после бута, правим /boot/loader.conf и добавляем:

nvidia_load="YES"

Монитор «Benq» — основной
Монитор «Samsung» — стоит справа от основного и является отдельным рабочим столом

/etc/X11/xorg.conf:


Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 0 0
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
    Option         "AllowEmptyInput" "off"
    Option "Clone" "false"
    Option "Xinerama" "false"
EndSection

Section "ServerFlags"
  Option "AutoAddDevices" "False"
EndSection

Section "Files"
    ModulePath      "/usr/X11R6/lib/xorg/modules"
    FontPath        "/usr/local/lib/X11/fonts/misc/"
    FontPath        "/usr/local/lib/X11/fonts/Type1/"
    FontPath        "/usr/local/lib/X11/fonts/100dpi/"
    FontPath        "/usr/local/lib/X11/fonts/75dpi/"
    FontPath        "/usr/local/lib/X11/fonts/cyrillic/"
    FontPath        "/usr/local/lib/X11/fonts/TTF/"
    FontPath        "/usr/X11R6/lib/X11/fonts/misc/"
    FontPath        "/usr/X11R6/lib/X11/fonts/75dpi/"
    FontPath        "/usr/X11R6/lib/X11/fonts/100dpi/"
    FontPath        "/usr/X11R6/lib/X11/fonts/bitstream-vera/"
    FontPath        "/usr/local/lib/X11/fonts/OTF"
    FontPath        "/usr/local/lib/X11/fonts/webfonts/"
EndSection

Section "Module"
    Load           "dbe"
    Load           "extmod"
    Load           "glx"
    Load           "extmod"
    Load           "record"
    Load           "dbe"
    Load           "xtrap"
    Load           "freetype"
    Load           "type1"
EndSection

Section "InputDevice"
    Identifier     "Keyboard0"
    Driver         "keyboard"
    Option         "XkbModel" "pc101"
    Option         "XkbLayout" "us,ru"
    Option         "XkbVariant" ",winkeys"
    Option         "XKbOptions" "grp:ctrl_shift_toggle,grp_led:scroll_lock"
EndSection

Section "InputDevice"
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/sysmouse"
    Option         "ZAxisMapping" "4 5 6 7"
EndSection

Section "Monitor"
    Identifier   "Monitor0"
    VendorName   "Benq"
    ModelName    "E2200HDA"
    HorizSync    30.0 - 83.0
    VertRefresh  50.0 - 76.0
    Option "PreferredMode" "1920x1080"
EndSection

Section "Monitor"
    Identifier   "Monitor1"
    VendorName   "Samsung"
    ModelName    "SyncMaster 710N"
    HorizSync    30.0 - 81.0
    VertRefresh  56.0 - 75.0
    Option "PreferredMode" "1280x1024"
EndSection

Section "Device"
    Identifier  "Card0"
    Driver      "nvidia"
    VendorName  "NVIDIA Corporation"
    BusID       "PCI:1:0:0"
    Option      "TwinView" "true"
    Option      "TwinViewOrientation"      "RightOf"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Card0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "HWcursor"
    Option         "CursorShadow"
    Option         "UseEdidDpi" "FALSE"
    Option         "DPI" "96 x 96"
    SubSection     "Display"
        Viewport    0 0
        Depth       1
    EndSubSection
    SubSection     "Display"
        Viewport    0 0
        Depth       4
    EndSubSection
    SubSection     "Display"
        Viewport    0 0
        Depth       8
    EndSubSection
    SubSection     "Display"
        Viewport    0 0
        Depth       15
    EndSubSection
    SubSection     "Display"
        Viewport    0 0
        Depth       16
    EndSubSection
    SubSection     "Display"
        Viewport    0 0
        Depth       24
    EndSubSection
    SubSection     "Display"
        Viewport    0 0
        Depth       32
    EndSubSection
EndSection

3. G86 [GeForce 8400M GS] rev 161 на чипсете NVIDIA (ноутбук SONY VAIO модель PSG-6S6P)

Ставим порт с драйверами:

Port:   nvidia-driver-256.53_1
Path:   /usr/ports/x11/nvidia-driver
Info:   NVidia graphics card binary drivers for hardware OpenGL rendering

Подгружаем:
# kldload nvidia.ko

Делаем чтобы подгружалось само после бута, правим /boot/loader.conf и добавляем:

nvidia_load="YES"

Монитор «Samsung» — основной
Ноутбук — стоит слева от основного и является отдельным рабочим столом

/etc/X11/xorg.conf:

Section "ServerLayout"
        Identifier "Layout0"
        Screen 0 "Screen0" 0 0
        InputDevice "Keyboard0" "CoreKeyboard"
        "AllowEmptyInput" "off"
        InputDevice "Mouse0" "CorePointer"
        "AllowEmptyInput" "off"
        Option "Xinerama" "true"
EndSection

Section "ServerFlags"
        Option "AutoAddDevices" "False"
EndSection

Section "Files"
    ModulePath  "/usr/local/lib/xorg/modules"
    FontPath    "/usr/local/lib/X11/fonts/cyrillic/"
    FontPath    "/usr/local/lib/X11/fonts/TTF/"
    FontPath    "/usr/local/lib/X11/fonts/OTF"
    FontPath    "/usr/local/lib/X11/fonts/misc"
    FontPath    "/usr/local/lib/X11/fonts/webfonts/"
    FontPath    "/usr/local/lib/X11/fonts/avifonts/"
    FontPath    "/usr/local/lib/X11/fonts/bitstream-vera/"
EndSection

Section "Module"
    Load           "extmod"
    Load           "record"
    Load           "dbe"
    Load           "glx"
    Load           "freetype"
    Load           "type1"
EndSection

Section "InputDevice"
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/sysmouse"
    Option         "ZAxisMapping" "4 5 6 7"
EndSection

Section "Monitor"
        # gtf 1680 1050 60
        Identifier   "CRT-0"
        VendorName   "Samsung"
        ModelName    "SyncMaster 2243nw"
        Gamma 0 0 0
        Modeline "1680x1050_60.00"  119.00  1680 1728 1760 1840  1050 1053 1059 1080 +hsync -vsync
EndSection

Section "Monitor"
        #gtf 1280 800 60
        Identifier   "DFP-0"
        VendorName   "Sony"
        Gamma 0 0 0
        Modeline "1280x800_60.00"  83.46  1280 1344 1480 1680  800 801 804 828  -HSync +Vsync
EndSection

Section "Device"
        Option          "HWcursor"      "true"
        Identifier      "Card0"
        Driver          "nvidia"
        BusID           "PCI:1:0:0"
        Option          "TwinView" "true"
        Option          "TwinViewOrientation"      "LeftOf"
        Option          "metamodes"     "DFP-0:1280x800_60.00+0+0,CRT-0:1680x1050_60.00+1280+0"
        Option          "ConnectedMonitor" "DFP-0,CRT-0"
        Screen  0
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Card0"
    Monitor        "DFP-0"
    SubSection     "Display"
        Viewport    0 0
        Depth       1
        Modes  "1280x800" "800x600" "640x480"
    EndSubSection
    SubSection     "Display"
        Viewport    0 0
        Depth       4
        Modes   "1280x800" "800x600" "640x480"
    EndSubSection
    SubSection     "Display"
        Viewport    0 0
        Depth       8
        Modes   "1280x800" "800x600" "640x480"
    EndSubSection
    SubSection     "Display"
        Viewport    0 0
        Depth       15
        Modes   "1280x800" "800x600" "640x480"
    EndSubSection
    SubSection     "Display"
        Viewport    0 0
        Depth       16
        Modes   "1280x800" "800x600" "640x480"
    EndSubSection
    SubSection     "Display"
        Viewport    0 0
        Depth       24
        Modes   "1280x800" "800x600" "640x480"
    EndSubSection
    SubSection     "Display"
        Viewport    0 0
        Depth       32
        Modes   "1280x800" "800x600" "640x480"
    EndSubSection
EndSection

Коментарии

а) Если у вас видюха на чипсете NVIDIA, то вы можете поставить порт:

Port:   nvidia-settings-270.18
Path:   /usr/ports/x11/nvidia-settings
Info:   Display Control Panel for X NVidia driver

запустив иксы, выполните в консоли:

# nvidia-settings

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

ВНИМАНИЕ, в этой утилите есть кнопка «Save to X Configuration File», но если вы ей воспользуетесь и укажете в кач-ве файла для сохранения текущий конфиг хорга, то тулза его ОБНУЛИТ и ничего так и не сохранит. У нас три компа и на всех трех компах так, будьте аккуратны и всегда бекапте xorg.conf перед какими либо действиями над ним.

б) Откуда взять BuSID, указанный в секции Device ?

Его можно узнать посмотрев вывод команды:

# pciconf -lv

…skiped…

vgapci0@pci0:1:0:0: class=0x030000 card=0x113219da chip=0x0a2010de rev=0xa2 hdr=0x00

    vendor     = 'NVIDIA Corporation'
    class      = display
    subclass   = VGA
...skiped...

Так же его можно наблюдать в Xorg.0.log:

(--) PCI:*(0:1:0:0) 10de:0a20:19da:1132 nVidia Corporation GT216 [GeForce GT 220] rev 162, Mem @ 0xf9000000/16777216, 0xd0000000/268435456, 0xee000000/33554432, I/O @ 0x0000bf00/128, BIOS @ 0x????????/65536

в) Имена мониторов, указанные в секции Device, можно увидеть в файле лога:
/var/log/Xorg.0.log

К нему следует обратиться если у вас что то не получается и иксы не стартуют, а вываливаются с сообщением:

fatal server error:
no screens found

Файл лога поможет вам идентифицировать проблему и даст дополнительную информацию о железе.

г) Если у вас совсем ничего не получается, то попробуйте воспользоваться портом nvidia-xconfig:

Port:   nvidia-xconfig-270.18
Path:   /usr/ports/x11/nvidia-xconfig
Info:   Tool to manipulate X configuration files for the NVidia driver

Установив и запустив:

# nvidia-xconfig

На выходе вы получите xorg.conf

д) ну и конечно более подробно о том что можно указать в xorg.conf вы можете узнать из мануала:

# man xorg.conf

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

Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 2, среднее: 5,00 из 5)
Загрузка...
Отправить на почту Отправить на почту