魔法

全球化浪潮无法阻挡,我们常常有访问一些资料的客观需求。但有的时候因为一些因素往往导致无法正常访问(包括但不限于终端中下载文件特别慢、无法访问部分网站、部分应用无法正常使用等)。虽然前路千沟万壑,但无法阻挡我们前行的脚步。

无论做什么都是有代价的,付出不一定有收获,但是不付出肯定没有收获。

访问互联网权认为所有人必须能够访问互联网,以行使和享受其言论自由通信自由见解自由以及其他基本人权任何国家地区不合理地限制个人对互联网的访问都是对基本人权践踏

为了你的人身安全,不要在任何装有具有间谍性质的专有软件的设备上使用科学上网客户端。这些设备可以是手机,PC 等。在手机上,相关部门的监管机构可以轻易得到你所安装的应用列表,并可以通过各种手段关联并查询到你所做的事和发表的言论,并采取进一步控制,这是有先例的。理论上,在 PC 设备上也完全存在这种可能。如果你必须要使用微信,QQ 等具有间谍性质的专有软件,请在完全隔离的物理设备中使用。更多内容请阅读现代隐私保护指南,这对你的安全非常重要!

ps: 魔法只是我们学习的通道,本人并不反对GFW封锁,虽然不认同其极端激进的保护措施,请不要把我当作50W!

如果有人认为魔法是”不和谐的”,我只能表示非常遗憾。

本节描述如何在 linux 下进行科学上网。本节以及后续的全局代理章节都是必读章节。如果没有配置好科学上网,那么你在日常使用中会遇到各种问题,不论是被封锁的资源或代码,还是查阅相关问题资料,你都会有可能无法下载和浏览。所有人必须配置好科学上网再继续。另外,为了保护您的隐私,谨防DNS泄露!

DNS 泄露

实际上 DNS 泄露在不同场景下有着不同的含义,本节分场景进行描述 DNS 泄露的几种情况。

    • 假设你是一个”遵纪守法的好公民”,不上任何被当局禁止的外国网站。但是你在乎在访问”合法”网站的历史不要被当局记录(有些国家的 ISP 是被政府完全控制的)。如果你没有设置你认为安全的 DNS 地址,而是使用默认的,ISP 提供的 DNS 地址,那么你的访问历史大概率会被记录。
  • 假设你的设备上有一定的分流规则,同时域名策略是 IPIfNonMatch。当访问了一个被禁止的网站,但没有 domain 匹配结果,此时就会进行 DNS 查询。如果此时使用的是 ISP 默认 DNS,则会发生泄露。
  • 假想有一个钓鱼的境外网站,内嵌了许多无缓存的国内的图片网址。那么在访问这个网站时,根据分流规则,访问图片将会进行默认的 DNS 查询。如果此时使用的是 ISP 默认 DNS,则会发生泄露。

为了最大限度的安全,我推荐在 Linux 工作站上始终开启全局代理。


节点的准备

简单来讲节点是形如如下的神秘链接,不论你以何种方式获得的这些连接,如果你已经拥有,可以直接阅读下面一小节。

SS://鍒板簳浠?拷涔堟椂鍊椤紑锟斤拷锟斤拷锟斤拷锟剿达拷锟斤拷
vmess://鍒板簳浠?拷涔堟椂鍊椤紑锟斤拷锟斤拷憋拷幕锟斤拷锟斤拷录冶锟斤拷

