KVM虚拟机安装Windows10

具体安装过程请看视频



在BIOS参数的选择上,如果虚拟机没有添加显卡直通,那么使用BIOS或者UEFI方式都可以,推荐UEFI。

但是如果使用了显卡直通,这里就不能随意的选择了,必须先提取显卡ROM,然后从ROM里判断是不是支持UEFI,如果不支持,只能用BIOS模式,否则BIOS参数不正确的话会导致直通显卡失败。

virtio-win iso
https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso

OpenWrt上部署Tor洋葱匿名网络

Tor需要正确的配置才能起到匿名效果,否则会适得其反更加的不安全。

网络的基本逻辑结构



Tor代理(onion proxy OP):用户代理端。

目录服务(directory server DS):目录服务器(多个)负责存储和管理所有的OR节点信息,当Tor代理启动时候,首先需要连接到目录服务获取节点信息,所以OR和目录服务器的地址都是公开的。

Tor路由器(onion router OR):匿名通信链路的基本单元用于转发数据,且做为出口节点,必须在配置文件中被明确的定义,数据在经由3个随机OR发送到目标服务器。


网桥中继(Bridge relays BR):Bridge节点是一种特殊的非公开OR节点,当用户不能直接连接到DS和OR,那么就通过Bridge节点连接。

目标应用服务器(Bob):应用服务器提供具体的服务。

各单元之间使用tls协议连接,DS和OR的ip地址是已知的,在直接连接时,分析连接的ip地址就会被探测到正在使用tor网络,其次Tor的tls流量也能被识别,tls1.2的握手特征(密码套件,hello回应数据包长度等),包括使用obfs4 meek等流量混淆插件,这让Bridge节点失去了意义。要安全的使用tor就必须额外的配置加密代理。

在/etc/tor/torrc中,可以定义两种不同类型的代理

HTTPSProxy
Socks5Proxy

由于HTTPSProxy配置起来需要证书,直接使用shadowsocks的加密Socks5Proxy。

写了一个脚本快速部署

wget https://raw.githubusercontent.com/xxooxxooxx/openwrt_tor/master/install.sh
sh install.sh

说明和注意事项

第3行修改Socks5Proxy地址
第4,5行时区,请参考下面的地址修改
https://github.com/openwrt/luci/blob/master/modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua

run-if-today 计划任务工具,脚本设置了一条计划任务,每月的第3个星期四,自动更新数据库

定义ip数据库,只有定义了GeoIPFile文件位置,下面的定义才会生效

GeoIPFile /opt/geoip
GeoIPv6File /opt/geoip6

指明那些OR(国家/地区)节点需要排除
https://en.wikipedia.org/wiki/ISO_3166-1

ExcludeNodes
ExcludeExitNodes

明确指明入口和出口

EntryNodes {us}
ExitNodes {us}

验证是否安装成功
netstat -anp|grep 9050

执行 logread 能看到类似如下的信息

Bootstrapped 0% (starting): Starting
Starting with guard context "default"
Bootstrapped 3% (conn_proxy): Connecting to proxy
Bootstrapped 4% (conn_done_proxy): Connected to proxy
Bootstrapped 10% (conn_done): Connected to a relay
Bootstrapped 14% (handshake): Handshaking with a relay
Bootstrapped 15% (handshake_done): Handshake with a relay done
Bootstrapped 75% (enough_dirinfo): Loaded enough directory info to build circuits
Bootstrapped 90% (ap_handshake_done): Handshake finished with a relay to build circuits
Bootstrapped 95% (circuit_create): Establishing a Tor circuit
Bootstrapped 100% (done): Done

浏览器配置

使用FireFox,复制出一份新的快捷方式,在新快捷方式的执行命令参数后面加 -P,运行,在弹出的窗口点“创建配置文件"名字任意,并且不要登陆任何的网络账号。

安装如下插件

