Ошибка rpc сетевая ошибка 111 в соединении отказано

Когда я пытаюсь установить пакеты с помощью sudo apt-get install, независимо от того, что я пытаюсь установить, он возвращает ошибку 111: Соединение отказано.

Веб-браузер работает, но не sudo apt-get install. Я попытался установить инструменты Ruby, PHP и RHC с открытой сменой, а также попытался использовать Synaptic для обновления / установки пакетов, но мне это не удалось.

Я получаю ошибки, подобные следующим, каждый раз:

W: Failed to fetch http://security.ubuntu.com/ubuntu/pool/main          /liby/libyaml  > /libyaml-0-2_0.1.4-3ubuntu3.1_i386.deb
Could not connect to 155.238.4.87:8080 (155.238.4.87). - connect (111: Connection refused)

Я использую Ubuntu 14.04.1 LTS.

Я подключаюсь к своему маршрутизатору adsl по беспроводной сети и запускаю образ, полученный из моего университета, работающего на vmware, с использованием Windows 10. В университете использовался прокси-сервер, но я отредактировал его в файле настроек M2 и отредактировал firefox для автоматического определения прокси чтобы мой интернет заработал

Пожалуйста, может кто-нибудь помочь мне разобраться, как это исправить?

2015-09-25 11:20

5
ответов

Посмотрите, есть ли в прокси /etc/apt/apt.conf (или где-то в /etc/apt/apt/apt.conf.d).

Там будет файл со строкой что-то вроде: Acquire::http::Proxy "http://155.238.4.87:8080";

Прокомментируйте строки, поставив # в начале и попробуйте еще раз.


ssta

25 сен ’15 в 12:01
2015-09-25 12:01

2015-09-25 12:01

Не удалось подключиться к хххх:8080

Подключение к IP:8080 указывает, что вы используете прокси.

Вот несколько предложений:

  • Проверить по: apt-config dump | grep -i proxy,
  • Если прокси используется, отредактируйте /etc/apt/apt.conf файл или проверьте конфигурационные файлы в /etc/apt/apt.conf.d/ или найти по grep -ri proxy /etc/apt/, затем настройте или удалите прокси.
  • Чтобы проверить прямое подключение к security.ubuntu.com, бежать:

    curl http://security.ubuntu.com/ && echo Works
    

    Чтобы проверить соединение через прокси, запустите:

    curl -x http://PROXYIP:8080/ http://security.ubuntu.com/ && echo Works
    
  • Отладить сеть для apt-get Команда, вы можете запустить:

    strace -f -e network apt-get update 2>&1 | grep -C10 refused
    
  • Проверьте правила брандмауэра и конфигурацию сети.


kenorb

15 апр ’18 в 23:45
2018-04-15 23:45

2018-04-15 23:45

Я решаю эту ошибку, удаляя настройки сети.

Я делаю:

cat /etc/apt/apt.conf 

Если я увижу это

Acquire::http::proxy "http://macth-with-your-ip-or-dns-setting:8080/";
Acquire::https::proxy "https://macth-with-your-ip-or-dns-setting:9999/";

Я захожу в настройки системы сети и выбираю сеть, затем в раскрывающемся меню выберите » Метод прокси-сервера сети», выберите » Вручную», а затем УДАЛИТЕ все настройки. Нажмите Применить, чтобы сохранить сделанные вами настройки или настройки.

В терминале делаю

cat /etc/apt/apt.conf

если нет вывода, вы закончили и можете apt-get update

