我在公司公司内部使用服务器(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。
我也可以使用ip1而不是ip2进入服务器
我可以通过ip1:5000访问烧瓶服务器,但不能访问ip2:5000。
我没有进入网络如此充分地混淆为什么有2个不同的ips以及为什么我可以从浏览器访问ip1:5000而不是ip2:5000。
还有什么相当于python中的host命令(如何从python中获取ip1。我正在使用socktet.gethostbyname(server_name.corp.com),它给了我ip2)
答案 0 :(得分:0)
据我所知,您配置了某种路由,允许通过主机名(或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
答案 1 :(得分:0)
你的语句对网络状态不太清楚,我只能告诉你,如果你想通过python获取ip1,你可以使用标准的lib subprocess
,它通常用于执行os命令。 (见subprocess.Popen
)