Ребята, извиняюсь, если вопрос глупый, но нужна ваша помощь. Пытаюсь настроить Back to My Mac в своей сети на базе Mikrotik и, насколько я понимаю, для этого нужно включить uPnP — я так и сделал, согласно инструкции Mikrotik, такой, какая она есть. Внутренний и внешний интерфейсы у меня прописаны и всё такое. Но это не работает. Клиент Mac пишет, что uPnP не включён и всё в таком духе. Мои Mikrotik'и — один RB500, другой x86-бокс — работают на RouterOS версии 3.22. Буду очень благодарен за дельные советы (шаг за шагом, для полного чайника). Кто-нибудь уже успешно это сделал? С уважением, Ian Beeby
Apple Back to My Mac и реализация uPnP в Mikrotic...
Apple Back to My Mac и реализация uPnP в Mikrotic..., RouterOS
01.02.2010 23:07:00
|
|
|
|
13.07.2010 18:54:00
Сегодня я занялся охотой на ошибки, чтобы понять, почему UPNP и Apple Back to my Mac не работают вместе… Во-первых: у меня есть Routerboard RB450G с последней версией RouterOS 5.0beta4. Конфигурация такая: Routerboard 450G настроен как основной NAT (маскарадинг) роутер для моей небольшой сети. IP: 192.168.0.1 Мой компьютер подключается напрямую к Routerboard по Ethernet. IP: 192.168.0.102 Мои настройки UPNP такие: [admin@MikroTik] /ip upnp> print
enabled: yes allow-disable-external-interface: no show-dummy-rule: yes Я попробовал несколько разных программ, которые форвардят порты через UPNP и/или NAT-PMP. Все работало отлично, кроме сервиса Back to my Mac, который постоянно говорит, что мой роутер не поддерживает UPNP (ну конечно, как же иначе ^^). Я перепробовал всё, что нашёл в интернете, чтобы заставить это работать (например, пост прямо перед этим), но Back to my Mac и RouterOS как будто не хотят играть вместе. Эта проклятая несовместимость меня так достала, что я решил запустить Wireshark и разобраться поглубже. Я попытался форвардить порт тремя разными программами, чтобы понять в чём разница: - Transmission ( - Portmap ( - Сервис Apple Back to my Mac С первыми двумя программами я получаю то, что ожидаю — красивый успешный ответ на запрос проброса порта. Transmission: ===ЗАПРОС=== POST /upnp/control/wanipconn-7 HTTP/1.0 Host: 192.168.0.1:2828 User-Agent: Darwin/10.4.0, UPnP/1.0, MiniUPnPc/1.4 Content-Length: 606 Content-Type: text/xml SOAPAction: "urn:schemas-upnp-org:service:WANIPConnection:1#AddPortMapping" Connection: Close Cache-Control: no-cache Pragma: no-cache [здесь содержится XML тело запроса] ===ОТВЕТ=== HTTP/1.1 200 OK CONTENT-LENGTH: 282 CONTENT-TYPE: text/xml; DATE: Tue, 13 Jul 2010 15:08:31 GMT EXT: SERVER: RouterOS/5.0beta4UPnP/1.0 MikroTik UPnP/1.0 [XML тело ответа] Portmap: ===ЗАПРОС=== POST /upnp/control/wanipconn-7 HTTP/1.1 Host: 192.168.0.1:2828 User-Agent: POSIX, UPnP/1.0, miniUPnPc/1.0 Content-Length: 614 Content-Type: text/xml SOAPAction: "urn:schemas-upnp-org:service:WANIPConnection:1#AddPortMapping" Connection: Close Cache-Control: no-cache Pragma: no-cache [XML тело запроса] ===ОТВЕТ=== HTTP/1.1 200 OK CONTENT-LENGTH: 282 CONTENT-TYPE: text/xml; DATE: Tue, 13 Jul 2010 15:09:48 GMT EXT: SERVER: RouterOS/5.0beta4UPnP/1.0 MikroTik UPnP/1.0 [XML тело ответа] Но когда я пытаюсь сделать то же с Apple Back to my Mac, я НЕ ПОЛУЧАЮ НИЧЕГО. Back to my Mac: ===ЗАПРОС=== POST /upnp/control/wanipconn-7 HTTP/1.1 Content-Type: text/xml; SOAPAction: "urn:schemas-upnp-org:service:WANIPConnection:1#DeletePortMapping" User-Agent: Mozilla/4.0 (compatible; UPnP/1.0; Windows 9x) Host: 192.168.0.1:2828 Content-Length: 604 Connection: close Pragma: no-cache [XML тело запроса] ===ОТВЕТ=== Нет никакого сообщения об ошибке, ничего! Только пустой пакет в ответ: 84 6.360812 192.168.0.1 192.168.0.102 TCP itm-lm > 63728 [ACK] Seq=1 Ack=913 Win=7616 Len=0 TSV=480186 TSER=464120379 [двоичные данные пакета] Разве не должно быть хотя бы какое-то подтверждение или сообщение об ошибке? (как описано в разделе 2.4.16.1 Единственная заметная разница между тремя запросами в том, что Apple гораздо активнее использует XML-пространства имён и атрибуты, чем остальные две программы. Например: <NewExternalPort xmlns:dt="urn:schemas-microsoft-com:datatypes" dt:dt="ui2">4500</NewExternalPort> вместо намного проще <NewExternalPort>12345</NewExternalPort>, как у первых двух. Скорее всего, это не проблема, поскольку XML-запросы все по крайней мере корректно сформированы (я не валидировал их по XSD, но думаю, что и это в порядке), но не может ли быть так, что RouterOS неправильно парсит такие XML-запросы? Очень надеюсь, что моя информация поможет исправить этот баг как можно скорее, потому что эта функция мне реально нужна, и Apple Back to my Mac — не единственная реализация UPNP, у которой проблемы с RouterOS. С уважением, Мартин (aka maruchinu) P.S. Могу предоставить файлы Wireshark, которые я снял, но не хочу выкладывать их публично, так как там может быть другая чувствительная информация. |
|
|
|
15.07.2010 11:44:00
Пожалуйста, отправьте файл supout.rif в службу поддержки, и было бы отлично, если бы мы также могли получить удалённый доступ к роутеру.
|
|
|
|
15.07.2010 13:08:00
Отправил supout.rif, логин для удалённого доступа и немного другой информации в техподдержку через форму обратной связи. Надеюсь, это поможет. Эта штука становится всё страннее с каждым днём, когда я на неё смотрю. Вчера я попробовал небольшую программу под названием HTTPClient (
HTTPClient: POST /upnp/control/wanipconn-7 HTTP/1.1 Content-Type: text/xml; Soapaction: "urn:schemas-upnp-org:service:WANIPConnection:1#AddPortMapping" User-Agent: Mozilla/4.0 (compatible; UPnP/1.0; Windows 9x) Host: 192.168.0.1:2828 Connection: close Content-Length: 1116 (<-- HTTPClient изменил с 1119 на 1116) Pragma: no-cache <?xml version="1.0"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <m:AddPortMapping xmlns:m="urn:schemas-upnp-org:service:WANIPConnection:1"> <NewRemoteHost xmlns:dt="urn:schemas-microsoft-com:datatypes" dt:dt="string"></NewRemoteHost> <NewExternalPort xmlns:dt="urn:schemas-microsoft-com:datatypes" dt:dt="ui2">4501</NewExternalPort> <NewProtocol xmlns:dt="urn:schemas-microsoft-com:datatypes" dt:dt="string">UDP</NewProtocol> <NewInternalPort xmlns:dt="urn:schemas-microsoft-com:datatypes" dt:dt="ui2">4501</NewInternalPort> <NewInternalClient xmlns:dt="urn:schemas-microsoft-com:datatypes" dt:dt="string">192.168.0.102</NewInternalClient> <NewEnabled xmlns:dt="urn:schemas-microsoft-com:datatypes" dt:dt="boolean">1</NewEnabled> <NewPortMappingDescription xmlns:dt="urn:schemas-microsoft-com:datatypes" dt:dt="string">iC4500</NewPortMappingDescription> <NewLeaseDuration xmlns:dt="urn:schemas-microsoft-com:datatypes" dt:dt="ui4">0</NewLeaseDuration> </m:AddPortMapping> </SOAP-ENV:Body> </SOAP-ENV:Envelope> ============================================================ HTTP/1.1 200 OK CONTENT-LENGTH: 282 CONTENT-TYPE: text/xml; DATE: Wed, 14 Jul 2010 18:06:30 GMT EXT: SERVER: RouterOS/5.0beta4UPnP/1.0 MikroTik UPnP/1.0 <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <s:Body> <u:AddPortMappingResponse xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1"></u:AddPortMappingResponse> </s:Body> </s:Envelope> Потом я попытался сделать то же самое, используя сервис Back to my Mac, и — конечно же — не получилось?! Back to my Mac: POST /upnp/control/wanipconn-7 HTTP/1.1 Content-Type: text/xml; SOAPAction: "urn:schemas-upnp-org:service:WANIPConnection:1#AddPortMapping" User-Agent: Mozilla/4.0 (compatible; UPnP/1.0; Windows 9x) Host: 192.168.0.1:2828 Content-Length: 1119 Connection: close Pragma: no-cache <?xml version="1.0"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <m:AddPortMapping xmlns:m="urn:schemas-upnp-org:service:WANIPConnection:1"> <NewRemoteHost xmlns:dt="urn:schemas-microsoft-com:datatypes" dt:dt="string"></NewRemoteHost> <NewExternalPort xmlns:dt="urn:schemas-microsoft-com:datatypes" dt:dt="ui2">4500</NewExternalPort> <NewProtocol xmlns:dt="urn:schemas-microsoft-com:datatypes" dt:dt="string">UDP</NewProtocol> <NewInternalPort xmlns:dt="urn:schemas-microsoft-com:datatypes" dt:dt="ui2">4500</NewInternalPort> <NewInternalClient xmlns:dt="urn:schemas-microsoft-com:datatypes" dt:dt="string">192.168.0.102</NewInternalClient> <NewEnabled xmlns:dt="urn:schemas-microsoft-com:datatypes" dt:dt="boolean">1</NewEnabled> <NewPortMappingDescription xmlns:dt="urn:schemas-microsoft-com:datatypes" dt:dt="string">iC4500</NewPortMappingDescription> <NewLeaseDuration xmlns:dt="urn:schemas-microsoft-com:datatypes" dt:dt="ui4">0</NewLeaseDuration> </m:AddPortMapping> </SOAP-ENV:Body> </SOAP-ENV:Envelope> ========================================== НИ КАКОГО ОТВЕТА! Единственное отличие, которое я заметил с помощью Wireshark — HTTPClient, похоже, изменил заголовок Content-Length, но разве это может быть причиной проблемы? Эта штука реально, реально странная… |
|
|
|
22.06.2015 05:18:00
Мне не удалось заставить UPnP в RouterOS 5.6 работать с Apple Back to My Mac.
|
|
|
|
Читают тему