Команда host и ifconfig дают разные ips - PullRequest
0 голосов
/ 04 мая 2018

Я использую сервер (server_name.corp.com) внутри корпоративной компании. На сервере я использую флеш-сервер для прослушивания 0.0.0.0:5000.

серверы не подвержены воздействию внешнего мира, но доступны через vpns.

Теперь, когда я запускаю host server_name.corp.com в поле, я получаю ip1 (10.*.*.*)

Когда я запускаю ifconfig в поле, это дает мне ip2 (10.*.*.*).

Также, если я запускаю ping server_name.corp.com в той же коробке, я получаю ip2.

Также я могу ssh на сервер с ip1, а не ip2

Я могу получить доступ к серверу фляги по ip1: 5000, но не по ip2: 5000.

Я не слишком разбираюсь в сетях, поэтому не понимаю, почему есть 2 разных ips и почему я могу получить доступ к ip1: 5000 из браузера, а не к ip2: 5000.

Также, что эквивалентно команде хоста в python (как получить ip1 из python. Я использую socktet.gethostbyname (server_name.corp.com), который дает мне ip2)

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

По вашим заявлениям не совсем ясно о состоянии сети, я могу только сказать, что если вы хотите получить ip1 с помощью python, вы можете использовать стандартную lib subprocess, которая обычно используется для выполнения команды os. (См. subprocess.Popen)

0 голосов
/ 04 мая 2018

Насколько я могу судить, у вас настроена какая-то маршрутизация, которая разрешает внешние соединения с сервером по имени хоста (или ip1), но не разрешает соединение по ip2. И в этом нет ничего необычного. Возможно, системный администратор может посоветовать, почему это делается именно так. Предполагая, что нет асинхронных сетевых маршрутов, следующая функция может помочь определить общедоступный IP-адрес сервера:

import socket

def get_ip():
    try:
        sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        sock.connect(("8.8.8.8", 80))
        local_address = sock.getsockname()
        sock.close()
        local_address = local_address[0]
    except OSError:
        local_address = socket.gethostbyname(socket.gethostname())

    return local_address
...