网络普通用户群体 IPv6 常见问题解答

文章转载至 ICANN

本 FAQ(常见问题解答)由网络普通用户群体成员为 2009 年 3 月的网络普通用户峰会编写。

A. 基本问题

A1. IPv6 是什么?
A2. 为什么需要引入 IPv6?
A3. IPv6 地址的格式和语法是什么?
A4. IPv4 和 IPv6 可以并存吗?

B. 用户角度 - 访问

B1. 如何在 Windows XP 上启用 IPv6? 
B2. 如何在 Vista 上启用 IPv6?
B3. 如何在 Mac 上启用 IPv6?
B4. 如何在其他操作系统上启用 IPv6?
B5. 如何使用 IPv6 来访问互联网?
a. 纯粹 IPv6
b. 使用隧道技术穿越 IPv4 进行 IPv6 连接 (Teredo、6to4、6in4 等)
– Windows:Teredo 隧道技术
– Mac OS X:Teredo 隧道技术
– Mac OS X:6to4 隧道技术
– 其他操作系统:6to4 和 6in4 隧道技术
c. 特例:移动设备(PDA 等)

C. 焦点问题

C1. IPv6 会带来新的安全漏洞吗?
C2. IPv6 比 IPv4 更快还是更慢?
C3. IPv6 有什么 IPv4 不具备的功能吗?
C4. IPv4 将来会被关闭吗?
C5. 哪些硬件设备(ADSL 调制解调器等)能与 IPv6 兼容?
C6. 哪些 ISP(互联网服务提供商)会提供 IPv6 服务?
C7. 我很好奇,为什么不提 IPv5?
C8. 哪里可以找到关于 IPv6 的更多信息?

Read more

SSR QRcode scheme

由于日益恶劣的网络环境,本文章复制至 Github 原文,已备不时之需。

基本定义

定义base64为URL safe base64,且不带padding(没有末尾的等于号),具体格式如下:

ssr://base64(host:port:protocol:method:obfs:base64pass/?obfsparam=base64param&protoparam=base64param&remarks=base64remarks&group=base64group&udpport=0&uot=0)

其中,base64pass及之前以’:’分隔的,不可省略,而’/?’及其后面的内容,可按需要写上。
字符串使用UTF8编码,编码后必须以urlsafebase64编码,包括密码、混淆参数、协议参数、备注、group

udpport参数及uot目前仅C#客户端支持

示例:

服务器IP: 127.0.0.1
端口: 1234
密码: aaabbb
加密: aes-128-cfb
协议: auth_aes128_md5
协议参数: (空)
混淆: tls1.2_ticket_auth
混淆参数: breakwa11.moe
备注: 测试中文

Read more

obfs 协议和混淆插件说明

由于日益恶劣的网络环境,本文章复制至 Github 原文,已备不时之需。

具体说明参阅https://github.com/breakwa11/shadowsocks-rss/blob/master/ssr.md,这里提供一个给新人简易的指导(如文档有变动以以上这个链接的文档为准)

工作原理

C->S方向
浏览器请求(socks5协议) -> ssr客户端 -> 协议插件(转为指定协议) -> 加密 -> 混淆插件(转为表面上看起来像http/tls) -> ssr服务端 -> 混淆插件(分离出加密数据) -> 解密 -> 协议插件(转为原协议) -> 转发目标服务器

其中,协议插件主要用于增加数据完整性校验,增强安全性,包长度混淆等,混淆插件主要用于伪装为其它协议

客户端

客户端的协议插件暂无配置参数,混淆插件有配置参数,混淆插件列表如下:

plain:不混淆,无参数

http_simple:简易伪装为http get请求,参数为要伪装的域名,如cloudfront.com。客户端上支持用逗号分隔多个域名如a.com,b.net,c.org,连接时会随机使用其中之一。不填写参数时,会使用此节点配置的服务器地址作为参数。

http_post:与http_simple绝大部分相同,区别是使用POST方式发送数据,欺骗性更好,但只有POST请求这种行为容易被统计分析出异常。参数配置与http_simple一样

