Difference between revisions of "Jingle/test"
(дополнения) |
m (Reverted edits by Binary (talk) to last revision by 2A02:6B8:0:401:222:4DFF:FE50:B384) |
||
(21 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
+ | {{Interwiki | ||
+ | | ruwiki = | ||
+ | | enwiki = | ||
+ | | jworld = Обсуждение:Jingle | ||
+ | }} | ||
+ | |||
+ | Какие генеральные проблемы мешают нормально общаться голосом и использовать видеокамеру. | ||
+ | # Малое количество клиентов поддерживающих Jingle | ||
+ | # Неотлаженность реализации Jingle в клиентах. | ||
+ | # Конфигурация BSD-based NAT-ов - см. раздел ниже | ||
+ | |||
+ | == Инструкция для пользователей == | ||
+ | * В Psi для разговора надо в правокнопочном меню контакта, с которым вы хотите поговорить выбрать Voice Call. | ||
+ | * В Gajim в окне чата есть кнопка с пиктограммой старостильного микрофона и вебкамеры. Каждая из кнопок устанавливает свой тип связи. Если кнопки неактивны, а вы знаете что у собеседника все необходимое для мультимедийного звонка есть, то закройте окно и снова откройте - кнопки станут активными (это так проявляется еще неисправленная ошибка) | ||
+ | * В Pidgin - в правокнопочтом меню контакта появляется Audio Call с иконкой гарнтитуры, а также Audio/Video Call с иконкой вебкамеры. Появляются они в зависимости от того, поддерживает ли контакт эти способы связи. | ||
+ | |||
+ | == Ситуация с FreeBSD == | ||
+ | С FreeBSD и другими BSD-системами. По-видимому, в большинстве этим систем NAT реализуется способами, которые по умолчанию используют случайный выбор портов для установления соединения. Что является серьезным препятствием для работы Jingle. По-видимому, эта рандомизация применяется для повышения безопасности этих систем (защита от спуфинга?). На Linux такого поведения по умолчанию нет. | ||
+ | |||
+ | Системным администраторам можно порекомендовать изменять поведение NAT (по-видимому, это большого влияния на безопасность это не окажет), с тем чтобы порты оставались те, которые приложение запросило и согласовало с второй стороной. | ||
+ | |||
+ | ;{{w|pf}} | ||
+ | Вместо nat on $ext_if from $int_net to any -> $ext_addr следует писать | ||
+ | nat on $ext_if from $int_net to any -> ($ext_if) static-port | ||
+ | |||
+ | Например, внутренняя сеть 192.168.5.0/24, IP на внешнем интерфейсе (единственный что есть, как указывая явно - надо уточнить), em0 - сетевой контроллер, смотрящий наруж: | ||
+ | nat on em0 from 192.168.5.0/24 to any -> (em0) static port | ||
+ | |||
+ | ;natd | ||
+ | проверить и написать | ||
+ | |||
+ | ;ipfw | ||
+ | проверить и написать | ||
+ | |||
+ | ;ipfilter | ||
+ | проверить и написать | ||
+ | |||
== Конфигурация сети == | == Конфигурация сети == | ||
* [[user:Binary|Binary]]: Primary: Indepndent Mapping, Port Dependent Filter, preserves ports, no hairpin | * [[user:Binary|Binary]]: Primary: Indepndent Mapping, Port Dependent Filter, preserves ports, no hairpin | ||
− | * [[User:Leksey|Leksey]]: Primary: Indepndent Mapping, Port Dependent Filter, '''random''' port, no hairpin | + | * [[User:Leksey|Leksey]]: Primary: Indepndent Mapping, Port Dependent Filter, '''random''' port, no hairpin (nat на базе pf с ''nat on $ext_if from $int_net to any -> $ext_addr'') |
− | * [[user:leksey|leksey]]@ | + | * [[user:leksey|leksey]]@дома: Primary: Port Restricted Nat, preserves ports, no hairpin (natd, FreeBSD 7.0 ''natd_enable="YES"'') |
* [[user:b108|b108]]: Primary: Indepndent Mapping, Port Dependent Filter, preserves ports, no hairpin (Return value is 0x000017) | * [[user:b108|b108]]: Primary: Indepndent Mapping, Port Dependent Filter, preserves ports, no hairpin (Return value is 0x000017) | ||
+ | |||
+ | == Сочетания клиентов == | ||
+ | * Psi+,Ubuntu - Gajim,Gentoo - ок | ||
+ | |||
== Версии ПО == | == Версии ПО == | ||
Line 14: | Line 55: | ||
* [[Empathy]] leksey <=> [[Empathy]] b108 (21 April 2011) - не установилось даже соединение | * [[Empathy]] leksey <=> [[Empathy]] b108 (21 April 2011) - не установилось даже соединение | ||
* [[HabaHaba]] leksey <=> [[Empathy]] b108 (21 April 2011) - голос в обе стороны работал. но проблема что после минуты-другой падал флэш хабовский. | * [[HabaHaba]] leksey <=> [[Empathy]] b108 (21 April 2011) - голос в обе стороны работал. но проблема что после минуты-другой падал флэш хабовский. | ||
+ | * [[Jitsi]] 1.0 beta1 build 3593, Linux <=> Windows — голос работал, но видео тормозилось (фактически статично отображался первый кадр). Через пару минут завис Linux-клиент. <br/> Обновление: тестовый звонок через build 3820 ‒ качество видеосвязи улучшилось, клиент не вис. | ||
== Клиенты которые следует проверить == | == Клиенты которые следует проверить == | ||
Line 31: | Line 73: | ||
Берется из вывода stun-клиента, запущенного следующим образом. Версия для [http://prdownloads.sourceforge.net/stun/client.exe?download MS Windows], [http://www.freshports.org/net/stund/ FreeBSD], Ubuntu (sudo apt-get install stun) | Берется из вывода stun-клиента, запущенного следующим образом. Версия для [http://prdownloads.sourceforge.net/stun/client.exe?download MS Windows], [http://www.freshports.org/net/stund/ FreeBSD], Ubuntu (sudo apt-get install stun) | ||
stun_client stun.xten.com | stun_client stun.xten.com | ||
+ | |||
+ | ;MS Windows | ||
+ | client.exe stunserver.org | ||
== Описание NAT == | == Описание NAT == | ||
Line 41: | Line 86: | ||
К слову, на FreeBSD этот результат достигается ключом «-same_ports» или «-s» в строчке запуска или конфигурационном файле демона natd. Есть возможность поставить ключ и проверить? | К слову, на FreeBSD этот результат достигается ключом «-same_ports» или «-s» в строчке запуска или конфигурационном файле демона natd. Есть возможность поставить ключ и проверить? | ||
+ | |||
+ | == FreeBSD, Psi 0.14 + Psi-media == | ||
+ | Внешний IP с единственной настройкой в rc.conf ifconfig_age0="dhcp" | ||
+ | |||
+ | Проблема - случайно выбирается порт для установления соединения, что не позволяет работать когда на одной из сторон NAT. Видимо, psi не делает специального указания, с какого порта слать | ||
+ | |||
+ | * Сменен порт в настройках Psi (в поле Data transfer base port) с 8010 на 49152 (в соответствие с [http://www.ncftp.com/ncftpd/doc/misc/ephemeral_ports.html The Ephemeral Port Range]). Поле Data transfer externak adress для указания "внешнего" адреса при работе со STUN и поэтому оно должно быть пустым. | ||
+ | Не помогло. | ||
+ | |||
+ | * Выключена [http://fuse4bsd.creo.hu/localcgi/man-cgi.cgi?ip+4 рандомизация] (Ports are allocated at random within the specified port range in order to increase the difficulty of random spoofing attacks) sysctl net.inet.ip.portrange.randomized=0 | ||
+ | После этого вместо рандовного выбора - стало последовательно наращивать адреса, но тоже выбирая рандомно их диапазон. | ||
+ | 18:42:24.588741 IP 89.250.8.14.51357 > 217.25.221.127.60529: UDP, length 92 | ||
+ | 51357 != 49152 | ||
+ | |||
+ | Лог (в комменте) | ||
+ | <!-- Readying AudioIn:[oss,/dev/dsp1.0], refs=1 | ||
+ | codec=speex | ||
+ | rate=16000,width=16,channels=1 | ||
+ | changing state... | ||
+ | send clock is master | ||
+ | state changed | ||
+ | sendbin: | ||
+ | apprtpsink0 | ||
+ | audioencbin: | ||
+ | rtpspeexpay1 | ||
+ | speexenc1 | ||
+ | capsfilter1 | ||
+ | audioresample2 | ||
+ | audioconvert2 | ||
+ | volume1 | ||
+ | queue0 | ||
+ | bin0: | ||
+ | capsfilter0 | ||
+ | audioresample1 | ||
+ | audioconvert1 | ||
+ | osssrc3 | ||
+ | tee0 | ||
+ | speexdsp0 | ||
+ | rtppay caps audio: [application/x-rtp, media=(string)audio, clock-rate=(int)16000, encoding-name=(string)SPEEX, encoding-params=(string)1, payload=(int)110, ssrc=(uint)588367364, clock-base=(uint)2979471036, seqnum-base=(uint)44429] | ||
+ | rtp_started | ||
+ | there are audio payload types | ||
+ | types=1 | ||
+ | resolver finished | ||
+ | starting ice for audio | ||
+ | starting transport 89.250.8.14:8010 for component 1 | ||
+ | starting transport 89.250.8.14:8011 for component 2 | ||
+ | lt_started | ||
+ | lt_started | ||
+ | ice_started | ||
+ | after_ice_started | ||
+ | local candidate ready | ||
+ | flushing local candidates | ||
+ | received validated request or indication | ||
+ | user [Y0jk:9lJb] is wrong. it should be [Y0jk:]. skipping | ||
+ | received validated request or indication | ||
+ | user [Y0jk:9lJb] is wrong. it should be [Y0jk:]. skipping | ||
+ | incoming request: [session-accept] | ||
+ | adding 6 remote candidates | ||
+ | 6 pairs | ||
+ | 1, 89.250.8.14:8010 -> 192.168.0.50:43521 | ||
+ | 1, 89.250.8.14:8010 -> 2001:470:D7CA:1:219:66FF:FEFB:22D5:40381 | ||
+ | 2, 89.250.8.14:8011 -> 192.168.0.50:42026 | ||
+ | 2, 89.250.8.14:8011 -> 2001:470:D7CA:1:219:66FF:FEFB:22D5:34620 | ||
+ | 1, 89.250.8.14:8010 -> 217.25.221.127:43521 | ||
+ | 2, 89.250.8.14:8011 -> 217.25.221.127:42026 | ||
+ | 6 after pruning | ||
+ | connectivity check from 89.250.8.14:8010 to 192.168.0.50:43521 | ||
+ | connectivity check from 89.250.8.14:8010 to 2001:470:D7CA:1:219:66FF:FEFB:22D5:40381 | ||
+ | connectivity check from 89.250.8.14:8011 to 192.168.0.50:42026 | ||
+ | connectivity check from 89.250.8.14:8011 to 2001:470:D7CA:1:219:66FF:FEFB:22D5:34620 | ||
+ | connectivity check from 89.250.8.14:8010 to 217.25.221.127:43521 | ||
+ | connectivity check from 89.250.8.14:8011 to 217.25.221.127:42026 | ||
+ | setting up audio recv | ||
+ | creating audioout | ||
+ | using speexechoprobe | ||
+ | Readying AudioOut:[oss,/dev/dsp2.0], refs=1 | ||
+ | recv pipeline slaving to send clock | ||
+ | activating | ||
+ | receive pipeline started | ||
+ | connectivity check from 89.250.8.14:8010 to 192.168.0.50:43521 | ||
+ | connectivity check from 89.250.8.14:8010 to 2001:470:D7CA:1:219:66FF:FEFB:22D5:40381 | ||
+ | connectivity check from 89.250.8.14:8011 to 192.168.0.50:42026 | ||
+ | connectivity check from 89.250.8.14:8011 to 2001:470:D7CA:1:219:66FF:FEFB:22D5:34620 | ||
+ | connectivity check from 89.250.8.14:8010 to 217.25.221.127:43521 | ||
+ | connectivity check from 89.250.8.14:8011 to 217.25.221.127:42026 | ||
+ | connectivity check from 89.250.8.14:8010 to 192.168.0.50:43521 | ||
+ | connectivity check from 89.250.8.14:8010 to 2001:470:D7CA:1:219:66FF:FEFB:22D5:40381 | ||
+ | connectivity check from 89.250.8.14:8011 to 192.168.0.50:42026 | ||
+ | connectivity check from 89.250.8.14:8011 to 2001:470:D7CA:1:219:66FF:FEFB:22D5:34620 | ||
+ | connectivity check from 89.250.8.14:8010 to 217.25.221.127:43521 | ||
+ | connectivity check from 89.250.8.14:8011 to 217.25.221.127:42026 | ||
+ | connectivity check from 89.250.8.14:8010 to 192.168.0.50:43521 | ||
+ | connectivity check from 89.250.8.14:8010 to 2001:470:D7CA:1:219:66FF:FEFB:22D5:40381 | ||
+ | connectivity check from 89.250.8.14:8011 to 192.168.0.50:42026 | ||
+ | connectivity check from 89.250.8.14:8011 to 2001:470:D7CA:1:219:66FF:FEFB:22D5:34620 | ||
+ | connectivity check from 89.250.8.14:8010 to 217.25.221.127:43521 | ||
+ | connectivity check from 89.250.8.14:8011 to 217.25.221.127:42026 | ||
+ | audio: average packet size=82, kbps=41 | ||
+ | connectivity check from 89.250.8.14:8010 to 192.168.0.50:43521 | ||
+ | connectivity check from 89.250.8.14:8010 to 2001:470:D7CA:1:219:66FF:FEFB:22D5:40381 | ||
+ | connectivity check from 89.250.8.14:8011 to 192.168.0.50:42026 | ||
+ | connectivity check from 89.250.8.14:8011 to 2001:470:D7CA:1:219:66FF:FEFB:22D5:34620 | ||
+ | connectivity check from 89.250.8.14:8010 to 217.25.221.127:43521 | ||
+ | connectivity check from 89.250.8.14:8011 to 217.25.221.127:42026 | ||
+ | cleaning up... | ||
+ | recv clock reverts to auto | ||
+ | Releasing AudioIn:[oss,/dev/dsp1.0], refs=0 | ||
+ | Releasing AudioOut:[oss,/dev/dsp2.0], refs=0 | ||
+ | cleaning done. | ||
+ | |||
+ | |||
+ | 18:42:24.447999 IP 217.25.221.127.60529 > 89.250.8.14.49152: UDP, length 88 | ||
+ | 18:42:24.448350 IP 217.25.221.127.59057 > 89.250.8.14.49153: UDP, length 88 | ||
+ | 18:42:24.586957 IP 89.250.8.14.49152 > 192.168.0.50.60529: UDP, length 92 | ||
+ | 18:42:24.587776 IP 89.250.8.14.49153 > 192.168.0.50.59057: UDP, length 92 | ||
+ | 18:42:24.588741 IP 89.250.8.14.51357 > 217.25.221.127.60529: UDP, length 92 | ||
+ | 18:42:24.589200 IP 89.250.8.14.51358 > 217.25.221.127.59057: UDP, length 92 | ||
+ | 18:42:25.052413 IP 217.25.221.127.60529 > 89.250.8.14.49152: UDP, length 88 | ||
+ | 18:42:25.052504 IP 217.25.221.127.59057 > 89.250.8.14.49153: UDP, length 88 | ||
+ | 18:42:25.087511 IP 89.250.8.14.51357 > 192.168.0.50.60529: UDP, length 92 | ||
+ | 18:42:25.087991 IP 89.250.8.14.51358 > 192.168.0.50.59057: UDP, length 92 | ||
+ | 18:42:25.088759 IP 89.250.8.14.51359 > 217.25.221.127.60529: UDP, length 92 | ||
+ | 18:42:25.089194 IP 89.250.8.14.51360 > 217.25.221.127.59057: UDP, length 92 | ||
+ | 18:42:26.087639 IP 89.250.8.14.51359 > 192.168.0.50.60529: UDP, length 92 | ||
+ | 18:42:26.088175 IP 89.250.8.14.51360 > 192.168.0.50.59057: UDP, length 92 | ||
+ | 18:42:26.088796 IP 89.250.8.14.51361 > 217.25.221.127.60529: UDP, length 92 | ||
+ | 18:42:26.089204 IP 89.250.8.14.51362 > 217.25.221.127.59057: UDP, length 92 | ||
+ | 18:42:26.260050 IP 217.25.221.127.60529 > 89.250.8.14.49152: UDP, length 88 | ||
+ | 18:42:26.260080 IP 217.25.221.127.59057 > 89.250.8.14.49153: UDP, length 88 | ||
+ | 18:42:28.088040 IP 89.250.8.14.51361 > 192.168.0.50.60529: UDP, length 92 | ||
+ | 18:42:28.088480 IP 89.250.8.14.51362 > 192.168.0.50.59057: UDP, length 92 | ||
+ | 18:42:28.088983 IP 89.250.8.14.51363 > 217.25.221.127.60529: UDP, length 92 | ||
+ | 18:42:28.089265 IP 89.250.8.14.51364 > 217.25.221.127.59057: UDP, length 92 | ||
+ | 18:42:28.653533 IP 217.25.221.127.60529 > 89.250.8.14.49152: UDP, length 88 | ||
+ | 18:42:28.653726 IP 217.25.221.127.59057 > 89.250.8.14.49153: UDP, length 88 | ||
+ | 18:42:32.088035 IP 89.250.8.14.51363 > 192.168.0.50.60529: UDP, length 92 | ||
+ | 18:42:32.088537 IP 89.250.8.14.51364 > 192.168.0.50.59057: UDP, length 92 | ||
+ | 18:42:32.089002 IP 89.250.8.14.51365 > 217.25.221.127.60529: UDP, length 92 | ||
+ | 18:42:32.089313 IP 89.250.8.14.51366 > 217.25.221.127.59057: UDP, length 92 | ||
+ | 18:42:32.969277 IP 77.198.33.58.8826 > 89.250.9.95.35691: UDP, length 62 | ||
+ | --> | ||
+ | |||
+ | == FreeBSD, [[Gajim]] == | ||
+ | Gajim не ниже версии 0.14.1 должно быть - до этого поддержки голоса не было. Старый клиент можно заметить еще и потому что в у него настройках нету вкладки ''Audio/Video''. | ||
+ | |||
+ | С моей стороны публичный IP, у собеседников NATы неизвестного типа. У первого Gentoo, у второго Debian. | ||
+ | |||
+ | Обновил порты, установил на днях обновившийся gajim-0.14.3. Все OPTIONS по умолчанию оставлены. Соответственно, [x]DBUS взведен | ||
+ | make install clean -C /usr/ports/net-im/gajim | ||
+ | |||
+ | {{свернуть|заголовок=Подробности установки| | ||
+ | make showconfig-recursive -C /usr/ports/net-im/gajim | ||
+ | ===> The following configuration options are available for gajim-0.14.3 and dependencies | ||
+ | ===> The following configuration options are available for gajim-0.14.3: | ||
+ | DBUS=on "Adds support for D-Bus (Desktop Bus)" | ||
+ | NLS=on "Native Language Support via gettext utilities" | ||
+ | ===> Use 'make config' to modify these settings | ||
+ | ===> The following configuration options are available for python27-2.7.2: | ||
+ | THREADS=on "Enable thread support" | ||
+ | |||
+ | HUGE_STACK_SIZE=off "Use a larger thread stack" | ||
+ | SEM=off "Use POSIX semaphores (experimental)" | ||
+ | PTH=off "Use GNU Pth for threading/multiprocessing" | ||
+ | UCS4=on "Use UCS4 for unicode support" | ||
+ | PYMALLOC=on "Use python's internal malloc" | ||
+ | IPV6=on "Enable IPv6 support" | ||
+ | FPECTL=off "Enable floating point exception handling" | ||
+ | ===> Use 'make config' to modify these settings | ||
+ | ===> The following configuration options are available for py27-gtk-2.22.0_2: | ||
+ | NUMPY=off "Enable numpy support (pulls in gcc44)" | ||
+ | ===> Use 'make config' to modify these settings | ||
+ | ===> The following configuration options are available for glib-2.26.1_1: | ||
+ | COLLATION_FIX=off "fix string collation" | ||
+ | ===> Use 'make config' to modify these settings | ||
+ | ===> The following configuration options are available for gtk-2.22.1_1: | ||
+ | CUPS=on "Enable cups printing support" | ||
+ | ===> Use 'make config' to modify these settings | ||
+ | ===> The following configuration options are available for libglade2-2.6.4_4: | ||
+ | PYTHON=on "Use Python" | ||
+ | ===> Use 'make config' to modify these settings | ||
+ | ===> The following configuration options are available for perl-5.12.3: | ||
+ | DEBUGGING=off "Build with debugging support" | ||
+ | GDBM=off "Build GDBM_File extension" | ||
+ | PERL_MALLOC=off "Use Perl malloc" | ||
+ | PERL_64BITINT=on "Use 64 bit integers (on i386)" | ||
+ | THREADS=off "Build threaded perl" | ||
+ | MULTIPLICITY=off "Use multiplicity" | ||
+ | SITECUSTOMIZE=off "Run-time customization of @INC" | ||
+ | USE_PERL=on "Rewrite links in /usr/bin" | ||
+ | ===> Use 'make config' to modify these settings | ||
+ | ===> The following configuration options are available for libiconv-1.13.1_1: | ||
+ | EXTRA_ENCODINGS=on "Include extra character sets" | ||
+ | EXTRA_PATCHES=off "Apply patches to fix CP932, add EUCJP-MS" | ||
+ | ===> Use 'make config' to modify these settings | ||
+ | ===> The following configuration options are available for enchant-1.6.0: | ||
+ | ASPELL=on "Enable Aspell backend" | ||
+ | HSPELL=off "Enable Hspell backend" | ||
+ | HUNSPELL=off "Enable Hunspell backend" | ||
+ | ISPELL=off "Enable Ispell backend" | ||
+ | ZEMBEREK=off "Enable zemberek backend (requires DBUS)" | ||
+ | ===> Use 'make config' to modify these settings | ||
+ | ===> The following configuration options are available for cups-client-1.4.6: | ||
+ | GNUTLS=on "Build with GNUTLS library" | ||
+ | ===> Use 'make config' to modify these settings | ||
+ | ===> The following configuration options are available for cairo-1.10.2_2,1: | ||
+ | |||
+ | GL=off "Enable OpenGL Support" | ||
+ | XCB=on "Enable XCB (X C-language Binding) Support" | ||
+ | GLIB=on "Enable GObject Functions Feature" | ||
+ | ===> Use 'make config' to modify these settings | ||
+ | ===> The following configuration options are available for sqlite3-3.7.6.3: | ||
+ | FTS3=on "Enable FTS3/4 (Full Text Search) module" | ||
+ | ICU=off "Enable built with ICU" | ||
+ | RTREE=off "Enable R*Tree module" | ||
+ | RAMTABLE=off "Store temporary tables in RAM = yes" | ||
+ | UPD_DEL_LIMIT=off "ORDER BY and LIMIT on UPDATE and DELETE" | ||
+ | SOUNDEX=off "Enables the soundex() SQL function" | ||
+ | METADATA=on "Enable column metadata" | ||
+ | STAT2=off "Help SQLite to chose a better query plan" | ||
+ | MEMMAN=off "Allows it to release unused memory" | ||
+ | SECURE_DELETE=on "Overwrite deleted information with zeros" | ||
+ | UNLOCK_NOTIFY=on "Enable notification on unlocking" | ||
+ | THREADSAFE=on "Build thread-safe library" | ||
+ | EXTENSION=on "Allow loadable extensions" | ||
+ | TCLWRAPPER=off "Enable TCL wrapper" | ||
+ | ===> Use 'make config' to modify these settings | ||
+ | ===> The following configuration options are available for gamin-0.1.10_4: | ||
+ | GAM_POLLER=off "Use gamin's poller instead of kqueue's" | ||
+ | ===> Use 'make config' to modify these settings | ||
+ | ===> The following configuration options are available for libxslt-1.1.26_2: | ||
+ | MEM_DEBUG=off "Enable memory debugging" | ||
+ | CRYPTO=on "Enable crypto support for exslt" | ||
+ | ===> Use 'make config' to modify these settings | ||
+ | ===> The following configuration options are available for png-1.4.5: | ||
+ | APNG=off "Animated PNG support" | ||
+ | ===> Use 'make config' to modify these settings | ||
+ | ===> The following configuration options are available for jasper-1.900.1_9: | ||
+ | OPENGL=off "OpenGL support" | ||
+ | UUID=off "UUID support (required by GDAL)" | ||
+ | ===> Use 'make config' to modify these settings | ||
+ | ===> The following configuration options are available for pixman-0.22.0: | ||
+ | SIMD=off "Enable autodetection of SIMD features (MMX, SSE2, VMX)" | ||
+ | ===> Use 'make config' to modify these settings | ||
+ | ===> The following configuration options are available for tcl-8.5.10: | ||
+ | TCL85_MAN=off "Install tcl 8.5 function manpages" | ||
+ | TZDATA=off "Install tcl timezone data" | ||
+ | TCL_MODULES=on "Install tcl common modules" | ||
+ | ===> Use 'make config' to modify these settings | ||
+ | ===> The following configuration options are available for m4-1.4.16,1: | ||
+ | LIBSIGSEGV=off "Use libsigsegv for better diagnostics" | ||
+ | ===> Use 'make config' to modify these settings | ||
+ | }} | ||
+ | |||
+ | На вкладке Audio/Video в настройках Gajim все контролы заблокированы. | ||
+ | |||
+ | Установил програмный каркас [[w:en:Farsight|Farsight]]. | ||
+ | make install clean -C /usr/ports/net-im/farsight2 | ||
+ | |||
+ | На вкладке Audio/Video появились слова Autodetect, но никакие явные названия устройств не отображаются (так на всех системах выглядит). | ||
+ | |||
+ | [[File:Gajim-audio video tab.png|center]] | ||
+ | |||
+ | Собеседник с Debian выполнил | ||
+ | apt-get install gajim | ||
+ | apt-get install python-farsight | ||
+ | |||
+ | В окне чата, контакта который поддерживает передачу звука (в этом случае был другой Gajim) кнопки с изображением микрофона и камеры активные. По нажатию на первую установилось соединение. Но меня не слышно. В самом окне после установления соединения появляется уровень микрофона и звука, но все равно не слышно. | ||
+ | |||
+ | Выполнил в консоли (до этого было Mixer mic is currently set to 0:0) | ||
+ | mixer mic 100 | ||
+ | Стало меня слышно. Регулятор микрофона тоже стал влиять на уволень звука. | ||
+ | |||
+ | Интерфейс для звонков достаточно простой - кнопкой с трубкой нажал - вызов пошел. У собеседника появляется окно с предложением ответить на звонок. Для установления видеосоединения надо нажать кнопку с веб-камерой. Соответственно, нажуно нажать две кнопки, придет два запроса, с которыми нужно согласиться. Т.е. установка видеосоединения не приводит к автоматическому аудиосоединению. | ||
+ | |||
+ | При работе столкнулись с тем, что при одновременном вызове друг друга мессаджбоксы с запросам зависают и не реагируют на выбранный в них вариант. | ||
+ | |||
+ | В Gajim существует баг (нужно указать номер в траке для контроля), что для видеосвязи камеры должны быть у обоих участников. также есть момент с тем что кнопка видеовызова активна вне зависимости от возможностей оппонента и собственных - она всегда активна, когда есть возможность общения голосом (т.е. есть Jingle). | ||
+ | |||
+ | Также есть еще ошибка, при которой кнопки голосового и видеовызова неактивны (хотя клиент собеседника имеет необходимые возможности) - для этого надо закрыть окно чата и открыть его повторно. | ||
+ | |||
+ | Еще один баг заключается в том, что если вы один раз не приняли вызов, то он подвисает и нельзя уже согласиться с последующими вызовами. Это исправляется только перезапуском клиента. | ||
+ | |||
+ | ;Вариант NAT-NAT | ||
+ | На той же вкладке Audio/Video указывается ''stun.iptel.org'' | ||
+ | |||
+ | == FreeBSD + [[Empathy]] == | ||
+ | Сломана сборка из порта - [http://lists.pcbsd.org/pipermail/pbibuild/2011-June/034842.html см вывод Make]. Отписал на gnome@freebsd.org | ||
+ | |||
+ | == FreeBSD + [[Jitsi]] == | ||
+ | В портах отсутствует. | ||
+ | |||
+ | == FreeBSD + [[Psi+]] == | ||
+ | В портах нет, готовые сборки только под i386. Собрать [http://psi-plus.com/wiki/doku.php/ru:freebsd по инструкции] самостоятельно пока не получилось. | ||
+ | |||
+ | == Отладка == | ||
+ | У Psi выводятся сообщения в STDOUT, но все равно единственный вариант это tcpdump: | ||
+ | tcpdump -n -i age0 "udp and (src 217.25.221.127 or dst 217.25.221.127)" |
Latest revision as of 07:49, 22 September 2015
Статьи по этой теме на других вики-сайтах: | |
---|---|
Обсуждение:Jingle — JabberWorld |
Какие генеральные проблемы мешают нормально общаться голосом и использовать видеокамеру.
- Малое количество клиентов поддерживающих Jingle
- Неотлаженность реализации Jingle в клиентах.
- Конфигурация BSD-based NAT-ов - см. раздел ниже
Contents
- 1 Инструкция для пользователей
- 2 Ситуация с FreeBSD
- 3 Конфигурация сети
- 4 Сочетания клиентов
- 5 Версии ПО
- 6 Результаты
- 7 Клиенты которые следует проверить
- 8 Которые нет смысла проверять
- 9 Определение конфигурации
- 10 Описание NAT
- 11 FreeBSD, Psi 0.14 + Psi-media
- 12 FreeBSD, Gajim
- 13 FreeBSD + Empathy
- 14 FreeBSD + Jitsi
- 15 FreeBSD + Psi+
- 16 Отладка
Инструкция для пользователей[edit]
- В Psi для разговора надо в правокнопочном меню контакта, с которым вы хотите поговорить выбрать Voice Call.
- В Gajim в окне чата есть кнопка с пиктограммой старостильного микрофона и вебкамеры. Каждая из кнопок устанавливает свой тип связи. Если кнопки неактивны, а вы знаете что у собеседника все необходимое для мультимедийного звонка есть, то закройте окно и снова откройте - кнопки станут активными (это так проявляется еще неисправленная ошибка)
- В Pidgin - в правокнопочтом меню контакта появляется Audio Call с иконкой гарнтитуры, а также Audio/Video Call с иконкой вебкамеры. Появляются они в зависимости от того, поддерживает ли контакт эти способы связи.
Ситуация с FreeBSD[edit]
С FreeBSD и другими BSD-системами. По-видимому, в большинстве этим систем NAT реализуется способами, которые по умолчанию используют случайный выбор портов для установления соединения. Что является серьезным препятствием для работы Jingle. По-видимому, эта рандомизация применяется для повышения безопасности этих систем (защита от спуфинга?). На Linux такого поведения по умолчанию нет.
Системным администраторам можно порекомендовать изменять поведение NAT (по-видимому, это большого влияния на безопасность это не окажет), с тем чтобы порты оставались те, которые приложение запросило и согласовало с второй стороной.
Вместо nat on $ext_if from $int_net to any -> $ext_addr следует писать
nat on $ext_if from $int_net to any -> ($ext_if) static-port
Например, внутренняя сеть 192.168.5.0/24, IP на внешнем интерфейсе (единственный что есть, как указывая явно - надо уточнить), em0 - сетевой контроллер, смотрящий наруж:
nat on em0 from 192.168.5.0/24 to any -> (em0) static port
- natd
проверить и написать
- ipfw
проверить и написать
- ipfilter
проверить и написать
Конфигурация сети[edit]
- Binary: Primary: Indepndent Mapping, Port Dependent Filter, preserves ports, no hairpin
- Leksey: Primary: Indepndent Mapping, Port Dependent Filter, random port, no hairpin (nat на базе pf с nat on $ext_if from $int_net to any -> $ext_addr)
- leksey@дома: Primary: Port Restricted Nat, preserves ports, no hairpin (natd, FreeBSD 7.0 natd_enable="YES")
- b108: Primary: Indepndent Mapping, Port Dependent Filter, preserves ports, no hairpin (Return value is 0x000017)
Сочетания клиентов[edit]
- Psi+,Ubuntu - Gajim,Gentoo - ок
Версии ПО[edit]
- Empathy версия 2.30.2 из Ubuntu 10.04.1 LTS (lsb_release -a) - настройки STUN в этом клиенте нету. Может брать из SRV? Но надо тогда чтобы у обоих JID был прописан у сервера?
Результаты[edit]
- Empathy leksey => Gmail leksey' pal в браузере под MS Windows (ставится плагин бинарный в браузер, чтоб можно было звонить) = голос слышали на стороне MS Windows, изображения не было (не умеет? или не сработало?)
- Empathy leksey => Gajim binary - не получилось установить соединение, кроме того, встретился баг Gajim с тем что клиент после первой попытки соединения полагает что оно уже установлено и отвергает последующие
- Empathy leksey <=> Empathy leksey' soworker - все работало - кроме звука в одну сторону. Но машины были в одной локалке при этом.
- Empathy leksey <=> Empathy b108 (21 April 2011) - не установилось даже соединение
- HabaHaba leksey <=> Empathy b108 (21 April 2011) - голос в обе стороны работал. но проблема что после минуты-другой падал флэш хабовский.
- Jitsi 1.0 beta1 build 3593, Linux <=> Windows — голос работал, но видео тормозилось (фактически статично отображался первый кадр). Через пару минут завис Linux-клиент.
Обновление: тестовый звонок через build 3820 ‒ качество видеосвязи улучшилось, клиент не вис.
Клиенты которые следует проверить[edit]
- Psi c Psimedia (в генте есть пакет psimedia, который вроде ставится и на обычную пси)
- Psi+ c Psimedia
- Gajim
- Jitsi
- Habahaba
- В дебиане кривая сборка Psi+ - падает.
- Jitsi нет в репозитариях Ubuntu
Которые нет смысла проверять[edit]
- Gajim для MS Windows - тот фреймворк что они используют для виндоза отсутствует
Определение конфигурации[edit]
Берется из вывода stun-клиента, запущенного следующим образом. Версия для MS Windows, FreeBSD, Ubuntu (sudo apt-get install stun)
stun_client stun.xten.com
- MS Windows
client.exe stunserver.org
Описание NAT[edit]
Random port означает, что данная реализация NAT не заботится о том, чтобы номер порта источника в исходящем наружу пакете оставался таким же, каким он был получен от хоста локальной сети, и заменяет его на случайное значение в диапазоне от 1024 до 65535. Можно предположить, что по замыслу автора идеи «random ports» такая замена уменьшает вероятность конфликта между записями, если несколько хостов локальной сети одновременно попытаются отправить наружу пакеты с совпадающим номером порта источника.
Поскольку номер порта источника в исходящих пакетах формируется хостами локальной сети также случайным образом, преимущества такой замены сомнительны, из недостатков же можно назвать хотя бы потенциальную проблему с протоколом RPC, да и не только.
Как видно из примера, наш маршрутизатор старается сохранять номер порта неизменным (11.22.33.44:1053 и 192.168.0.141:1053), из чего следует, что запущенный в его локальной сети STUN-клиент сообщил бы о нем preserves ports.
К слову, на FreeBSD этот результат достигается ключом «-same_ports» или «-s» в строчке запуска или конфигурационном файле демона natd. Есть возможность поставить ключ и проверить?
FreeBSD, Psi 0.14 + Psi-media[edit]
Внешний IP с единственной настройкой в rc.conf ifconfig_age0="dhcp"
Проблема - случайно выбирается порт для установления соединения, что не позволяет работать когда на одной из сторон NAT. Видимо, psi не делает специального указания, с какого порта слать
- Сменен порт в настройках Psi (в поле Data transfer base port) с 8010 на 49152 (в соответствие с The Ephemeral Port Range). Поле Data transfer externak adress для указания "внешнего" адреса при работе со STUN и поэтому оно должно быть пустым.
Не помогло.
- Выключена рандомизация (Ports are allocated at random within the specified port range in order to increase the difficulty of random spoofing attacks) sysctl net.inet.ip.portrange.randomized=0
После этого вместо рандовного выбора - стало последовательно наращивать адреса, но тоже выбирая рандомно их диапазон.
18:42:24.588741 IP 89.250.8.14.51357 > 217.25.221.127.60529: UDP, length 92 51357 != 49152
Лог (в комменте)
FreeBSD, Gajim[edit]
Gajim не ниже версии 0.14.1 должно быть - до этого поддержки голоса не было. Старый клиент можно заметить еще и потому что в у него настройках нету вкладки Audio/Video.
С моей стороны публичный IP, у собеседников NATы неизвестного типа. У первого Gentoo, у второго Debian.
Обновил порты, установил на днях обновившийся gajim-0.14.3. Все OPTIONS по умолчанию оставлены. Соответственно, [x]DBUS взведен
make install clean -C /usr/ports/net-im/gajim
На вкладке Audio/Video в настройках Gajim все контролы заблокированы.
Установил програмный каркас Farsight.
make install clean -C /usr/ports/net-im/farsight2
На вкладке Audio/Video появились слова Autodetect, но никакие явные названия устройств не отображаются (так на всех системах выглядит).
Собеседник с Debian выполнил
apt-get install gajim apt-get install python-farsight
В окне чата, контакта который поддерживает передачу звука (в этом случае был другой Gajim) кнопки с изображением микрофона и камеры активные. По нажатию на первую установилось соединение. Но меня не слышно. В самом окне после установления соединения появляется уровень микрофона и звука, но все равно не слышно.
Выполнил в консоли (до этого было Mixer mic is currently set to 0:0)
mixer mic 100
Стало меня слышно. Регулятор микрофона тоже стал влиять на уволень звука.
Интерфейс для звонков достаточно простой - кнопкой с трубкой нажал - вызов пошел. У собеседника появляется окно с предложением ответить на звонок. Для установления видеосоединения надо нажать кнопку с веб-камерой. Соответственно, нажуно нажать две кнопки, придет два запроса, с которыми нужно согласиться. Т.е. установка видеосоединения не приводит к автоматическому аудиосоединению.
При работе столкнулись с тем, что при одновременном вызове друг друга мессаджбоксы с запросам зависают и не реагируют на выбранный в них вариант.
В Gajim существует баг (нужно указать номер в траке для контроля), что для видеосвязи камеры должны быть у обоих участников. также есть момент с тем что кнопка видеовызова активна вне зависимости от возможностей оппонента и собственных - она всегда активна, когда есть возможность общения голосом (т.е. есть Jingle).
Также есть еще ошибка, при которой кнопки голосового и видеовызова неактивны (хотя клиент собеседника имеет необходимые возможности) - для этого надо закрыть окно чата и открыть его повторно.
Еще один баг заключается в том, что если вы один раз не приняли вызов, то он подвисает и нельзя уже согласиться с последующими вызовами. Это исправляется только перезапуском клиента.
- Вариант NAT-NAT
На той же вкладке Audio/Video указывается stun.iptel.org
FreeBSD + Empathy[edit]
Сломана сборка из порта - см вывод Make. Отписал на gnome@freebsd.org
FreeBSD + Jitsi[edit]
В портах отсутствует.
FreeBSD + Psi+[edit]
В портах нет, готовые сборки только под i386. Собрать по инструкции самостоятельно пока не получилось.
Отладка[edit]
У Psi выводятся сообщения в STDOUT, но все равно единственный вариант это tcpdump:
tcpdump -n -i age0 "udp and (src 217.25.221.127 or dst 217.25.221.127)"