1. 背景
作代理服务器的虚拟机1:l*******i-virtual-machine 192.168.43.203
作客户端的虚拟机2:VM2 192.168.43.181
2. 把两台虚拟机设置到同一局域网中
初始时,两台虚拟机均使用 NAT 模式,分别处于不同的局域网中,无法进行 NAT 穿透。
走过的弯路及吐槽:教程基本上都是在 VM woekstation 中设置的,但我一个穷学生用的是 VM player,这个版本在 gui 界面是没有编辑和虚拟网络编辑器的选项的,我无从下手,我总不能卸了重装吧哈哈哈(流汗黄豆… 在浏览的时候了解到桥接模式就是把虚拟机当成真正的主机接到物理机所在的这个局域网里,于是直接在搜索引擎里搜索:如何设置虚拟机网络的桥接模式,很快就解决了这个问题。
修改:
- 查看物理机网络适配器选项
-
把虚拟机的网络适配器设置为桥接模式,并勾选 复制物理网络状态,在 配置适配器 中只勾选其中一项
说明:
- 此处选择了 WLAN 下的主机网络适配器
- 尝试过 以太网2 下的主机网络适配器,虚拟机无法正常上网
- 重启虚拟机,检查 ip 地址,物理机、虚拟机1和虚拟机2的 ip 地址如下,它们处于同一局域网中
3. 把 VM2 的 http 代理设置为 虚拟机1
尝试1:在 VM2 上直接使用如下命令修改环境变量,但 wget 仍直接向百度的服务器发送 HTTP 请求
$ export http_proxy="192.168.43.203:3128"
尝试2:使用 env 命令临时修改环境变量,修改成功但 wget 仍直接向百度的服务器发送 HTTP 请求(同上)
尝试3:把 http 代理设置为虚拟机1的主机名进行尝试,报错:未知的名称或服务
成功的尝试4:在使用 wget 命令之前使用 env 命令临时指定 HTTP 代理服务器
$ env http_proxy=192.168.43.203:3128 https_proxy=192.168.43.203:3128 wget www.baidu.com
4. 正在连接 192.168.x.x 失败:没有到主机的路由
ping 192.168.43.203 是可以 ping 通的
搜索查询到 正在连接 192.168.x.x 失败:没有到主机的路由 一般是防火墙的问题。
于是在 VM2 上把防火墙给关了。关闭防火墙有多种命令,几经波折。
参考:服务器启动项目抛错 没有到主机的路由——各linux系统的防火墙
在 VM2 上成功将防火墙的服务终止以后,使用 wget 命令仍报错 没有到主机的路由。(此时心态已经崩了,关键点在于:对于此报错网上只有防火墙问题这一种解释,同时有多种关闭防火墙的命令导致自己不确定防火墙到底有没有真正关闭,可能是因为系统的原因、apt-get的原因或者其它的原因…
于是我想到了可能在 虚拟机1 上也应该关闭防火墙,于是进行了多次尝试:
把这个问题解决以后,在 VM2 上使用 虚拟机1 的 squid 代理服务器成功
5. 经验总结
此次学习到了:
- 如何把两台虚拟机配置到同一局域网中
- 使用 env 命令临时设置 http 代理运行 wget 客户端程序
- squid 代理服务器的基本原理:局域网内的主机通过代理服务器来访问 web 服务器
工程经验:
- 学会及时转换搜索关键词,对博文中的内容敏感一点
- squid 代理服务器的基本原理:局域网内的主机通过代理服务器来访问 web 服务器