tls1.2_ticket_auth:伪装为tls请求。参数配置与http_simple一样

其它插件不推荐使用,在这里忽略

客户端的协议插件,仅建议使用origin,auth_sha1_v4,auth_aes128_md5,auth_aes128_sha1,auth_chain_a,解释如下:
origin:原版协议,为了兼容
auth_sha1_v4:较高安全性,有宽松的时间校对要求,混淆强度大
auth_aes128_md5auth_aes128_sha1:高安全性,有宽松的时间校对要求,计算量相对高一些,混淆强度较大
auth_chain_a:高安全性,有宽松的时间校对要求,计算量相对高一些,混淆强度较大

如不考虑兼容,可无视第一个,其它基本均已否决。

服务端

大部分插件都可以通过添加_compatible后缀以表示兼容原版,例如默认的http_simple_compatibleauth_sha1_v4_compatible这样

服务端的协议插件,仅auth_*系列有协议参数,其值为整数。表示允许的同时在线客户端数量,建议最小值为2。默认值64。但auth_chain_a协议例外,此协议的在线数量是实时的,精确的,参数可以最小设置为1。

服务端的混淆插件,http_simplehttp_post有混淆参数,用逗号分开若干个host,表示客户端仅能使用以上任一个host连接,而留空表示客户端可以使用任意host。tls1.2_ticket_auth有混淆参数,其值为整数,表示与客户端之间允许的UTC时间差,单位为秒,为0或不填写(默认)表示无视时间差

其它说明参见客户端部分

总结

如不考虑原版的情况下,推荐使用的协议,只有auth_sha1_v4auth_aes128_md5auth_aes128_sha1auth_chain_a,推荐使用的混淆只有plain,http_simple,http_post,tls1.2_ticket_auth

不要奇怪为什么推荐plain,因为混淆不总是有效果,要看各地区的策略的,有时候不混淆让其看起来像随机数据更好

ShadowsocksR 协议插件文档

由于网络环境愈加恶劣,文章复制至 Github 原文,已备不时之需。

概要

用于方便地产生各种协议接口。实现为在原来的协议外套一层编码和解码接口,不但可以伪装成其它协议流量,还可以把原协议转换为其它协议进行兼容或完善(但目前接口功能还没有写完,目前还在测试完善中),需要服务端与客户端配置相同的协议插件。插件共分为两类,包括混淆插件和协议定义插件。

现有插件介绍

1.混淆插件

此类型的插件用于定义加密后的通信协议,通常用于协议伪装,部分插件能兼容原协议。

plain:表示不混淆,直接使用协议加密后的结果发送数据包

