目标:解决在 Bridged 网络模式下,虚拟机如何访问宿主机服务(如 SSH、HTTP 等)的设置与防火墙配置问题。
步骤 1:确认宿主机服务是否启动
- 查看宿主机上的服务是否已启动 :
在宿主机上,确保您想要虚拟机访问的服务(例如 SSH、HTTP 等)已启动。使用以下命令查看:
bash
sudo systemctl status ssh
sudo systemctl status apache2 # 或 nginx 等 web 服务
-
查看宿主机的监听端口:
使用 netstat 或 ss 命令查看宿主机上正在监听的端口。
bash
sudo netstat -tuln
- 确保服务监听的端口没有被防火墙阻止。
步骤 2:配置防火墙(宿主机和虚拟机)
-
宿主机防火墙配置:
确保宿主机上的防火墙允许虚拟机访问所需端口。以允许 SSH 访问为例:
bash
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp # 如果有 web 服务
-
虚拟机防火墙配置:
在虚拟机内,检查是否有防火墙规则阻止访问宿主机服务。执行以下命令查看:
bash
sudo ufw status
sudo iptables -L
- 确保允许访问宿主机的 IP 地址与端口。
步骤 3:检查端口转发设置
-
检查宿主机端口转发设置:
在一些特殊配置下,您可能需要在宿主机上设置端口转发规则。例如,使用 iptables 配置端口转发:
bash
sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80
-
这样,宿主机上的 8080 端口请求会被转发到虚拟机的 80 端口。
-
虚拟机访问宿主机服务:
在虚拟机内,直接使用宿主机的 IP 地址来访问宿主机上的服务。例如,访问 SSH 服务:
bash
ssh 宿主名@170.160.1.1