decentraleyes
https://addons.mozilla.org/zh-CN/firefox/addon/decentraleyes/
disconnect
https://addons.mozilla.org/zh-CN/firefox/addon/disconnect/
privacy-badger
https://addons.mozilla.org/zh-CN/firefox/addon/privacy-badger17/
HTTPS Everywhere
https://addons.mozilla.org/zh-CN/firefox/addon/https-everywhere/
Proxy SwitchyOmega
https://addons.mozilla.org/zh-CN/firefox/addon/switchyomega/

安装自定义配置

https://github.com/pyllyukko/user.js

安装过程请参考下面的视频


最后在Proxy SwitchyOmega选项里配置代理
类型socks5 ip 9050

再次修改快捷方式的参数修改为
-P "配置文件名字" -no-remote

验证测试

https://ipx.ac/run
https://check.torproject.org/
https://www.doileak.com/
https://dnsleaktest.com/

能用于被追踪的信息

任何网络账号
浏览器漏洞
IP地址
DNS服务器
WebRTC
Flash IP(现在的浏览器会自动屏蔽Flash)
Battery(电池)
User agent(用户代理)
浏览器的语言
浏览器Cookie
CPU的核心数
屏幕的分辨率
时区(Timezone)


https://2019.www.torproject.org/docs/tor-manual.html
https://github.com/ruped24/toriptables2
https://wiki.archlinux.org/index.php/Firefox/Privacy

DNS加密的几种方法对比

都2019了,大部分网络协议都实现了加密,唯独DNS还在裸奔,下面是我使用过的实现方法,包括RFC标准和私有协议实现的,有些方法响应速度比较慢,基本不具备实用性的,就不列出来了

DNS-over-TLS


RFC标准,使用TLS协议来加密DNS报文,因为TLS有握手过程,响应速度中等,对网络质量要求比较高,个人条件下自己搭建需要企业级线路,成本较高,需要专用服务端及客户端来实现。可做为实现的有nginx/haproxy&bind9,Unbound,stunnel等开源项目,在使用了更为先进的TLS 1.3以及TCP Fast Open优化以后能近一步降低连接延时,因为大部分DNS-over-TLS服务器ip地址公开且使用特定端口,并且TLS1.2握手过程有特定特征,会被流量识别或探测到。

DNS-over-HTTPS


RFC标准,使用HTTPS(也就是HTTP-over-TLS)协议来封装DNS报文,从加密的角度来说本质上和DNS-over-TLS其实没有什么不同,响应速度中等,对网络质量要求同样比较高
Android 9以及主流浏览器(chrome&firefox)能直接支持DNS-over-HTTPS,如果做为系统层面上的实现,同样需要专用的服务端及客户端,虽然https协议被广泛使用,但如果探测包发送GET请求,响应为JSON编码的DNS解析,依然会被立刻封锁。


DNS-over-VPN-Tunnel


通过VPN Tunnel配合ip策略路由实现,首先需要在网络中的网关建立VPN Tunnel,比如OpenVPN,OCServ,Tinc等,并定义不使用远程网关,定义好对应table的default网关以后
使用ip策略路由ip rule add to 8.8.8.8 table vpn,这样只要是访问目标是8.8.8.8的报文就会通过VPN Tunnel,优点响应速度快,几乎和不加密的原生速度一样,
也不需要专用服务端及客户端,缺点,需要网关权限,整个DNS解析过程在网络中只有一部分是加密的,配置繁琐,需要搭建VPN服务器,完美实现需要一定的shell脚本编程能力
比如对VPN的连接监视断线重连等。


ss-tunnel


ss-tunnel是shadowsocks-libev里的一个组件,转发本地的DNS请求通过shadowsocks代理,优点响应速度快,配置方便简单,缺点是在网络中只有一部分是加密的,并且为私有协议。
/usr/bin/ss-tunnel -c /etc/shadowsocks.json -l 53 -L 8.8.8.8:53 -u
监听本地的53端口,远端DNS为8.8.8.8:53