http_simple:并非完全按照http1.1标准实现,仅仅做了一个头部的GET请求和一个简单的回应,之后依然为原协议流。使用这个混淆后,已在部分地区观察到似乎欺骗了QoS的结果。对于这种混淆,它并非为了减少特征,相反的是提供一种强特征,试图欺骗GFW的协议检测。要注意的是应用范围变大以后因特征明显有可能会被封锁。此插件可以兼容原协议(需要在服务端配置为http_simple_compatible),延迟与原协议几乎无异(在存在QoS的地区甚至可能更快),除了头部数据包外没有冗余数据包,客户端支持自定义参数,参数为http请求的host,例如设置为cloudfront.com伪装为云服务器请求,可以使用逗号分割多个host如a.com,b.net,c.org,这时会随机使用。注意,错误设置此参数可能导致连接被断开甚至IP被封锁,如不清楚如何设置那么请留空。服务端也支持自定义参数,意义为客户端仅能填写的参数列表,以逗号分割。
本插件的高级设置(C#版、python版及ssr-libev版均支持):本插件可以自定义几乎完整的http header,其中前两行的GET和host不能修改,可自定义从第三行开始的内容。例子:
baidu.com#User-Agent: abc\nAccept: text/html\nConnection: keep-alive
这是填于混淆参数的内容,在#号前面的是上文所说的host,后面即为自定义header,所有的换行使用\n表示(写于配置文件时也可直接使用\n而不必写成\n,换行符亦会转换),如遇到需要使用单独的\号,可写为\\,最末尾不需要写\n,程序会自动加入连续的两个换行。

Read more

Mac 终端命令代理工具

这篇文章已不再适用,因为找到了更好的透明代理叫Proxifier。

官网地址:https://www.proxifier.com/

注册码:P427L-9Y552-5433E-8DSR3-58Z68

————-以下是废物—————————

公司网络服务器是一台 Mac mini Server(坑是自己挖的),然后最近要做一个透明网关代理用于公(ke)司(xue)业(shang)务(wang),然后研究 pfctl 研究到快疯了,这破玩意儿太 TMD 不友好了,而且在研究了一天后发现这货根本无法实现透明代理~~~

然后就各种心灰意冷之后突然看到一片曙光,原来有一个叫 ProxyChains 的神器。。。

好了,就是这里:https://github.com/rofl0r/proxychains-ng

安装 Mac

brew install proxychains-ng

配置文件

vim /usr/local/etc/proxychains.conf

OSX 上 pfctl 的简单配置笔记

OS X 上没有iptables,在10.10以后以pf取代ipfw。相比于iptables,pf一般使用配置文件保存防火墙规则,语法规范上更严谨,但是配置也更复杂、规则冗长。本文记录pf的简单配置方法。

cat /etc/pf.conf,可看到以下已有内容:(忽略注释部分)

scrub-anchor "com.apple/*"
nat-anchor "com.apple/*"
rdr-anchor "com.apple/*"
dummynet-anchor "com.apple/*"
anchor "com.apple/*"
load anchor "com.apple" from "/etc/pf.anchors/com.apple"

anchor可理解为一组规则的集合。默认情况下,这里的几行anchor都是苹果留的place holder,实际上没有active的规则。
/etc/pf.conf在以后的OSX更新中可能会被覆盖,最好可以另外建立一个自定义的pf.conf。
配置文件必须按照Macros, Tables, Options, Traffic Normalization, Queueing, Translation, Packet Filtering的顺序。
更详细的说明参考pf.conf man page
添加一个anchor。修改/etc/pf.conf如下:

scrub-anchor "com.apple/*"
nat-anchor "com.apple/*"
nat-anchor "custom"
rdr-anchor "com.apple/*"
rdr-anchor "custom"
dummynet-anchor "com.apple/*"
anchor "com.apple/*"
anchor "custom"
load anchor "com.apple" from "/etc/pf.anchors/com.apple"
load anchor "custom" from "/etc/pf.anchors/custom"

建立anchor规则文件/etc/pf.anchors/custom,内容为具体规则。
常用的规则:

屏蔽IP入站TCP连接并记录:

block in log proto tcp from 192.168.1.136 to any

转发入站TCP连接到另一本地端口:

rdr inet proto tcp from any to any port 8081 -> 127.0.0.1 port 80

经测试,rdr无法转发到另一台外部主机上(man page的示例,只可以转发到internal network),内核开启net.inet.ip.forwarding=1也无效。如需转发到另一个外网IP,需要配合mitmproxy的透明代理

NAT,路由vlan12接口上(192.168.168.0/24)的出口包,经由非vlan12的接口转换到外部地址(204.92.77.111),并允许vlan12之间的互相访问:

nat on ! vlan12 from 192.168.168.0/24 to any -> 204.92.77.111

使配置文件生效

pfctl -evf /etc/pf.conf

原文地址:https://blog.chionlab.moe/2016/02/01/use-pf-on-osx/

Laravel PHP 多条件数据库查询

有时候搜索要用到比如select * from user where id > ? and (pid = ? or uid = ? )
可以使用如下方法:

$users = User::where('id','>','10')
->where(function($q1) use($pid,$uid){
$q1->orWhere('pid',$pid)
->orWhere('uid',$uid);
})->get();

简化一下就是这样:
$users = User::where('id','>','10')->where('enable' , 1)-get();

修复 ss-panel v3 无法使用 SMTP 发送邮件的问题 /解决QQ邮箱拦截 Mailgun 邮件

首先要说,有条件的,尽量使用 Mailgun 发送客信,因为 Mailgun 真的是非常好的邮件服务器,高效率而且有完善的分析和报告系统。然后国内某些无耻的邮件服务商相互勾结,恶意拦截 Mailgun 发送的邮件,由于国内部分运营商认为 Mailgun 邮件包含大量垃圾邮件,所以对 IP 限制很死,导致邮件无法正常送达客户。

为了解决这一问题,又不想屈服于国内的垃圾邮件服务提供商,可以暂时通过 smtp 发送邮件来解决问题(如果邮件量巨大的时候,千万别这么做,很容易 iP+域名 被阻止)。然后你会发现即便当你配置了 ss-panel .env 中的 smtp 信息,你依然无法通过 smtp 发送邮件(人家作者也备注了,本来就不再提供 smtp 支持了),那么你可以按如下方法,修复这一问题。

找到 ss-panel 程序目录 ./app/Services/Mail/Smtp.php 文件第27行:

$mail->SMTPSecure = 'tls';

将其修改为:

if(Config::get('smtp_ssl') == 'true'){
$mail->SMTPSecure = (Config::get('smtp_port') =='587'?'tls':'ssl');
}

保存,然后在 .env 文件中配置 smtp 参数,并且把 MailDriver 设置为 smtp,用你的游览器访问你的网站链接 ./admin/test/sendmail,测试一下是否能够发信了?

smtp 修复方案来源于 ss-panel v3 魔改版,感谢作者 kjukjuatnk.

使用 Nginx 解決 Google Analytics 无法统计大陆访问数据被墙的问题

由於眾所周之的原因,Google Analytics 在大陸地區總是「不太穩定」,且無其他可真正比肩者。故而需要通過海外服務器作為反向代理以解決此種問題。同時為統計結果之準確計,必須確保用戶IP等信息得以透明傳輸。

解決方案

nginx配置文件:

server {
listen 80;
listen 443 ssl spdy;
server_name analytics.hellomac.com.cn;
ssl_certificate /etc/letsencrypt/live/www.hellomac.com.cn/privkey.pem;
ssl_certificate_key /etc/letsencrypt/live/www.hellomac.com.cn/privkey.pem;
location /ga_proxy {
proxy_set_header X-real-ip $remote_addr;
rewrite ^/ga_proxy/(.*)$ /$1?$args&uip=$remote_addr;
proxy_pass http://www.google-analytics.com;
break;
}
location /analytics.js {
default_type text/html;
subs_filter_types text/css text/xml text/javascript;
subs_filter 'www.google-analytics.com' 'analytics.example.com/ga_proxy' g;
proxy_set_header X-real-ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Referer https://www.google-analytics.com;
proxy_set_header Host www.google-analytics.com;
proxy_pass https://www.google-analytics.com;
proxy_set_header Accept-Encoding "";
}
}

Read more

iOS 上最简单的 Shadowsocks 客户端教程 / Wingy 设置教程

2019-11-3 更新:
由于 HelloMac Shadowsocks使用了新的加密技术,请前往官方网站查看配置教程及注册账号,谢谢。

前一段时间出了一个 Potatso 教程,但是因为 Patatso 功能太多,大家觉得太复杂,而且软件是需要付费的。所以今天再出一个免费的 Wingy 教程。
Wingy 是一个免费的 iOS Shadowsocks 客户端,其软件体积很小,占用资源也少,而且设置及其简单,其实这个软件的设置是全自动的,完全不需要教程,这个教程也更多的是指引大家如何注册 HelloMac Shadowsocks 服务。

首先,你需要购买 HelloMac Shadowsocks 账户,文章末尾有二维码可以扫码购买,也可以从你的服务商处购买获取更多优惠。
然后,你会收到 HelloMac 官方发来的注册链接,点击链接进入注册界面。

img_0267
Read more

ABOUT

老赵的个人博客,关于 Mac, iPhone, iPad, iPod等产品的软件和硬件技术交流。也讨论Linux/UNIX技术,服务器运维技术等。