最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

播报:在linux中通过虚拟机转发流量访问内网

来源:博客园

有那么一个恶心的东西叫 EasyConnect,这东西被含多学校企业使用,但是对 linux 的支持却很烂。

今年冬天,因为疫情的原因提前回家了,但是回家之后就没法连接内网的服务器了,必须要用 EasyConnect 连接 sslvpn,为此不得不把我的系统换成 bugdows。。。

但是真的是忍不了了,因为我的电脑是 Macbook,还换过固态硬盘,因此 bluescreendows 在我的电脑上运行得很烂,每天都会蓝屏,多的时候一天三四次。。。前天跟导师语音汇报情况的时候,刚想看一眼程序有没有运行起来就蓝屏了。。。真是会掐时候啊。


(资料图片)

终于下定决心,换掉这煞笔 bluescreendows。改为在 linux 里安装一个 bugdows 虚拟机,将访问内网的流量打入虚拟机中,以此来连接内网。

安装 qemu

sudo pacman -S qemu-base

不同系统包的名称可能不同。

安装虚拟机

下载 bugdows 镜像文件

建议从巨硬官网下载 win10 镜像,或者从archive.org下载 XP 镜像。

不要用中文互联网上的一堆“精华版”、“精简版”、“XX之家特供版”,因为你不知道里面塞了什么东西,倒不是说有安全问题,而是 qemu 可能无法正常识别并启动它。

将你下载好的 bluescreendows iso 文件放到你要安装虚拟机的位置,假设是 V_PATH

下载驱动文件

bugdows 虚拟机在安装好后需要手动安装驱动,这里先将其下载下来:

  • creating-windows-virtual-machines-using-virtio-drivers

  • 下载链接

将下载好的文件放入 V_PATH下。

创建磁盘文件

V_PATH下创建一个磁盘文件:

cd $V_PATHqemu-img create -f qcow2 win10.qcow2 20G

其中 win10.qcow2是文件的名字,你可以自行更改,不需要很大,20G 已经很多了,因为在虚拟机里只装一个 EasyConnect.

安装 bluescreendows

运行以下脚本:

#!/bin/shbase_img=win10.qcow2 # 你创建的磁盘文件share_img=win10.iso # 你的 bugdows iso 文件[ -f $snapshot_img ] || qemu-img create -q -F qcow2 -b $base_img -f qcow2 $snapshot_imgsudo qemu-system-x86_64 \-enable-kvm $base_img \-machine q35 \-cpu host,hv-relaxed,hv-vapic,hv-spinlocks=0x1fff,hv-vpindex,hv-time,hv-synic,hv-stimer \-rtc base=localtime \-smp 2 \-m 2G \-cdrom $share_img \-device qemu-xhci \-device usb-tablet \-netdev user,id=mynet0,net=192.168.76.0/24,dhcpstart=192.168.76.9 \-device virtio-net,netdev=mynet0 \-netdev bridge,id=mynet1,br=qbr0 \-device virtio-net,netdev=mynet1

以上参数中,比较重要的是最后四行,这四行为虚拟机创建了两张网卡,一张是 HOST-ONLY 的,一张是 Bridege 的,之后需要用到。

-m 2G为虚拟机分配了 2G 的内存

运行该脚本后虚拟机将会启动,然后就是熟悉的 bugdows 安装环节,建议安装过程断掉宿主机的网络,这样可以避免强制登录在线账号。

如果执行该脚本后没有图形界面,而是输出了一行 VNC server running on ::1:5900,则下载一个 tigervnc 就行,地址是 localhost:5900

安装完之后,启动虚拟机,会发现没有网络连接,网卡也是一张都没有,莫慌,安装一下驱动就好。

关闭虚拟机,将以上脚本中的 win10.iso替换为刚刚下载的驱动 iso 的文件名,一般为 virtio-win-xxx.iso,然后再执行脚本。在文件管理器中找到 CD,在 CD 中有相应的安装程序,直接将全部选项安装即可。

安装完成后,下载 EasyConnect,连接上你需要连接的 VPN,然后打开网络和 Internet 设置 -> 更改适配器选项,应该能看到有三张网卡,前两张是我们创建的,另一张是 EasyConnect 创建的虚拟网卡。

在我们创建的两张网卡中,一张是 HOST-ONLY 的,一张是 BRIDGE 的,可以通过以下特征区分:显示“已连接”的那张是 BRIDGE 的,显示“无Internet”的那张是 HOST-ONLY 的。右键 EasyConnect 虚拟网卡,在“属性”->“共享”中勾选“允许其他网络用户通过此 Internet 的连接来连接”,并在下面的选择框中选择那张 HOST-ONLY 的。

在共享之后,系统会将 HOST-ONLY 的地址强制改为 192.168.137.1

选错了也没关系,因为如果选错了会导致虚拟机失去网络连接,很容易判断,再关了共享重新选择一下就行。

关闭防火墙

进入虚拟机的防火墙设置,关闭所有的防火墙。

点击高级设置,在”入站规则“里启用”文件和打印机共享(回显请求—ICMPv4-In)”。

至此 bugdows 这边的设置就完成了。

配置路由

在 Linux 宿主机这边,创建一个 bridge:

ip l add qbr0 type bridgeip l set qbr0 up

编辑 /etc/qemu/bridge.conf,在文件末尾添加一行

allow qbr0 

qbr0分配一个地址:

sudo ip a add 192.168.137.2/24 dev qbr0

假设你要访问的内网 IP 是 aaa.bbb.ccc.ddd/32,那么配置一条路由:

sudo ip r add aaa.bbb.ccc.ddd/32 via 192.168.137.1

然后应该就可以访问内网了。

关键词: 磁盘文件 虚拟网卡 网络连接