2016-10-15 21:45

  1. Первая проверка /etc/apt/apt.conf: если вы нашли Acquire::http::proxy "http://x.x.x.x:8080/" только что прокомментировал это с (#) в начале строки.

  2. Тогда проверь /etc/environment: если вы нашли http_proxy="http://x.x.x.x:8080/" только что прокомментировал это с (#) в начале строки.


goodCon

26 сен ’18 в 07:58
2018-09-26 07:58

2018-09-26 07:58

Порт, к которому вы пытаетесь подключиться, не открыт на IP-адресе, к которому вы пытаетесь подключиться, по одной из следующих причин.

  1. Вы подключаетесь к неправильному IP-адресу. Использоватьnmap на сервере с именем хоста localhost (nmap localhost), чтобы проверить, правильно ли работает сервер на нужном вам порту, и на клиенте с общедоступным IP-адресом вашего сервера, чтобы проверить, открыт ли порт назначения.

  2. Вы не смогли открыть порт на брандмауэре.

  3. Ваша система настроена на использование локального HTTP-прокси для apt-соединений, и такой прокси не запущен. Многие компании и высшие учебные заведения имеют ограничения, в том числе политику контроля типов веб-сайтов, к которым вы можете получить доступ.


karel

04 ноя ’20 в 07:30
2020-11-04 07:30

2020-11-04 07:30

Если вы используете версию Ubuntu WSL(Windows Subsystem для Linux), убедитесь, что у вас не включены сторонние антивирусы / брандмауэры.

Попробуйте деактивировать их и посмотрите, вернется ли соединение в нормальное состояние.

Известны проблемы, связанные со сторонними брандмауэрами, которые плохо работают с WSL.

См. WSL GitHub, выпуски 475 и 1720 для более подробной информации.


kaltu

27 янв ’19 в 13:33
2019-01-27 13:33

2019-01-27 13:33

Старый пост, я знаю, но была такая же проблема 18.04, и ни одно из найденных мной сообщений не имело решения, которое в конечном итоге сработало для нас. Добавляем в коллектив…

Err:4 http://security.ubuntu.com/ubuntu xenial-security InRelease
  Could not connect to security.ubuntu.com:80 (91.189.88.161). - connect (111: Connection refused)

Без прокси / Без прокси. Пинг нормально.
resolv.conf имеет только записи внутреннего сервера имен.

Проблема устранена путем удаления записи вручную:

91.189.88.161    security.ubuntu.com

в
/etc/hosts

Удачи!



15 сен ’20 в 17:20
2020-09-15 17:20

2020-09-15 17:20

  1. В командной строке введите
    sudo nano /etc/apt/apt.conf
  2. Удалите (или закомментируйте) содержимое файла, нажмите Ctrl+O, а затем Ctrl+X
  3. Войти
    sudo apt update
  4. Продолжайте делать то, что делали раньше.



19 янв ’20 в 00:47
2020-01-19 00:47

2020-01-19 00:47

See solution in comment.

  • pyspider version:
    0.3.9
  • Operating system:
    Debian GNU/Linux 8.10 (jessie)
  • Start up command:
    See /etc/init.d/pyspider and /opt/.pyspider/config.json below.
  • RabbitMQ info:
    See below
  • pip Tornado version:
    5.0

Expected behavior

Webui connects to scheduler

Actual behavior

Updated virtual machine with pyspider running on debian Jessie and got into trouble.
Webui doesn’t connect and raises error:

[W 180305 19:33:32 index:108] connect to scheduler rpc error: error(111, ‘Connection refused’)

Also following error is shown if pyspider -c config.json scheduler is explicitly executed.

[I 180306 09:24:41 scheduler:647] scheduler starting...
Exception in thread Thread-5:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 763, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/usr/local/lib/python2.7/dist-packages/pyspider/scheduler/scheduler.py", line 780, in xmlrpc_run
    self.xmlrpc_server = tornado.httpserver.HTTPServer(container, io_loop=self.xmlrpc_ioloop)
  File "/usr/local/lib/python2.7/dist-packages/tornado/util.py", line 312, in __new__
    instance.initialize(*args, **init_kwargs)
TypeError: initialize() got an unexpected keyword argument 'io_loop'

… normal output follows, listing projects and stats

How to reproduce

  • apt-get update
  • apt-get upgrade
  • installed latest rabbitmq
    rabbitmq-server_3.7.3-1_all.deb
  • installed latest erlang
    esl-erlang_20.2.2-1debianjessie_amd64.deb
  • apt-get update
  • added someusername and somepassword as shown here because without that got the error com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED — Login was refused using authentication mechanism PLAIN. For details see the broker logfile.

/opt/.pyspider/config.json

{
  "taskdb": "mysql+taskdb://someusername:somepassword@localhost:3306/taskdb",
  "resultdb": "mysql+resultdb://someusername:somepassword@localhost:3306/resultdb",
  "message_queue": "amqp://someusername:somepassword@localhost:5672/%2F",

  "webui": {
    "cdn": "//cdnjs.cloudflare.com/ajax/libs/",
    "port":80,
    "username": "someusername",
    "password": "somepassword",
    "need-auth": false
  }
}


/etc/init.d/pyspider

### BEGIN INIT INFO
# Provides:          pyspider
# Required-Start:    $remote_fs $network $syslog rabbitmq-server mysql
# Required-Stop:     $remote_fs $network $syslog rabbitmq-server mysql
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start pyspider daemon at boot time
# Description:       Enable pyspider service provided by daemon.
### END INIT INFO

# Some things that run always
touch /var/lock/pyspider

# Carry out specific functions when asked to by the system
case "$1" in
  start)
    echo "Starting PySpider"
    cd /opt/.pyspider

    # start **only one** scheduler instance
    pyspider -c config.json scheduler 2> scheduler.2.log > scheduler.log &

    # phantomjs
    pyspider -c config.json phantomjs 2> phantomjs.2.log >  phantomjs.log &

    # start fetcher / processor / result_worker instances as many as your needs
    pyspider -c config.json --phantomjs-proxy="localhost:25555" fetcher 2> fetcher.2.log > fetcher.log &
    pyspider -c config.json processor 2> processor.2.log > processor.log &
    pyspider -c config.json result_worker 2> result_worker.2.log > result_worker.log &

    # start webui, set `--scheduler-rpc` if scheduler is not running on the same host as webui
    pyspider -c config.json webui 2> webui.2.log > webui.log &

    ;;
  stop)
    echo "Stopping PySpider"
    (pgrep pyspider | xargs kill; pkill -f phantomjs; pgrep phantomjs | xargs kill; service rabbitmq-server stop)
    ;;
  *)
    echo "Usage: /etc/init.d/pyspider {start|stop}"
    exit 1
    ;;
