Меню

Ошибка rpc сетевая ошибка 99 невозможно назначить запрошенный адрес

06.06.2018

Ввод клиентского компьютера в домен прошел без ошибок. На сервере клиентский компьютер добавлен. В «Управление доменной политикой безопасности» при просмотре свойств клиентского компьютера появляется ошибка: «Ошибка RPC: сетевая ошибка(99): невозможно назначить запрошенный адрес». Прошу подсказать как её исправить.

06.06.2018

Если сеть настроена через /etc/hosts , то укажите длинное и короткое имя клиента на сервере.

06.06.2018

Спасибо. Помогло.
Осталась ещё одна задача: При попытке входа на клиентский компьютер под доменной учетной записью пользователя появляется «Вход неудачен».
Логин доменного пользователя в списке на вход имеется, пароль соответствует парольной политике. Как можно решить эту задачу?

Аркадий Слепов


06.06.2018

Спасибо. Помогло.
Осталась ещё одна задача: При попытке входа на клиентский компьютер под доменной учетной записью пользователя появляется «Вход неудачен».
Логин доменного пользователя в списке на вход имеется, пароль соответствует парольной политике. Как можно решить эту задачу?

посмотреть логи авторизации надо
/var/log/auth

06.06.2018

Доступ к компьютеру запрещён.
Не могу разрешить его.

06.06.2018

Нашёл. Разрешение на доступ дается на контроллере домена в свойствах пользователя «Привилегии домена». Надо добавить компьютер и или группу компьютеров к которым разрешается доступ.

bl33d


01.06.2020

Разрешение на доступ дается на контроллере домена в свойствах пользователя «Привилегии домена». Надо добавить компьютер и или группу компьютеров к которым разрешается доступ.

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

14.06.2020

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

Если интересно, то у меня проблема была в обратной зоне: одному и тому же ip-адресу соответствовало несколько имен, и dns выдавал первое имя, соответсвующее указанному ip-адресу, а оно не соответствовало тому, которое указывалось с командой ald-client join.
Выяснилась проблема после просмотра /var/log/auth.log.
После чистки обратной зоны всё заработало как часы.

Последнее редактирование: 14.06.2020

Yesterday, I created a python script called sniffer_ip_header_decode.py, but I had the following error:

Traceback (most recent call last):
  File "sniffer_ip_header_decode.py", line 51, in <module>
    sniffer.bind((host, 0))
  File "/usr/lib/python2.7/socket.py", line 228, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 99] Cannot assign requested address

Here is the code:

import socket
import os
import struct
from ctypes import *

#host to listen on
host = "192.168.0.187"

#our IP header
class IP(Structure): 
    fields = [
       ("ihl",            c_ubyte, 4),
       ("version",        c_ubyte, 4),
       ("tos",            c_ubyte),
       ("len",            c_ushort),
       ("id",             c_ushort),
       ("offset",         c_ushort),
       ("ttl",            c_ubyte),
       ("protocol_sum",   c_ubyte),
       ("sum",            c_ushort),
       ("src",            c_ulong),
       ("dst",            c_ulong),
    ]

    def __new__(self, socket_buffer=None): 
        return self.from_buffer_copy(socket_buffer)

    def __init__(self, socket_buffer=None):  

        #map protocol constants to theyr names
        self.protocol_map = {1:"ICMP", 6:"TCP", 17:"UDP"}

        #Human readable IP addresses
        self.src_address = socket.inet_ntoa(struct.pack("<L",self.src))
        self.dst_address = socket.inet_ntoa(struct.pack("<L",self.dst))

        #Human readable protocol
        try: 
            self.protocol = self.protocol_map[seld.protocol_num]
        except: 
            self.protocol = str(self.protocol_num)

#This should look familiar from the previous example
if os.name == "nt": 
    socket_protocol = socket.IPPROTO_IP
else: 
    socket_protocol = socket.IPPROTO_ICMP

sniffer = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket_protocol)

