telnet:连接到地址 192.168。33.x:连接被拒绝 - 通过 Vagrant centos 机器
telnet: connect to address 192.168.33.x: Connection refused - over Vagrant centos machine
我创建了一台centos 机器并在其上安装了nexus 服务。
Nexus 服务在 8081 端口上 运行,我在 vagrant 文件中使用以下命令从 vagrant 文件打开了该端口。
machine1.vm.network "private_network", ip: "192.168.33.x"
machine1.vm.network "forwarded_port", guest: 80, host: 80
machine1.vm.network "forwarded_port", guest: 8080, host: 8080
machine1.vm.network "forwarded_port", guest: 8081, host: 8081
nexus 服务在 centos 机器上 运行 正常,但是从同一台服务器到端口的 telnet 以及来自其网络的服务器都失败了。该端口也无法从主机 windows 计算机访问。
服务器 IP 可以从其网络机器访问,这里所有 3 个网络机器都是从 vagrant 文件创建的
我已经尝试查看并确认 nexus 服务实际上是 运行 在 8081 端口上,它的 运行
我已尝试打开端口 8081 以确保防火墙未使用以下命令阻止
iptables -A INPUT -p tcp -m tcp --dport 8081 -j ACCEPT
我浏览了多个论坛以查看是否有任何解决方案有效,我承认这是一个非常普遍的错误,即使我过去也遇到过,但在这种情况下无法确定根本原因。我怀疑它是否与 vagrant 特定配置有关
此外,我尝试从 centos 服务器和主机服务器 curl 服务,它不起作用:
]$ curl http://localhost:8081
curl: (7) Failed connect to localhost:8081; Connection refused
netstat 命令没有给出任何结果:
netstat -an|grep 8081
[vagrant@master1 bin]$
但是 nexus 服务已启动并且 运行 在具有相同端口的服务器上
这里是vagrant文件代码
config.vm.define "machine1" do |machine1|
machine1.vm.provider "virtualbox" do |host|
host.memory = "2048"
host.cpus = 1
end
machine1.vm.hostname = "machine1"
machine1.vm.network "private_network", ip: "192.168.33.x3"
machine1.vm.network "forwarded_port", guest: 80, host: 80
machine1.vm.network "forwarded_port", guest: 8080, host: 8080
machine1.vm.network "forwarded_port", guest: 8081, host: 8081
machine1.vm.synced_folder "../data", "/data"
end
config.vm.define "machine2" do |machine2|
machine2.vm.provider "virtualbox" do |host|
host.memory = "2048"
host.cpus = 1
end
machine2.vm.hostname = "machine2"
machine2.vm.box = "generic/ubuntu1804"
machine2.vm.box_check_update = false
machine2.vm.network "private_network", ip: "192.168.33.x2"
machine2.vm.network "forwarded_port", guest: 80, host: 85
machine2.vm.network "forwarded_port", guest: 8080, host: 8085
machine2.vm.network "forwarded_port", guest: 8081, host: 8090
end
config.vm.define "master" do |master|
master.vm.provider "virtualbox" do |hosts|
hosts.memory = "2048"
hosts.cpus = 2
end
master.vm.hostname = "master"
master.vm.network "private_network", ip: "192.168.33.x1"
end
end
由于 nexus 服务在端口 8081 上 运行,我应该可以使用 http://localhost:8081.
从我的主机访问该服务
如您所料,问题很可能是 Vagrant 网络问题。如果您只想从主机访问来宾上的 nexus 服务 运行,也许 会很有用。
要解决此问题,您可以尝试让 Vagrant box 在 public 网络上可用,然后使用 public IP 访问它,为此,您必须在 Vagrant 文件中启用 config.vm.network "public_network"
并且然后做一个vagrant reload
。完成后,尝试访问 http://public_IP_of_guest:8081
请告诉我进展如何。
这可能有很多来源造成的。就我而言,我使用 vagrant fedora boxe。
我试过了:
首先使用我附加到仅主机适配器的 private_network 并启动 httpd 服务来测试来宾和主机之间的连接
config.vm.network "private_network", type: "dhcp", name: "vboxnet2"
config.vm.network "forwarded_port", guest:80, host:7070
但我无法从主机 ping 我的来宾计算机,也无法远程登录打开的 httpd 服务
第二次使用public_network并启动httpd服务来测试连通性
config.vm.network "public_network", bridge: "en0: Wi-Fi (AirPort)", use_dhcp_assigned_default_route: true
我可以从我的主机 ping 我的来宾,但我无法远程登录 httpd 服务。
对于这两个用例,问题是 fedora 来宾主机上的端口 80 被防火墙阻止了。这是解决问题并使 privat_network 和 public_ntwork 都正常工作的方法:
firewall-cmd --permanent --add-port 80/tcp #open the port permanently
firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --list-port # list to check if the port was opened
systemctl stop firewalld # stop and open the firewall service
systemctl start firewalld
我创建了一台centos 机器并在其上安装了nexus 服务。 Nexus 服务在 8081 端口上 运行,我在 vagrant 文件中使用以下命令从 vagrant 文件打开了该端口。
machine1.vm.network "private_network", ip: "192.168.33.x"
machine1.vm.network "forwarded_port", guest: 80, host: 80
machine1.vm.network "forwarded_port", guest: 8080, host: 8080
machine1.vm.network "forwarded_port", guest: 8081, host: 8081
nexus 服务在 centos 机器上 运行 正常,但是从同一台服务器到端口的 telnet 以及来自其网络的服务器都失败了。该端口也无法从主机 windows 计算机访问。
服务器 IP 可以从其网络机器访问,这里所有 3 个网络机器都是从 vagrant 文件创建的
我已经尝试查看并确认 nexus 服务实际上是 运行 在 8081 端口上,它的 运行
我已尝试打开端口 8081 以确保防火墙未使用以下命令阻止
iptables -A INPUT -p tcp -m tcp --dport 8081 -j ACCEPT
我浏览了多个论坛以查看是否有任何解决方案有效,我承认这是一个非常普遍的错误,即使我过去也遇到过,但在这种情况下无法确定根本原因。我怀疑它是否与 vagrant 特定配置有关
此外,我尝试从 centos 服务器和主机服务器 curl 服务,它不起作用:
]$ curl http://localhost:8081
curl: (7) Failed connect to localhost:8081; Connection refused
netstat 命令没有给出任何结果:
netstat -an|grep 8081
[vagrant@master1 bin]$
但是 nexus 服务已启动并且 运行 在具有相同端口的服务器上
这里是vagrant文件代码
config.vm.define "machine1" do |machine1|
machine1.vm.provider "virtualbox" do |host|
host.memory = "2048"
host.cpus = 1
end
machine1.vm.hostname = "machine1"
machine1.vm.network "private_network", ip: "192.168.33.x3"
machine1.vm.network "forwarded_port", guest: 80, host: 80
machine1.vm.network "forwarded_port", guest: 8080, host: 8080
machine1.vm.network "forwarded_port", guest: 8081, host: 8081
machine1.vm.synced_folder "../data", "/data"
end
config.vm.define "machine2" do |machine2|
machine2.vm.provider "virtualbox" do |host|
host.memory = "2048"
host.cpus = 1
end
machine2.vm.hostname = "machine2"
machine2.vm.box = "generic/ubuntu1804"
machine2.vm.box_check_update = false
machine2.vm.network "private_network", ip: "192.168.33.x2"
machine2.vm.network "forwarded_port", guest: 80, host: 85
machine2.vm.network "forwarded_port", guest: 8080, host: 8085
machine2.vm.network "forwarded_port", guest: 8081, host: 8090
end
config.vm.define "master" do |master|
master.vm.provider "virtualbox" do |hosts|
hosts.memory = "2048"
hosts.cpus = 2
end
master.vm.hostname = "master"
master.vm.network "private_network", ip: "192.168.33.x1"
end
end
由于 nexus 服务在端口 8081 上 运行,我应该可以使用 http://localhost:8081.
从我的主机访问该服务如您所料,问题很可能是 Vagrant 网络问题。如果您只想从主机访问来宾上的 nexus 服务 运行,也许 config.vm.network "public_network"
并且然后做一个vagrant reload
。完成后,尝试访问 http://public_IP_of_guest:8081
请告诉我进展如何。
这可能有很多来源造成的。就我而言,我使用 vagrant fedora boxe。 我试过了:
首先使用我附加到仅主机适配器的 private_network 并启动 httpd 服务来测试来宾和主机之间的连接
config.vm.network "private_network", type: "dhcp", name: "vboxnet2" config.vm.network "forwarded_port", guest:80, host:7070
但我无法从主机 ping 我的来宾计算机,也无法远程登录打开的 httpd 服务
第二次使用public_network并启动httpd服务来测试连通性
config.vm.network "public_network", bridge: "en0: Wi-Fi (AirPort)", use_dhcp_assigned_default_route: true
我可以从我的主机 ping 我的来宾,但我无法远程登录 httpd 服务。
对于这两个用例,问题是 fedora 来宾主机上的端口 80 被防火墙阻止了。这是解决问题并使 privat_network 和 public_ntwork 都正常工作的方法:
firewall-cmd --permanent --add-port 80/tcp #open the port permanently
firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --list-port # list to check if the port was opened
systemctl stop firewalld # stop and open the firewall service
systemctl start firewalld