esac

exit 0

rabbitmqctl status

Status of node rabbit@pyspider ...
[{pid,418},
 {running_applications,
     [{rabbit,"RabbitMQ","3.7.3"},
      {rabbit_common,
          "Modules shared by rabbitmq-server and rabbitmq-erlang-client",
          "3.7.3"},
      {xmerl,"XML parser","1.3.16"},
      {ranch_proxy_protocol,"Ranch Proxy Protocol Transport","1.4.4"},
      {ranch,"Socket acceptor pool for TCP protocols.","1.4.0"},
      {ssl,"Erlang/OTP SSL application","8.2.3"},
      {public_key,"Public key infrastructure","1.5.2"},
      {crypto,"CRYPTO","4.2"},
      {asn1,"The Erlang ASN1 compiler version 5.0.4","5.0.4"},
      {mnesia,"MNESIA  CXC 138 12","4.15.3"},
      {jsx,"a streaming, evented json parsing toolkit","2.8.2"},
      {os_mon,"CPO  CXC 138 46","2.4.4"},
      {inets,"INETS  CXC 138 49","6.4.5"},
      {recon,"Diagnostic tools for production use","2.3.2"},
      {lager,"Erlang logging framework","3.5.1"},
      {goldrush,"Erlang event stream processor","0.1.9"},
      {compiler,"ERTS  CXC 138 10","7.1.4"},
      {syntax_tools,"Syntax tools","2.1.4"},
      {sasl,"SASL  CXC 138 11","3.1.1"},
      {stdlib,"ERTS  CXC 138 10","3.4.3"},
      {kernel,"ERTS  CXC 138 10","5.4.1"}]},
 {os,{unix,linux}},
 {erlang_version,
     "Erlang/OTP 20 [erts-9.2] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-th                                                                                                                                                             reads:64] [hipe] [kernel-poll:true]n"},
 {memory,
     [{connection_readers,270192},
      {connection_writers,63056},
      {connection_channels,152112},
      {connection_other,490152},
      {queue_procs,282688},
      {queue_slave_procs,0},
      {plugins,5864},
      {other_proc,24010152},
      {metrics,217792},
      {mgmt_db,0},
      {mnesia,83368},
      {other_ets,1873712},
      {binary,34221544},
      {msg_index,28912},
      {code,24915284},
      {atom,1041593},
      {other_system,9198923},
      {allocated_unused,12606160},
      {reserved_unallocated,0},
      {strategy,rss},
      {total,[{erlang,96855344},{rss,71524352},{allocated,109461504}]}]},
 {alarms,[]},
 {listeners,[{clustering,25672,"::"},{amqp,5672,"::"}]},
 {vm_memory_calculation_strategy,rss},
 {vm_memory_high_watermark,0.4},
 {vm_memory_limit,630929817},
 {disk_free_limit,50000000},
 {disk_free,25049255936},
 {file_descriptors,
     [{total_limit,924},
      {total_used,15},
      {sockets_limit,829},
      {sockets_used,13}]},
 {processes,[{limit,1048576},{used,327}]},
 {run_queue,0},
 {uptime,83},
 {kernel,{net_ticktime,60}}]