ps:你没有乱码,只是我对内容进行了加密(胡咧咧%#×&×?)

阿巴阿巴..

记住自己的神秘链接不要给别人发哦!

如果你没有这些连接,可以自行部署或者购买机场的订阅服务。

如果自行部署,你则需要自行购买处于自由互联网的服务器并进行节点搭建,这不在本文讨论范围内。 自建VPS实现魔法很简单,域名注册、解析、托管Cloudflare、证书申请、套用CDN…

对于服务器的购买,提供一个网址以供参考: https://bitcoin-vps.com/ 。bitcoin-vps 提供了非常详尽、且及时更新的服务器供应商列表,这些服务器供应商均在不同程度上支持使用加密货币进行支付,如比特币、以太坊等等。使用加密货币支付的好处在于,在正确操作的基础上,你可以完全保障自己的隐私安全。使用支付宝等实名支付手段购买类似的服务是不安全的,我希望读者们可以认识到加密货币在各方面的价值,并认识到加密货币可以作为你的隐私保护者的存在。

如果有人认为虚拟货币是”不和谐的”,我只能表示非常遗憾。

如果购买机场的订阅服务,可以参考它们的订阅流程以获取节点。需要提醒的是,机场服务属于灰色产业,随时有跑路的风险,购买建议以月付,量付进行购买以避免过大损失。关于机场审计规则,我的观点是”我可以不看,但是你不可以封禁”。对于机场审计程度,各位可根据自身实际情况自行评估

安装

Qv2ray 和 V2rayA 是两款非常优秀的在 Linux 上可用的科学上网通用客户端。你可以把二者都安装,以作备用。其中 V2rayA 是一款浏览器客户端,它可以在服务器等 headless 环境中通过远程在浏览器端访问。Qv2ray 是一款经典的使用 QT 开发的 C/S 架构桌面端软件。

v2ray(读音:V 突 ruai )

v2ray 是使用 Qv2ray 以及 V2rayA 的前提。需要先进行安装。在前面镜像源的选择一节中我提到,读者应该尽快更换非威权国家的镜像源以保障自身的安全,在此处安装 v2ray 之前是你更换非威权国家的镜像源的最晚时刻

使用安全的镜像源安装 v2ray。

sudo pacman -S v2ray

如果在你的网络环境下,没有较快速度的或可达的安全镜像源来安装 v2ray,你可以执行如下命令安装 codbox为你提供的 v2ray 安装包。

wget http://cloud.linioi.top/#s/8xdjOBhQ

sudo pacman -U v2ray-4.44.0-1-x86_64.pkg.tar.zst

V2ray

V2Ray 跟 Shadowsocks 有什么区别?

区别还是有的,Shadowsocks 只是一个简单的代理工具,而 V2Ray 定位为一个平台,任何开发者都可以利用 V2Ray 提供的模块开发出新的代理软件。

了解 Shadowsocks 历史的同学都知道,Shadowsocks 是 clowwindy 开发的自用的软件,开发的初衷只是为了让自己能够简单高效地科学上网,自己使用了很长一段时间后觉得不错才共享出来的。V2Ray 是 clowwindy 被喝茶之后 V2Ray 项目组为表示抗议开发的,一开始就致力于让大家更好更快的科学上网。

由于出生时的历史背景不同,导致了它们性格特点的差异。

简单来说,Shadowsocks 功能单一,V2Ray 功能强大。听起来似乎有点贬低 Shadowsocks 呢?当然不!换一个角度来看,Shadowsocks 简单好上手,V2Ray 复杂配置多。

V2rayA

V2rayA 是一个浏览器客户端,使用非常方便。由于作者提供了在墙内的下载地址,可以直接在 AUR 进行安装。安装后需启动服务。V2rayA 更新频繁,开发活跃,并且其安装和使用流程都对新手更加友好,推荐新人使用 V2rayA 进行科学上网。

yay -S v2raya-bin 
sudo systemctl enable --now v2raya

随后在 KDE 菜单中搜索 v2raya,点击即可打开浏览器页面。登陆后在其中加入订阅即可使用。更多使用方法请看官方文档项目地址

Qv2ray 3.0

和上一节中所述相同的原因,由于大陆zf封锁 Github的原因,你很可能没有办法用正常 yay 的方式通过 AUR 安装Qv2ray 3.0,所以 codbox 提供一组可以直接安装的包以供你使用。Qv2ray3.0 的 bin 仓库在于 AUR 的地址: qv2ray-static-nightly-bin。 Qv2ray3.0 的动态链接仓库在于 AUR 的地址: qv2ray-git。Qv2ray 的安装与使用较为复杂,不建议新手使用。需要提醒的是,如果你使用动态链接的 Qv2ray,在其相关依赖更新后,你需要手动重新构建 Qv2ray。

wget http://cloud.linioi.top/#s/8xdmvxUg
wget http://cloud.linioi.top/#s/8xdnF5sA
wget http://cloud.linioi.top/#s/8xdnapcw
wget http://cloud.linioi.top/#s/8xdno1mQ

sudo pacman -U *.pkg.tar.zst

安装后在 Plugins 中,选择 V2ray V4 support,并进行 V2ray 的设置。现在你已经可以使用,你需要按照官方文档导入已有的链接或订阅,其余细节请详细阅读 Qv2ray 的文档。有如下几个注意事项:

  • Qv2ray3.0 中 VMESS MD5 与非 0 的 AlterID 的形式已不被支持,若你的机场或节点下发的 AlterID 是非 0 是无法使用的。如果服务端支持,你可将 AlterID 改为 0 来使用 VMessAEAD 形式。

  • Qv2ray3.0 已经将机场的默认订阅类型改为规范:SIP008。如果你的机场订阅类型为 base64,则需要在分组->订阅设置->订阅类型 中,将 SIP008 改为 base64,否则你将拿不到任何订阅链接中的节点。

  • 如果你先前使用过 2.x 的旧版本 Qv2ray ,需要删除旧版 Qv2ray 以及不兼容的配置,同时旧版 Qv2ray 与新版 Qv2ray 不能共存。

rm -rf ~/.config/qv2ray

sudo pacman -R qv2ray-dev-git

Qv2ray 3.0 与旧版插件不兼容,原有 Qv2ray 2.x 旧版插件不可使用。目前 Qv2ray 3.0 集成了 VMess、Shadowsocks 以及 Trojan 的支持,并通过插件仓库提供 命令行插件、测速插件、Trojan-Go 和 Naive 的支持。如果你需要使用其中的插件,则需要自行编译,并将其置入目标目录~.config/qv2ray/plugins/

Qv2ray 是 Linux 下久负盛名的 GUI 代理程序,在 Linux 用户群中有极高的热度,大受欢迎与喜爱!

但是自 4 月 30 日 Qv2ray 开发组及 V2Fly 项目相关成员发生内部矛盾冲突以来,Qv2ray 的开发基本停滞。如果说此前还可以用 qv2ray-git (3.0.0) 自欺欺人的话,那么现在 Qv2ray README 的声明则是对这场闹剧的终结。

作为一个见证了闹剧的开始与落幕的观众,我内心的失望是不言而喻的。如果之前对开源社区还抱有极高的崇敬与憧憬的话,现在算是认清了“开发者也是通俗意义上的人”的事实。Qv2ray 事件也好,RMS 事件也罢,由人组成的团体可以如此相似和单调枯燥。

属于 Qv2ray 的时代已经谢幕。可预见的是,如果 Linux 开源社区仍然像这样一滩死水的话,Linux 也到了淡出舞台的时候了,它过去所让人热爱和追捧的一切会是最后击垮它的落石。

代理的初步设置

在经过上述步骤后,你应该已经有了 SOCKS5 代理以及 HTTP 代理的地址和端口。本小节描述如何单独为一些程序设置代理,但是需要提醒的是,这不是推荐的使用方式,如果你是 Linux 的日常重度使用者,你应该使用后续将会讲述的全局代理方式。

在节点链接后,你可在 KDE 的系统设置 -> 网络设置 -> 代理中设置代理。注意,系统设置中的代理配置在 KDE 桌面环境中并不是所有应用都会遵守,经过测试,chrome/chromium/brave 浏览器与 steam 等应用会遵循 KDE 的系统代理设置。没有遵循系统设置代理的应用还需要单独进行代理配置。下面说明几种常用的软件中单独配置代理的方式。

  • Firefox 浏览器

火狐浏览器自身的设置选项中存在代理配置,进行配置即可。

  • 终端

可以通过 export 命令设置当前终端的代理方式。比如使用 tldr 或 github raw 等资源需要设置 https 代理。

export https_proxy=http://127.0.0.1:8889
export http_proxy=http://127.0.0.1:8889

export all_proxy=http://127.0.0.1:8889

不同终端命令所识别的环境变量名不同,如 all_proxy 对 curl 生效,而对 wget 则不生效,具体可查看各个命令的 man page。

  • code OSS
    File => Preference => Settings
    搜索 proxy,在其中填入 http 代理地址即可
  • proxychains-ng

     如果对于一个应用,KDE 的全局代理不生效,在终端 export 了 ALL_PROXY 变量再   用终端启动此应用代理也不生效,并且这个应用自身也没有配置代理的选项,此时可以尝试使用 proxychains-ng,它可以为单行命令配置代理。它是一个预加载的 hook,允许通过一个或多个 SOCKS 或 HTTP 代理重定向现有动态链接程序的 TCP 流量。

sudo pacman -S proxychains-ng

sudo vim /etc/proxychains.conf
 

把配置文件中最后一行改为本地代理的 ip 和端口,如socks5 127.0.0.1 1089

更加全面的系统级代理

由以上各部分可以看到,为各个软件单独设置代理是很麻烦的。如果你把 Linux 作为主力使用,那么配置透明代理也是必须的,如果你使用 V2rayA,那么可以很方便的在设置中开启全局代理。如果你的技术水平不高,建议你直接使用 V2rayA 的全局代理。

对于全局代理的情况下,开启 UDP 支持,DNS 请求也将被拦截并导入 v2ray 中。

为什么不建议使用分流代理?分流代理存在什么危险?

分流代理在大多数场景下指的是:在访问国内资源时,使用直连的方式,而在访问国外被墙的资源时,使用代理进行连接。这种网络的使用方式确实会非常方便,但是存在显而易见的危险,然而大众几乎并没有意识到这里的问题。

使用分流代理的方式非常容易泄露你自身的隐私信息,包括但不限于 IP 地址,浏览器以及硬件指纹(几乎可以唯一标记你这一个用户的指纹)等等一系列信息,并且可以将你使用的代理 IP 与你自身的真实 IP 进行对应。

举例来说,一个最常见的例子就是某个国外的网站使用了百度统计脚本,这时你的代理 IP 与真实 IP 的对应信息可以轻松的被这样的网站进行对应,这是非常危险的。 另一个例子就是一些恶意的邮件,比如你在使用国外的邮箱服务,接收到了一个恶意邮件,这个邮件中嵌入了一些国内的资源如图片,那么你的真实 IP 等信息也可以被轻松获取

真实的例子不止以上两个,还有很多类似的情况存在。一直为了大众的隐私与安全而战,希望今后你可以放弃使用分流代理的网络连接方式。

全局代理,也即透明代理。本节所述为真正的,操作系统级别的代理,而不是仅仅针对浏览器中全部网址的”全局代理”。之所以叫做透明代理,是因为这种系统级别的代理对于操作系统中的各个应用相当于是透明的,应用们感知不到代理的存在。之所以叫做全局代理,很明显意为操作系统级别的、全局的代理。这两个词汇在中文环境中经常同时使用,并且全局代理一词容易引起混淆。

安装与设置

  1. 安装cgproxy软件。可直接在 AUR 上安装。由于中国大陆政府封锁 Github 的原因,你很可能没有办法用正常 yay 的方式通过 AUR 安装 cgproxy,所以 codbox提供一组可以直接安装的包以供你使用。

wget http://cloud.linioi.top/#s/8xdk75ZQ

sudo pacman -U cgproxy-0.19-1-x86_64.pkg.tar.zst

在 Qv2ray 的“首选项-入站设置”的下方启用任意门设置选项。

  • 监听 ipv4 地址可填127.0.0.1 或 0.0.0.0,建议前者。若需双栈代理,则在监听 ipv6 地址填上::1(如果监听 ipv4 填了 0.0.0.0 则可不填)。
  • 嗅探选择 Full,Destination Override 的三项均勾选。
  • 模式选择“tproxy”。

如果是复杂配置,则需要手动添加相应的 dokodemo-door 入站。由于目前版本复杂配置并没有提供 tproxy 选项,因此 tproxy 模式需要通过编辑 json 来实现。

  1. 配置cgproxy,编辑/etc/cgproxy/config.json

    • cgroup_proxy中括号里加上”/”(包含引号)port改为 Qv2ray 首选项里的透明代理的端口。
    • cgproxy默认配置是代理所有 tcp 和 udp,ipv4 和 ipv6 的流量,如果不希望代理其中的某种(些)流量,则将对应的enable_xxx改为 false。注意这里的配置要和 Qv2ray 选项里的配置一致(如,Qv2ray 选项里没有勾选 udp,则这里务必把enable_udp改为 false)。
    • 如果希望当本机作为网关设备时为连接到本机网关的其他设备(如连接到本机开设的 wifi 热点的设备)也提供透明代理,则把enable_gateway改为 true。
    •  
  2. (重要)透明代理的基本原理是拦截系统发出的所有流量,并将这些流量转到代理工具里,从而实现让系统所有流量都走代理的目的。此时,为了避免流量出现死循环(即代理工具发出的流量又转回到代理工具里),需要将代理工具排除在透明代理环境外面。有两种方式可以实现这一点:

    • 通过execsnoop监控代理工具的启动,并自动将其移至透明代理环境外面:

      • cgproxy软件自带execsnoop支持,以上cgproxy测试过的发行版均可支持。
      • 编辑/etc/cgproxy/config.json,在program_noproxy中括号里加上”v2ray”,”qv2ray”(包含引号和逗号),以使qv2rayv2ray发出的流量不经过透明代理。如果你的v2rayqv2ray不在PATH里,则需要填写它们的绝对路径。
    • 在每次连接代理节点时,让qv2ray自己把自己移到透明代理环境外面:

      • 安装 Qvplugin-Command 插件,在插件设置里的“pre-connection”栏里加上一句sh -c "cgnoproxy --pid $(pgrep -x qv2ray)"

                                          即可。

(重要)如果启用了 udp 的透明代理(dns 也是 udp),则给 v2ray 二进制文件加上相应的特权:

sudo setcap "cap_net_admin,cap_net_bind_service=ep" /usr/bin/v2ray

否则 udp 的透明代理可能会出问题。

如果每次更新了 v2ray 二进制文件,都需要重新执行此命令。

启动透明代理服务:systemctl start cgproxy.servicesystemctl enable --now cgproxy.service

以上步骤完成后,透明代理应该能正常使用了(应该…)

dns 配置说明

如果勾选了“dns 拦截”,且启用了 dns 和 udp 的透明代理,则 v2ray 会拦截对系统 dns 的请求,并将其转发到 v2ray 的内置 dns 里,即让 v2ray 内置 dns 接管系统 dns。但 v2ray 内置 dns 是会遵循路由规则的。

如果没勾选“dns 拦截”,则 v2ray 虽然不会让内置 dns 接管系统 dns,但如果启用了 dns 和 udp 的透明代理,则系统 dns 也会走透明代理进 v2ray,并遵循 v2ray 的路由规则。

因此,在启用了 dns 和 udp 的透明代理时,若系统 dns 或 v2ray 的内置 dns 配置不当,可能导致 dns 请求发不出去,从而影响正常上网。

由于 qv2ray 常见的路由规则是绕过国内 ip,国外 ip 均走代理。在这个情形中,以下两个配置是典型的有问题的 dns 配置方式:

  • 配置了国外普通 dns 作为首选,但代理本身不支持 udp(此时 dns 查询的 udp 流量出不去,dns 无法查询)

  • 配置了使用域名的 doh 作为首选。此时 doh 的域名无法被解析,从而 doh 也无法使用。

一般而言,如果并不在意将 dns 查询发给谁,那么,在绕过国内 ip 的情况下,只需要配置一个国内普通 dns 作为首选即可保证不会出问题。若代理本身不支持 udp,又希望使用国外 dns,则可以考虑使用使用 ip 的 doh(如https://1.1.1.1/dns-query等)。

如果需要更复杂的 dns 配置,建议参考上游文档,并选择合适的不会影响正常上网的 dns 配置。

在显示的为 firefox 等应用设置代理时,因为这些应用程序知道代理的存在,所以不会发出 DNS 请求。而透明代理的情况下,各应用感知不到代理的存在,所以会发出自己的 dns 请求。

这时通过 cgproxy 可将全部 tcp/udp 的流量(包括 DNS 查询)转给 v2ray。由于这种情况下,一定会有 DNS 查询流量的产生,所以为了保证本机不发出任何 DNS 请求(这是为了隐私和安全),需要进行以下设置。此时需要分两种情况讨论。

  • 如果不进行任何 v2ray 的内置 DNS 设置以及 DNS 拦截,那么 DNS 流量会使用本机的 DNS 设置如 8.8.8.8 发出,这种情况不论如何配置 v2ray(全局或者分流),只要保证对于 8.8.8.8 的请求能够通过代理发出即可。

  • 如果 v2ray 通过形如如下路由规则,拦截经由 dokodemo-door 接收到的 dns 流量到 dns outbounds,那么 v2ray 是可以导向 DNS 查询流量到”dns-out”的 out bound 的,也即 dns-outbound 进行的”拦截“和”重新转发“。

    rules:
    {
    "inboundTag": [
    "tproxy-in-1",
    "tproxy-in-2"
    ],
    "outboundTag": "dns-out",
    "port": "53",
    "type": "field"
    },

    此时 dns outbound 应该调用内置 DNS 设置进行解析,假如 v2ray 内置 DNS 设置为 1.1.1.1,此时原有对于 8.8.8.8 的 DNS 请求就会转而向 1.1.1.1 请求(随后对 1.1.1.1 的请求还是会遵循你的路由规则的),并将结果返回给应用端。你可以通过开启 qv2ray 更详细的日志级别进行验证。

如果只是为了阻止本机发 dns 请求,完全可以不使用 fakedns。fakedns 在透明代理的条件下确实可以减少一次 dns 请求,理论上确实会快一点。但是也在有的文章指出如果所有域名都伪造 dns 返回可能会有问题。

题外话:使用 clientIP 可解决使用代理服务器解析 DNS 若返回国外 CDN 的网址时网速慢的情况,但是前提是你信任代理服务器和 DNS 服务器接收你的本地 IP,为了你的安全,不建议使用。

常见问题

  • 启用透明代理后无法访问任何外网,且 v2ray 的 cpu 占用率飙升

    可能是流量陷入死循环了,检查第 4 步有没有正确配置。如果配置没问题,执行systemctl status cgproxy.service看下有没有诸如info: process noproxy pid msg: xxx之类的输出。如果没有,则说明 cgproxy 软件或 execsnoop 没有正常工作。注意 cgproxy 软件需要 cgroup v2。

    尝试退出 qv2ray,随后在终端里执行cgnoproxy qv2ray看是否恢复正常,如恢复正常,说明 cgproxy 正常工作,只是 execsnoop 没有正常工作。由于 execsnoop 一定程度上依赖于内核,非上述 cgproxy 测试过的发行版用户,建议使用第 4 步中的第 2 种方法。另外,对 kde 用户,5.19+版的 plasma 会给从 krunner 里启动的程序额外设置 cgroup,尽管 cgproxy 软件考虑到了这一点,但仍有极少数场合可能出现 plasma 设置的 cgroup 覆盖掉了 cgproxy 设置的 cgroup 的情况,此时通常重启一下 qv2ray 即可。

  • 启用透明代理后,无法访问(部分)域名

    可能是 dns 无法解析(部分)域名。一般这种故障只发生在启用了 dns 及 udp 透明代理的时候。

    终端里执行dig 无法访问的域名看下报什么错:

    • 若出现类似reply from unexpected source: 192.168.0.100#42050, expected 8.8.8.8#53的报错,则检查第 5 步的有没有正确配置。

    • 若出现类似connection timed out; no servers could be reache的报错,则说明 dns 查询的流量出不去,此时往往是系统 dns 或 v2ray 内置 dns 配置不当。请检查是否出现了前文提到的几种不当配置。如果没有勾选“dns 拦截”,则此时 v2ray 虽然不会用内置 dns 接管系统 dns,但它仍然会让系统 dns 走透明代理,从而遵循 v2ray 的路由规则,此时需要检查系统 dns 是否是前文提到的那几种不当配置。

  • 能不能分应用代理(如,下载 BT 时不能走代理)

    对于本机的程序,可以,可通过两种方式实现:

    • 通过cgnoproxy实现:如,在命令行中执行cgnoproxy qbittorrent,启动的 qbittorrent 程序就不会走透明代理。又如,在命令行中执行cgnoproxy --pid 12345,执行之后 pid 为 12345 的程序就不再走透明代理。这种方式可支持任何应用。

    • 通过/etc/cgproxy/config.json实现:在配置里的program_noproxy中括号里加上相应的应用即可。这种方式只支持可执行文件,不支持各种脚本。如希望把 clash 与 kde connect 加入 noproxy 规则,则在把此字段补全成[“v2ray”, “qv2ray”, “clash”, “/usr/lib/kdeconnectd”]即可。注意修改config.json之后,需要重启 cgproxy 服务才能生效,执行systemctl restart cgproxy.service即可。

    对于当本机作为网关设备时为连接到本机网关的其他设备,不行,那些设备的所有流量(到本机的流量除外)都必然会走代理。

  • 透明代理环境中响应速度变慢

    由于 iptables 是在域名解析成 ip 之后,才对相应的流量进行重定向。因此,在透明代理环境中,访问一个域名 s 可能会需要解析至少 2 次 dns(系统解析一次,重定向到 v2ray 之后 v2ray 分流模块再解析一次)。因此,响应理论上是会变慢一点的,变慢的幅度取决于系统 dns 及 v2ray 的 dns 的响应速度。

  • 开启 UDP 支持后报错too many open files

    核心问题是,Linux 系统定义了一系列限制,其中一种限制是最大打开文件数,并且有软限制和硬限制,具体的限制结果可以通过ulimit -Saulimit -Ha查看。一般来说 arch 默认的软限制 open files 的值为 1024,这个数值太小。硬限制的 open files 的值为 524288,这个数值够大了。打开网页过多,或者开启 udp 加速的时候,连接数(打开的文件数)很容易超过 1024 这个数,所以就被限制住了。解决办法很简单,只需要修改系统级别的关于这个限制的配置文件,在/etc/security/limits.conf 文件的最末尾,加上下面这行,然后重启即可:

    *   soft    nofile  8192  #不要落下了最前面的星号
  • 使用 docker/libvirt 时与 cgproxy 不能正常使用。解决方法未知。

☢️ 警告

第六条 计算机信息网络直接进行国际联网,必须使用邮电部国家公用电信网提供的国际出入口信道。

任何单位和个人不得自行建立或者使用其他信道进行国际联网。

— 中华人民共和国计算机信息网络国际联网管理暂行规定–

 

  1. 本项目所有内容,仅供学习和研究使用,请勿使用项目的技术手段用于非法用途,任何人造成的任何负面影响,与本人无关.
  2. 本文档所有内容、新闻皆不代表本人态度、立场,如果有建议或方案,欢迎邮件。
  3. 未收及不会收取任何广告费用,推荐的所有工具链接与本人无任何利害关系