我在一家公司内部使用服务器(server_name.corp.com)。在服务器上,我运行一个flask服务器来监听0.0.0:5000。
服务器不对外开放,但可通过VPN访问。
现在当我在盒子里运行host server_name.corp.com时,我得到一些ip1(10.*.*.*
当我在盒子里运行ifconfig时,它会给我ip2(10.*.*.*)。
同样,如果我在同一个框中运行ping server_name.corp.com,我得到ip2。
我也可以用ssh连接到ip1而不是ip2的服务器
我可以在ip1:5000上访问烧瓶服务器,但不能在ip2:5000上访问。
我不喜欢网络,所以完全搞不懂为什么有两个不同的IP,为什么我可以从浏览器访问ip1:5000而不是ip2:5000。
在python中,什么是主机命令(如何从python获取ip1)。我正在使用sockett.gethostbyname(server_name.corp.com),它提供了ip2)

最佳答案

据我所知,您已经配置了某种路由,允许通过主机名(或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

关于python - 主机命令和ifconfig提供不同的IP,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50166145/

10-09 05:56