— ОШИБКА:

Не удалось отправить широковещательное сообщение ‘bc-check-dc:.domena.net’:Сеть недоступна

Сеть не настроена или настроена не полностью:

Настройка сети через interfaces:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
     address i.i.i.i
     netmask 255.255.m.m
     gateway g.g.g.g

Если во время настройки и перезагрузки сети появляются ошибки, например «Failed to bring up eth0», то можно «очистить» интерфейс командой:

ip addr flush eth0

ald-client join


— ОШИБКА:

Не удалось отправить широковещательное сообщение ‘bc-check-dc:.da’: Сеть недоступна

— ОШИБКА:

Astra Linux Directory не сконфигурирована.

Заполните конфигурационный файл ‘/etc/ald/ald.conf’.

Не указан gateway в настройках сети клиента.

Не заполнен /etc/ald/ald.conf

ald-client join


— ОШИБКА:

Не удалось отправить широковещательное сообщение ‘bc-check-dc:.da’: Сеть недоступна

— ПРЕДУПРЕЖДЕНИЕ:

ALD сервер домена ‘.da’ не обнаружен.

— ОШИБКА:

Не удалось отправить широковещательное сообщение ‘bc-check-dc:.da’: Сеть недоступна

Не указан gateway в настройках сети клиента.

ald-client status


— ОШИБКА:

Не удалось отправить широковещательное сообщение ‘bc-check-dc:.da’: Сеть недоступна

— ПРЕДУПРЕЖДЕНИЕ:

ALD сервер домена ‘.da’ не обнаружен.

Не указан gateway в настройках сети клиента.

ald-client join server.da


— ПРЕДУПРЕЖДЕНИЕ:

Ошибка разрешения имени компьютера ‘server.da’.

Некорректно настроены имя и ip адрес, например в /etc/hosts отсутствует длинное имя машин:

127.0.0.1 localhost
192.168.1.1  myserver
192.168.1.2	 client

ald-init init


— ОШИБКА:

Триггер ‘ald-cfg-nfs:DoNFSInitFS’ вызвал исключение!

Ошибка RPC: Ошибка Krb5 сервера ALD: Ошибка проверки сообщения KRB-PRIV. в ADKrb5Server.cpp:248(decode)

:> Incorrect net address

:> (rpc-creds)

Ошибка может быть вызвана применением антивируса или изменением правил iptables.

ald-init init или ald-client join


— ОШИБКА: Ошибка аутентификации пользователя ‘admin/admin’: Ошибка MIT Kerberos V5:

Ошибка инициализации интерфейса администрирования kadm5. в ALDKadm5Connection.cpp:345(ConnectPassword)

:> GSS-API (or Kerberos) error

Некорректно настроены имя и ip адрес, например в /etc/hosts (разрешение имен может быть настроено и с помощью сервера DNS) следует указать ip, длинное и короткое имя и исключить запись «127.0.1.1 myserver»:

127.0.0.1 localhost
192.168.1.1 myserver.example.ru myserver
192.168.1.2	client.example.ru client

В /etc/ald/ald.conf не указаны длинное имя машины и домен:

DOMAIN=.example.ru
 
SERVER=myserver.example.ru

Недостаточно энтропии во время инициализации домена.

  • При вводе клиента (ald-client join), ошибка(345) возникает из-за несовпадения времени на машинах.

Утилита hostname должна выдавать короткое имя. После внесения изменений в файл /etc/hostname необходимо перезагрузить машину.

ald-init init или ald-client join


— ОШИБКА:

Ошибка OpenLDAP при GSSAPI соединения — Local error в ALDLDapConnection.cpp:734(Connect)

:> SASL(1): generic failure: GSSAPI Error: Unspecified GSS failure. Minor code may provide more information (Server ldap/dc.test.test not found in Kerberos database)

Разрешение имен настроено не верно, перепутаны местами длинное и короткое имя, пример:

127.0.0.1 localhost
192.168.1.1  myserver myserver.example.ru
192.168.1.2  client client.example.ru

ald-admin test-integrity —admin=ald-admin


Вход от имени пользователя ‘ald-admin’…

Введите пароль администратора ALD ‘ald-admin’: *

Проверка конфигурации домена…………………………….ok

Проверка модулей LDAP…………………………………..ok

Проверка индексов LDAP………………………………….ok

Проверка ограничений уникальности LDAP……………………ok

Проверка системных принципалов…………………………..— ОШИБКА:

Ошибка RPC: Ошибка MIT Kerberos V5: Не удалось получить список принципалов Kerberos. в ALDKadm5Connection.cpp:924(Principals)

:> Operation requires «list» privilege

:> (rpc-princ-list)

После добавления astra-admin в ALLOWED_LOCAL_GROUPS и выполнения ald-init commit-config снять права администратора домена, применить, установить права администратора домена, применить.

  • При выполнении: ald-client commit-config

— ОШИБКА:
Ошибка OpenLDAP при запросе ‘cn=client.ru,ou=hosts,dc=ru (objectClass=x-ald-host-object)’ — Can’tcontact LDAP server в ALDLdapConnection.cpp:213(Search)

На клиенте в файле /etc/hosts не внесены данные о резервном сервере.

Обновлено 15.02.2022

the rpc server is unavailable

Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов в рунете Pyatilistnik.org. В прошлый раз мы с вами разобрали замечательную утилиту командной строки robocopy, и с ее помощью научились создавать точные копии папок, двигать их в нужное расположение и многое другое. В сегодняшней публикации я покажу вам, как устранять ошибку «Сервер RPC недоступен (The rpc server is unavailable)», покажу примеры, когда ее мониторинг очень важен в работе корпоративных сервисов.

Для чего нужна служба «Удаленный вызов процедур (RPC)»

Удаленный вызов процедур (RPC) — это  протокол,  который одна программа может использовать для запроса услуги у программы, расположенной на другом компьютере в сети, без необходимости разбираться в деталях сети. RPC используется для вызова других процессов на удаленных системах, таких как локальная система. Вызов процедуры также иногда называют вызовом функции или вызовом подпрограммы .

RPC использует модель  клиент-сервер. Запрашивающая программа — это клиент, а программа, предоставляющая услуги, — это сервер. Подобно обычному или локальному вызову процедуры, RPC — это  синхронная операция, требующая приостановки запрашивающей программы до тех пор, пока не будут возвращены результаты удаленной процедуры. Однако использование облегченных процессов или потоков, которые совместно используют одно и то же адресное пространство, позволяет одновременно выполнять несколько RPC.

Язык определения интерфейса (IDL) — язык спецификации, используемый для описания интерфейса прикладного программирования (API) программного компонента — обычно используется в программном обеспечении удаленного вызова процедур. В этом случае IDL обеспечивает мост между машинами на обоих концах связи, которые могут использовать разные операционные системы (ОС) и компьютерные языки.

Процедура сообщения RPC