sniffer.bind((host, 0))
sniffer.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)

if os.name == "nt": 
    sniffer.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)

try: 

    while True: 
        #read in a packet
        raw_buffer = sniffer.recvfrom(65565)[0]

        #create an IP header from the first 20 bytes of the buffer
        ip_header = IP(raw_buffer[0:20])

        #print out the protocol that was detected and the host
        print "Protocol: %s %s -> %s" % (ip_header.protocol, ip_header.src_address, ip_header.dst_address)
#Handle CTRL - C
except KeyboardInterrupt: 

    #if we're using windows. turn off promiscuous mode
    if os.name == "nt": 
        sniffer.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF)   

Yesterday, I created a python script called sniffer_ip_header_decode.py, but I had the following error:

Traceback (most recent call last):
  File "sniffer_ip_header_decode.py", line 51, in <module>
    sniffer.bind((host, 0))
  File "/usr/lib/python2.7/socket.py", line 228, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 99] Cannot assign requested address

Here is the code:

import socket
import os
import struct
from ctypes import *

#host to listen on
host = "192.168.0.187"

#our IP header
class IP(Structure): 
    fields = [
       ("ihl",            c_ubyte, 4),
       ("version",        c_ubyte, 4),
       ("tos",            c_ubyte),
       ("len",            c_ushort),
       ("id",             c_ushort),
       ("offset",         c_ushort),
       ("ttl",            c_ubyte),
       ("protocol_sum",   c_ubyte),
       ("sum",            c_ushort),
       ("src",            c_ulong),
       ("dst",            c_ulong),
    ]

    def __new__(self, socket_buffer=None): 
        return self.from_buffer_copy(socket_buffer)

    def __init__(self, socket_buffer=None):  

        #map protocol constants to theyr names
        self.protocol_map = {1:"ICMP", 6:"TCP", 17:"UDP"}

        #Human readable IP addresses
        self.src_address = socket.inet_ntoa(struct.pack("<L",self.src))
        self.dst_address = socket.inet_ntoa(struct.pack("<L",self.dst))

        #Human readable protocol
        try: 
            self.protocol = self.protocol_map[seld.protocol_num]
        except: 
            self.protocol = str(self.protocol_num)

#This should look familiar from the previous example
if os.name == "nt": 
    socket_protocol = socket.IPPROTO_IP
else: 
    socket_protocol = socket.IPPROTO_ICMP

sniffer = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket_protocol)

sniffer.bind((host, 0))
sniffer.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)

if os.name == "nt": 
    sniffer.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)

try: 

    while True: 
        #read in a packet
        raw_buffer = sniffer.recvfrom(65565)[0]

        #create an IP header from the first 20 bytes of the buffer
        ip_header = IP(raw_buffer[0:20])

        #print out the protocol that was detected and the host
        print "Protocol: %s %s -> %s" % (ip_header.protocol, ip_header.src_address, ip_header.dst_address)
#Handle CTRL - C
except KeyboardInterrupt: 

    #if we're using windows. turn off promiscuous mode
    if os.name == "nt": 
        sniffer.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF)   

Я запускаю Ubuntu Hardy 8.04 и nginx 0.7.65, и когда я пытаюсь запустить свой сервер nginx:

$ sudo /etc/init.d/nginx start

Я получаю следующую ошибку:

Starting nginx: [emerg]: bind() to IP failed (99: Cannot assign requested address)

где «IP» является заполнителем для моего IP-адреса. Кто-нибудь знает, почему эта ошибка может произойти? Это работает на EC2.

Мой файл nginx.conf выглядит так:

user www-data www-data;
worker_processes  4;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    access_log /usr/local/nginx/logs/access.log;

    sendfile        on;
    tcp_nopush      on;
    tcp_nodelay         on;

    keepalive_timeout  3;

    gzip  on;
    gzip_comp_level 2;
    gzip_proxied any;
    gzip_types  text/plain text/css application/x-javascript text/xml application/xml
    application/xml+rss text/javascript;

    include /usr/local/nginx/sites-enabled/*;

}

и мой /usr/local/nginx/sites -enabled/example.com выглядит так:

server {

        listen   IP:80;
        server_name  example.com;
        rewrite ^/(.*) https://example.com/$1 permanent;

       }

server {

        listen   IP:443 default ssl;

        ssl         on;
        ssl_certificate     /etc/ssl/certs/myssl.crt;
        ssl_certificate_key /etc/ssl/private/myssl.key;

        ssl_protocols       SSLv3 TLSv1;
        ssl_ciphers ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-EXP;

        server_name example.com;

        access_log /home/example/example.com/log/access.log;
        error_log /home/example/example.com/log/error.log;

        }

4b9b3361

Ответ 1

С Amazon EC2 и эластичными IP-адресами сервер фактически не знает своего IP-адреса, как и для большинства других серверов.

Итак, вы должны сказать своему Linux, чтобы позволить процессам связываться с нелокальным адресом. Просто добавьте следующую строку в файл /etc/sysctl.conf:

# allow processes to bind to the non-local address
# (necessary for apache/nginx in Amazon EC2)
net.ipv4.ip_nonlocal_bind = 1

а затем перезагрузите файл sysctl.conf:

$ sysctl -p /etc/sysctl.conf

что будет нормально при перезагрузке.

Ответ 2

Чтобы избежать жесткого кодирования IP-адреса в конфигурации, сделайте следующее:

listen *:80;
listen [::]:80;

Ответ 3

Как упомянуто выше в kirpit, вы хотите, чтобы linux-процессы связывались с локальным IP-адресом:

nano /etc/sysctl.conf

# allow processes to bind to the non-local address
net.ipv4.ip_nonlocal_bind = 1

sysctl -p /etc/sysctl.conf

Затем вы хотите добавить частный IP-адрес, который связан с вашим эластичным ip, и добавить его в конфигурацию ваших сайтов:

nano /etc/nginx/sites-available/example.com

Перезагрузка nginx:

service nginx reload

Все сделано!

Ответ 4

Может существовать оставшийся процесс/программа, которая использует/прослушивает порт 80.

Вы можете проверить, что с помощью netstat -lp.
Убейте этот процесс и запустите nginx.

Ответ 5

С Amazon EC2 и эластичными IP-адресами сервер фактически не знает своего IP-адреса, как и для большинства других серверов. Таким образом, в файлах виртуального хоста apache по крайней мере вы ставите *: 80, а не на свой эластичный ip: 80

Затем он работает правильно. Итак, теоретически, делать *: 80 для nginx должно работать одинаково, но когда вы это делаете, вы получаете [появление]: bind() до 0.0.0.0:80 не удалось (98: адрес уже используется). Пока не найдено ни одного решения.
.

Ответ 6

Для людей, которые могут иметь дело с этим в будущем, я просто искал свой частный IP-адрес в экземпляре AWS и привязался к этому. Я подтвердил, что nginx смог публично выслушать и выполнить мою переписывание после этого. Я не мог сделать *: PORT, поскольку у меня был внутренний сервер, на который я проксировал.

Ответ 7

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

systemctl включить NetworkManager-wait-online.service

Ответ 8

Для Amazon EC2 и эластичных IP-адресов sysctl.conf не будет работать, поскольку nginx еще не прослушивает eth0.

Итак, вам нужно listen *;

Я использую Ubuntu Hardy 8.04 и nginx 0.7.65, и когда я пытаюсь запустить свой сервер nginx:

$ sudo /etc/init.d/nginx start

Я получаю следующее сообщение об ошибке:

Starting nginx: [emerg]: bind() to IP failed (99: Cannot assign requested address)

где «IP» — это мой IP-адрес. Кто-нибудь знает, почему может происходить эта ошибка? Это работает на EC2.

Мой файл nginx.conf выглядит так:

user www-data www-data;
worker_processes  4;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    access_log /usr/local/nginx/logs/access.log;

    sendfile        on;
    tcp_nopush      on;
    tcp_nodelay         on;

    keepalive_timeout  3;

    gzip  on;
    gzip_comp_level 2;
    gzip_proxied any;
    gzip_types  text/plain text/css application/x-javascript text/xml application/xml
    application/xml+rss text/javascript;

    include /usr/local/nginx/sites-enabled/*;

}

и мой /usr/local/nginx/sites-enabled/example.com выглядит так:

server {

        listen   IP:80;
        server_name  example.com;
        rewrite ^/(.*) https://example.com/$1 permanent;

       }

server {

        listen   IP:443 default ssl;

        ssl         on;
        ssl_certificate     /etc/ssl/certs/myssl.crt;
        ssl_certificate_key /etc/ssl/private/myssl.key;

        ssl_protocols       SSLv3 TLSv1;
        ssl_ciphers ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-EXP;

        server_name example.com;

        access_log /home/example/example.com/log/access.log;
        error_log /home/example/example.com/log/error.log;

        }

Настраивать:
У меня есть виртуальная машина, и на виртуальной машине работают три контейнера (прокси-сервер nginx, очень минималистичное приложение для фляг и Redis). Flask должен работать на порту 5000, а Redis — на 6379.

Каждый из этих контейнеров работает нормально как отдельный сервис, но также доступен через docker compose как услуга.

В приложении flask моя цель — подключиться к Redis и запросить некоторые ключи.

Контейнер nginx предоставляет порт 80, порт flask 5000 и порт redis 6379.

В приложении фляги у меня есть функция, которая пытается создать клиент Redis.

db = redis.Redis(host='localhost', port=6379, decode_responses=True)

Запустив приложение flask, я получаю сообщение об ошибке, что порт не может быть использован.

redis.exceptions.ConnectionError: Error 99 connecting to localhost:6379. Cannot assign requested address.

Я потерял ясность, что может быть причиной этой проблемы, и любые идеи будут оценены.

Перейти к ответу
Данный вопрос помечен как решенный


Ответы
3

In the flask app I have a function that tries to create a redis client

db = redis.Redis(host=’localhost’, port=6379, decode_responses=True)

Когда ваш процесс фляги запускается в контейнере, localhost относится к сетевому интерфейсу самого контейнера. Он не разрешается в сетевой интерфейс вашего хоста докеров.

Поэтому вам нужно заменить localhost на IP-адрес контейнера, на котором запущен Redis.

В контексте файла docker-compose.yml это легко сделать, поскольку docker-compose заставит имена служб разрешаться в правильный IP-адрес контейнера:

version: "3"
services:
  my_flask_service:
    image: ...
  my_redis_service:
    image: ...

Затем в вашем приложении фляги используйте:

db = redis.Redis(host='my_redis_service', port=6379, decode_responses=True)

У меня была такая же проблема, за исключением того, что служба, к которой я хотел, чтобы мой контейнер имел доступ, была удаленной и отображалась через ssh-туннель на мой хост Docker. Другими словами, не было сервиса docker-compose, который мог бы найти мой код. Я решил проблему, явно указав redis искать мой локальный хост в виде строки:

pyredis.Redis(host='docker.for.mac.localhost', port=6379)

Любой, кто использует только докер для запуска контейнера,
вы можете добавить —network=host в команду, например docker run —network=host, чтобы докер использовал сеть хоста во время работы контейнера.

Вы также можете использовать хост-сеть для сервиса swarm, передав —network host команде docker service create.
Убедитесь, что вы не публикуете порт при этом. лайк -p 80:8000

Я не уверен, поддерживает ли Docker compose это.

Н.Б. это поддерживается только в Linux.

Другие вопросы по теме

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Ошибка psql error could not connect to server no such file or directory
  • Ошибка rage 2 has stopped working