Mac OS设置无污染上网环境

最近dns污染太严重,没办法只能自己动手解决了

1,准备软件

brew install dnsmasq #dns小型server
brew install dnscrypt-proxy #dns代理,主要让dns数据包走专用通道
https://github.com/felixonmars/dnsmasq-china-list #dns配置文件,主要加快国内访问
https://github.com/v2ray/v2ray-core #MacOS客户端软件

2,首先配置好你的V2ray,使其能连上你的科学上网服务器。这个如果不会我在开一个教程。

3,修改 dnscrypt-proxy 的配置文件 /usr/local/etc/dnscrypt-proxy.toml。找到这几处 listen_addresses = [‘127.0.0.1:3333’]这个3333你可自己修改相应的端口数值,也可以直接照搬我的。force_tcp = true,(默认false)这个打开强制dns走tcp协议,避免污染。http_proxy = ‘http://127.0.0.1:1087’,去掉这个前面的注释#。1087是你的V2ray的本地http代理端口号,可自己修改。

4,修改dnsmasq配置文件 /usr/local/etc/dnsmasq.conf。这个文件我们不动,新增一个配置文件到 /usr/local/etc/dnsmasq.d/目录下,文件名自定比如base.conf。配置如下:

# 不连接自动下发的dns
no-resolv
# 不检查有关解析的配置文件更新
no-poll
# 配置文件路径,加载dnsmasq-china-list的那两个配置文件
conf-dir=/usr/local/etc/dnsmasq.d
# 附加Hosts文件,可有可无,我觉得以后可能还是需要用到Hosts,就加入了这一行
addn-hosts=/usr/local/etc/dnsmasq.hosts
# 上游服务器设置成DNSCrypt,也就是刚才dnscrypt-proxy里的端口号和监听地址
server=127.0.0.1#3333
# 缓存大小,默认是150,最大9999
cache-size=3000
#增大缓存在本地的时间,减少请求次数。最大3600
min-cache-ttl=3600
#重新加载后清空缓存
clear-on-reload

5,把https://github.com/felixonmars/dnsmasq-china-list下载回来的文件有带conf结尾的,复制到/usr/local/etc/dnsmasq.d/目录下。其实他自带了安装程序,但我用不到更新,故就不安装了。

6,启动和测试

sudo brew services start dnscrypt-proxy #启动并设置开机启动
sudo brew services start dnsmasq #启动并设置开机启动
sudo lsof -Pni UDP:53 #查看端口是否有对应程序

7,dnsmasq的配置文件有一行addn-hosts=/usr/local/etc/dnsmasq.hosts。这个要注意下。如果你的V2ray的地址是域名的话,请在这里做好解析工作。否则当你设置dns为127.0.0.1后,你的V2ray可能连不上。格式如下

90.life 54.87.57.134

V2ray WebSocket TLS Setting Apache设置 网站共存

网上一大堆教程,但就是没有与网站共存的方法。有也是错误的。故此写一篇。

1,请先安装好V2ray,用官方的go.sh

2,复制如下内容到你的/etc/v2ray/config.json。

{
    "log" : {
      "access": "/var/log/v2ray/access.log",
      "error": "/var/log/v2ray/error.log",
      "loglevel": "warning"
  },
    "inbound": {
      "port": 28989,
      "listen":"127.0.0.1",
      "protocol": "vmess",
      "settings": {
        "clients": [
          {
            "id": "a7373f7b-fa58-4eed-bda2-89f19c02c8b4",
            "level": 1,
            "alterId": 90
          }   
          ]
      },
      "streamSettings":{
        "network":"ws",
        "wsSettings":{
          "path":"/ray"
          }
        }
      },
  "outbound": {
    "protocol": "freedom",
    "settings": {}
    },
  "outboundDetour": [
    {
    "protocol": "blackhole",
    "settings": {},
    "tag": "blocked"
    }
  ]
}

3,安装好apache,最新的。在你的/etc/httpd/conf.d/下创建以你网站命名的.conf文件。自己替换相应内容即可。或者复制如下内容。

<VirtualHost *:443>
    DocumentRoot "/var/www/html/"
    ServerName 90.life
    ServerAlias www.90.life
    DocumentRoot /var/www/html/
    <Directory /var/www/html/>
       AllowOverride All
    </Directory>
SSLCertificateFile /etc/letsencrypt/live/90.life/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/90.life/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateChainFile /etc/letsencrypt/live/90.life/chain.pem
SSLEngine On
RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.*)           ws://localhost:28989/$1 [P,L]
SSLProxyEngine On
Proxypass /ray http://127.0.0.1:8989
ProxyPassReverse /ray http://127.0.0.1:28989
</VirtualHost>

4,后面的配置和其他正常一样。如果开启了selinux。请执行下这个

setsebool -P httpd_can_network_connect 1