Когда программные операторы, использующие структуру RPC, компилируются в исполняемую программу, в скомпилированный код включается заглушка, которая выступает в качестве представителя кода удаленной процедуры. Когда программа запускается и выполняется вызов процедуры, заглушка получает запрос и пересылает его клиентской программе и времени выполнения на локальном компьютере. При первом вызове клиентской заглушки она связывается с сервером имен, чтобы определить транспортный адрес, по которому находится сервер.

Программа среды выполнения клиента знает, как обращаться к удаленному компьютеру и серверному приложению, и отправляет сообщение по сети, которое запрашивает удаленную процедуру. Точно так же сервер включает исполняющую программу и заглушку, которая взаимодействует с самой удаленной процедурой. Протоколы ответа-запроса возвращаются таким же образом.

Данная служба есть в любой операционной системе Windows, начиная от Windows 7 и заканчивая Windows 11 и в любой из Windows Server редакции.

Как работает RPC?

Когда вызывается служба RPC (удаленный вызов процедуры), вызывающая среда приостанавливается, параметры процедуры передаются по сети в среду, в которой должна выполняться процедура, а затем процедура выполняется в этой среде. Когда процедура завершается, результаты передаются обратно в вызывающую среду, где выполнение возобновляется, как если бы оно возвращалось из обычного вызова процедуры.

Во время RPC выполняются следующие шаги:

  1. Клиент вызывает клиентскую заглушку. Вызов представляет собой вызов локальной процедуры с параметрами, помещенными в стек обычным способом.
  2. Клиентская заглушка упаковывает параметры процедуры в сообщение и выполняет системный вызов для отправки сообщения. Упаковка параметров процедуры называется маршалингом.
  3. Локальная ОС клиента отправляет сообщение с клиентского компьютера на удаленный сервер.
  4. Серверная ОС передает входящие пакеты на серверную заглушку.
  5. Заглушка сервера распаковывает параметры из сообщения — это называется демаршалингом .
  6. Когда серверная процедура завершается, она возвращается к серверной заглушке, которая маршалирует возвращаемые значения в сообщение. Затем заглушка сервера передает сообщение на транспортный уровень.
  7. Транспортный уровень отправляет полученное сообщение обратно на клиентский транспортный уровень, который возвращает сообщение клиентской заглушке.
  8. Клиентская заглушка не упорядочивает возвращаемые параметры, и выполнение возвращается вызывающей стороне.

Клиент RPC по 135 порту подключается к службе RPC Endpoint Mapper (сопоставления конечных точек), а далее уже запрашивает номер порта, где запущено нужное RPC приложение. Служба сопоставления конечных точек вернет клиенту RPC номер динамического RPC порта (диапазон 1024 – 65535), на котором работает нужная служба. Дальше уже все взаимодействие идет по TCP порту

Если вы видите ошибку «Сервер RPC недоступен” (The RPC server is unavailable)», то у вас точно недоступен порт 135. Это может быть критичным для ряда ситуации. Например вы не сможете сохранить настройки RDS фермы, если у одного из хостов RDSH есть проблемы с RPC, то вы будите видеть ошибку «Could not change the connection state for server», вы не сможете перевести его в режим обслуживания (Drain Mode)

Could not change the connection state for server

Или в приложении Terminal Services Manager будет ошибка при попытке получения данных «Сервер RPC недоступен«.

Сервер RPC недоступен

Так же RPC может быть причиной проблемы в репликации контроллеров домена, где в логах Windows будет фигурировать ошибка ID 1722. Это очень не приятный момент, который может привести к большим проблемам.

Типы RPC

Существует пять типов RPC:

  1. Обычный метод работы, при котором клиент выполняет вызов и не продолжает работу до тех пор, пока сервер не вернет ответ.
  2. Клиент звонит и продолжает свою обработку. Сервер не отвечает.
  3. Средство для отправки нескольких клиентских неблокирующих вызовов в одном пакете.
  4. У клиентов RPC есть средство широковещательной рассылки, т. е. Они могут отправлять сообщения на множество серверов, а затем получать все полученные ответы.
  5. Клиент делает неблокирующий вызов клиент/сервер; сервер сигнализирует о завершении вызова путем вызова процедуры, связанной с клиентом.

