在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 虚拟机在安装好后需要手动安装驱动,这里先将其下载下来:
将下载好的文件放入 V_PATH
下。
创建磁盘文件
在 V_PATH
下创建一个磁盘文件:
cd $V_PATH
qemu-img create -f qcow2 win10.qcow2 20G
其中 win10.qcow2
是文件的名字,你可以自行更改,不需要很大,20G 已经很多了,因为在虚拟机里只装一个 EasyConnect.
安装 bluescreendows
运行以下脚本:
#!/bin/sh
base_img=win10.qcow2 # 你创建的磁盘文件
share_img=win10.iso # 你的 bugdows iso 文件
[ -f $snapshot_img ] || qemu-img create -q -F qcow2 -b $base_img -f qcow2 $snapshot_img
sudo 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 bridge
ip 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
然后应该就可以访问内网了。
相关文章
- 【技术种草】cdn+轻量服务器+hugo=让博客“云原生”一下
- CLB运维&运营最佳实践 ---访问日志大洞察
- vnc方式登陆服务器
- 轻松学排序算法:眼睛直观感受几种常用排序算法
- 十二个经典的大数据项目
- 为什么使用 CDN 内容分发网络?
- 大数据——大数据默认端口号列表
- Weld 1.1.5.Final,JSR-299 的框架
- JavaFX 2012:彻底开源
- 提升as3程序性能的十大要点
- 通过凸面几何学进行独立于边际的在线多类学习
- 利用行动影响的规律性和部分已知的模型进行离线强化学习
- ModelLight:基于模型的交通信号控制的元强化学习
- 浅谈Visual Source Safe项目分支
- 基于先验知识的递归卡尔曼滤波的代理人联合状态和输入估计
- 结合网络结构和非线性恢复来提高声誉评估的性能
- 最佳实践丨云开发CloudBase多环境管理实践
- TimeVAE:用于生成多变量时间序列的变异自动编码器
- 具有线性阈值激活的神经网络:结构和算法
- 内网渗透之横向移动 -- 从域外向域内进行密码喷洒攻击