Почему может не работать служба RPC

  1. Удаленный компьютер с которым идет взаимодействие выключен
  2. На удаленном сервере не запущена или перестала работать служба RPC
  3. Подключение по RPC происходит не к тому серверу (Может быть проблема с DNS или IP адресом)
  4. Есть блокировки между клиентом и сервером на фаэрволе
  5. Используются некорректные настройки сетевого подключение на клиенте или сервере

Преимущества удаленного вызова процедур

К преимуществам удаленного вызова процедур можно отнести следующее:

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

Недостатки RPC

Некоторые из недостатков RPC включают следующее:

  • Клиент и сервер используют разные среды выполнения для своих соответствующих подпрограмм, и использование ресурсов, например файлов, также является более сложным. Следовательно, системы RPC не подходят для передачи больших объемов данных.
  • RPC очень уязвим для сбоев, потому что он включает в себя систему связи, другую машину и другой процесс.
  • Единого стандарта для RPC не существует; это может быть реализовано множеством способов.
  • RPC основан только на взаимодействии и, как таковой, не предлагает гибкости, когда дело касается аппаратной архитектуры.

Проверка доступности службы RPC

  • Как я и писал выше, в первую очередь вы должны убедиться, что удаленный компьютер к которому вы делаете проверку RPC доступен по сети. Для этого элементарно откройте командную строку или оболочку PowerShell и воспользуйтесь командой Ping, NSlookup, Test-NetConnection. Я буду производить проверку службы удаленного вызова в PowerShell. Выполним для начала команду Ping. Мой удаленный сервер называется SVT201S01.root.pyatilistnik.org. Пишем команду:

ping SVT201S01.root.pyatilistnik.org

Если вдруг компьютер не ответил, то это не значит, что он не работает, может работать брандмауэр и просто блокировать ping пакеты.Проверка доступности службы RPC через ping

  • Далее выполните Nslookup, чтобы удостовериться, что нужное вам имя компьютера преобразовывается в нужный IP-адрес. Выполните:

nslookup SVT201S01.root.pyatilistnik.org

Небольшой пример из практики, предположим, что вы мигрировали сервер в другую подсеть, в итоге в DNS должна быть изменена соответствующая запись, но Windows это поймет не сразу, так как у нее есть свой локальный кэш, он живет 15 минут, поэтому если при проверке DNS имени вам выдается не тот IP-адрес, вам необходимо произвести очистку кэша DNS.

Проверка доступности службы RPC через nslookup

  • Далее я вам советую проверить отвечает ли порт. Напоминаю, что служба RPC Endpoint Mapper слушает порт под номером 135. В PowerShell введите команду:

Test-NetConnection svt2019s01.root.pyatilistnik.org -Port 135

Если удаленный RPC порт доступен вы в в строке TcpTestSucceeded будет стоять статус «True».

Проверка доступности службы RPC через Test-NetConnection

Если будет порт закрыт или блокируется, то ошибка «Сервер RPC недоступен (The rpc server is unavailable)» вам обеспечена. Поняв, что порт не отвечает, нужно удостовериться, что трафик от клиента до сервера не блокирует фаервол. По умолчанию в любой версии Windows есть встроенный брандмауэр. На время тестирования и поиска причины, я советую его выключить для всех профилей. Сделаем мы это через командную строку:

Netsh Advfirewall set allprofiles state off

Данная команда выключит брандмауэр на всех трех профилях сетевой карты.

Отключение брандмауэра Windows через командную строку

Далее если порт 135 стал доступен, то можно делать правила на удаленном сервере. Напоминаю, что нужно сделать правило для трех служб:

  1. Remote Procedure Call (RPC) — Удаленный вызов процедур (RPC)
  2. RPC Endpoint Mapper — Сопоставитель конечных точек RPC
  3. COM Server Process Launcher — Модуль запуска процессов DCOM-сервера

Подробнее, о том как сделать правила — https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-firewall/create-inbound-rules-to-support-rpc)

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

Проверка работы служб RPC

Следующим шагом является проверка состояния службы на нужном вам сервере или компьютере. Проверять следует три службы:

  1. Remote Procedure Call (RPC) — Удаленный вызов процедур (RPC)
  2. RPC Endpoint Mapper — Сопоставитель конечных точек RPC
  3. COM Server Process Launcher — Модуль запуска процессов DCOM-сервера

В оболочке PowerShell выполните команду:

Для локального сервера — Get-Service RpcSs,RpcEptMapper,DcomLaunch| Select DisplayName,Status,StartType

Для удаленного выполнения Enter-PSSession svt2019s01 далее Get-Service RpcSs,RpcEptMapper,DcomLaunch| Select DisplayName,Status,StartType

Напоминаю, что в команде svt2019s01, это имя удаленного сервера. Как видно из примера, все службы RPC запущены и имею автоматический тип запуска.

Проверка состояния служб RPC

Если службы не запущены, то откройте оснастку «services.msc’, зайдите в свойства службы и выставите автозапуск и попробуйте запустить вручную.

services.msc

Если по каким, то причинам вы не можете запустить службу из оснастки, то можно это сделать через реестр (Кстати реестр можно править и удаленно). Для этого есть несколько веток, но для начала откройте окно «Выполнить» и введите regedit.

Запуск реестра Windows

  • Модуль запуска процессов DCOM-сервера — HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesDcomLaunch
  • Сопоставитель конечных точек RPC — HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesRpcEptMapper
  • Удаленный вызов процедур (RPC) — ветка реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesRpcSs

В каждом из этих расположений есть ключик «Start«, выставите ему значение «2«, это будет означать автоматический запуск службы.

Управление автозапуском службы через реестр

Дополнительные сетевые проверки

В некоторых случаях причиной ошибок с доступностью RPC выступает сбой на сетевых адаптерах. Помогает сброс сетевых настроек и перезагрузка. В сети с Active Directory, старайтесь, чтобы на всех ваших сетевых адаптерах в свойствах были выставлены обе галки IPV4 и IPV6, особенно это актуально для контроллеров домена, где вы легко можете получать ошибку 1722. Еще может помочь отключение протокола Teredo у IPv6. В командной строке выполните:

netsh interface teredo set state disabled

Для включения обратно введите:

netsh interface teredo set state enabled

Еще на сайте Майкрософт пишут, что необходимо на сервере RPC иметь включенную службу «Удаленный реестр«. На этом у меня все, с вами был Иван Сёмин, автор и создатель IP портала Pyatilistnik.org.

Я установил пакет tigervnc-server на сервер.

[root@localhost ~]# rpm -qa tigervnc-server
tigervnc-server-1.1.0-5.el6.i686

Создал пользователя vnc и создал vncpasswd также для этого пользователя.

[root@localhost ~]# useradd vnc
[root@localhost ~]# vncpasswd vnc
Password:
Verify:
[root@localhost ~]# 

В /etc/sysconfig/vncserver я изменил эти 2 строки

VNCSERVERS="2:vnc"
VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -localhost"

После этого я перезапустил службу vncserver

[root@localhost ~]# service vncserver restart
Shutting down VNC server: 2:vnc                            [  OK  ]
Starting VNC server: 2:vnc 
New 'localhost.localdomain:2 (vnc)' desktop is localhost.localdomain:2

Starting applications specified in /home/vnc/.vnc/xstartup
Log file is /home/vnc/.vnc/localhost.localdomain:2.log

                                                           [  OK  ]

Очистил iptables также.

[root@localhost ~]# iptables -F

При запуске vncviewer на стороне клиента я получаю эту ошибку

[root@client ~]# vncviewer 10.10.2.39:2

Как решить эту ошибку?

Понравилась статья? Поделить с друзьями:
  • Ошибка rom блока управления двигателя
  • Ошибка rpc сервера при печати
  • Ошибка rol not less or equal
  • Ошибка rpc сервер не найден
  • Ошибка rockstar games social club для gta 5