跳至主要内容

树莓派3开无线热点变身为智能无线网关(IPv4+IPv6)


无线上六维不是梦,折腾了两天终于终于弄好了~撒花~
这个暑假一直在外实习,回到学校发现实验室已经没有了我的位置。。悲催的被赶到另一个实验楼,这个实验楼主要放的是各种服务器,因此IP比较紧张,以前我自带一个交换机,IP地址随便用,而且都是有线,IPv6默认都可以用,但这边我只分得一根网线,只有一个固定的IPv4的IP,倒是IPv6没有限制(不过后来测试发现还是有些限制)。对于我这么多设备根本不够用嘛。正好看到树莓派3上市了,自带wifi,CPU升级到A53,是服务器级的U了,立刻买了一个回来,当作我的网关。这里我用树莓派搭的其实是一个NAT的路由器,把WAN的ipv4和ipv6都共享给内网LAN,由于是在学校,我的IPv4的地址是固定的,而IPv6的地址动态分配(前缀是固定的),所以不要盲目跟着教程做。这里使用的树莓派是3代树莓派,系统是2016-09-23的raspbian jessie,板载wifi,不需要考虑驱动的问题,如果不是,那么先自行解决驱动问题,这里WAN外网是eth0,LAN内网是无线wlan0,如果接口不一致请自行替换,后面不再做解释。

准备工作

整个过程分为两步,先开IPv4的热点access point,再共享IPv6的热点access point,热点都不是采用bridge方式进行的连接。

固定IP(IPv4)

后面的树莓派默认使用dhcpcd进行ip的配置,因此网上好多关于配置树莓派固定IP的方法都是有点问题(很早的时候是配置/etc/network/interfaces),我们现在配置dhcpcd的配置文件进行固定IP的配置,打开配置文件/etc/dhcpcd.conf

1
sudo vim /etc/dhcpcd.conf

里面内容不少,感兴趣可以查一下,这里直接拖到最下,根据自己的情况加入下面的内容

1
2
3
4
interface eth0
static ip_address=211.187.224.79/24
static routers=211.187.224.16
static domain_name_servers=114.114.114.114

其中ip_address后面接的是CIDR格式的ip地址,/24是指的netmask是255.255.255.0,地址根据自己的情况填一下即可。
重启就可以上网了。ping一下外网看一下是不是已经通了,IPv6是用ping6。

配置IPv4热点access point

这里使用的是NAT转发
先装依赖

1
sudo apt-get install dnsmasq hostapd

之所以使用dnsmasq是因为配置简单,而hostapd是必不可少的虚拟热点的程序,hostapd对ipv4和ipv6都支持。
配置的时候要给我们的wlan0一个固定的内网IP,再次编辑我们的dhcpcd.conf,在最后接上下面的内容

1
2
interface wlan0
static ip_address=10.0.0.1/24

继续配置dnsmasq,在/etc/dnsmasq.conf的最后加上下面一段(此文件内容很多,但都被注释掉了)

1
2
interface=wlan0
dhcp-range=10.0.0.2,10.0.0.5,255.255.255.0,12h

编辑/etc/hostapd/hostapd.conf文件(新文件),加上下面的内容

1
2
3
4
5
6
7
8
9
10
interface=wlan0
hw_mode=g
channel=10
auth_algs=1
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
rsn_pairwise=CCMP
wpa_passphrase=密码
ssid=名称

把密码和名称替换成自己想设置的就可以了。接着修改/etc/sysctl.conf文件,找到下面一行去掉#

1
net.ipv4.ip_forward=1

继续,更新下iptables的规则:

1
2
3
4
5
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

最后一句的目的是将我们执行的三句iptable设置保存下来,以后能直接使用,我们保存到了/etc/iptables.ipv4.nat位置。编辑/etc/network/interfaces,最后加上下面这句话,每次开机都会配置好iptables的内容了

1
up iptables-restore < /etc/iptables.ipv4.nat

既然打开这个文件了,可以把上面的几句wlan的interface注释一下,反正这些话也没用了,即变成这样:

1
2
3
4
5
6
7
allow-hotplug wlan0
iface wlan0 inet manual
# wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
#allow-hotplug wlan1
#iface wlan1 inet manual
# wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

为了能够每次开机自动运行hostapd,我们还要修改/etc/rc.local文件,在exit 0 前加上下面这句话

1
hostapd -B /etc/hostapd/hostapd.conf & > /dev/null 2>&1

重启,就可以看到热点了。至此IPv4部分完成。
参考资料:
  1. 树莓派3内置WIFI无线路由器AP热点: https://item.congci.com/-/content/shu-mei-pai-3-neizhi-wifi-wuxian-luyouqi-ap-redian
  2. 这个文章还提到了桥接方式进行连接的方法: http://wangye.org/blog/archives/845/

配置IPv6热点access point

前面的配置方法网上一搜一大把,这里其实就是记录一下,真正花了我两天时间的是配置IPv6的无线热点。。类似IPv4的配置方法,这里主流配置有两种,一种是使用桥接把无线的IPv6流量转到有线的IPv6上,这种方法配置简单,但我用上后只能坚持几十秒,整个树莓派就再也不能上网,只能重启(非常怀疑学校里在配置了交换机,不让使用桥接),另一种就是我最后成功的使用radvd+npd6+DHCPv6+hostapd的这种NDP连接。
这里也写一下第一种方法,毕竟曾让我高兴了几十秒,本着记录为目的的话还是要记一下。两种方法只能选一种,强烈建议使用第二种方法

IPv6 桥接

编辑配置文件/etc/sysctl.conf,把下面一行的注释去掉

1
net.ipv6.conf.all.forwarding=1

用ifconfig看一下自己的ipv6的地址,注意Scope:Global的那个地址是你的IPv6外网地址,Scope:Link的那个地址应该是你的上级地址。我们这里只关注Global那一项,安装radvd

1
2
3
4
5
6
7
8
9
10
11
12
sudo apt-get install radvd
vim /etc/radvd.conf
interface wlan0
{
AdvSendAdvert on;
prefix 2001:da8:7001:251::/64
{
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr on;
};
};

这里的2001:的地址就是我的Global那一项的地址
装bridge-utils和ebtables

1
sudo apt-get install bridge-utils ebtables

在home下写个脚本ipv6_bridge.sh,内容如下

1
2
3
4
5
6
7
8
9
#!/bin/sh
iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o ppp0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
service radvd start
brctl addbr br0
ifconfig br0 up #启动网桥
brctl addif br0 eth0
brctl addif br0 wlan0 #桥接两块网卡
ebtables -t broute -A BROUTING -p ! ipv6 -j DROP #只允许ipv6包通过网桥

给他加上执行权限,重启后sudo执行就可以了

1
2
3
chmod a+x ipv6_bridge.sh
sudo reboot
sudo ./ipv6_bridge.sh

这时候如果没有问题,那你就完成了IPv4 NAT转发,IPv6桥接的双栈无线热点。
参考资料:
  1. 树莓派扩展 IPv6无线路由配置(二) http://blog.csdn.net/lingjun_love_tech/article/details/41382625
  2. Linux 用作 IPv6 网关 https://bigeagle.me/2011/11/linux-as-ipv6-gateway/index.html
  3. 讨论这个的还是OpenWRT比较多,可以参考一下 http://www.openwrt.org.cn/bbs/thread-7116-1-1.html

IPv6 NDP IPv6

IPv6是没有NAT的,NAT对于我们是很熟悉,IPv6由于地址足够多,没有使用NAT技术,他用的是NDP( Neighbour Discovery Protocol 邻居发现协议), NDP有点类似NAT,在NDP协议中,内网的IPv6地址也是外网地址,可以向外发送请求,但不可再路由,这时就需要让具有外网地址的Router帮忙告诉它的上层Router,这些外网地址在这个Router的内网中。radvd就支持NDP,
先安装依赖

1
sudo apt-get install radvd wide-dhcpv6-server

如果wide-dhcpv6-server提示转发interface,就写wlan0
编译安装npd6

1
2
3
4
git clone https://github.com/npd6/npd6
cd npd6
make
sudo make install

首先我们先配置/etc/sysctl.conf,找到合适的地方加上下面两句

1
2
net.ipv6.conf.all.proxy_ndp=1
net.ipv6.conf.all.forwarding=1

用ifconfig看一下自己的ipv6的地址,注意Scope:Global的那个地址是你的IPv6外网地址,Scope:Link的那个地址应该是你的上级地址。
写一个脚本ndp_ipv6.sh 内容如下:

1
2
3
4
5
6
7
8
9
#!/bin/sh
ip -6 addr del 2001:da8:7001:251:fe54:7ee0:6994:5fb7/64 dev eth0
ip -6 addr add 2001:da8:7001:251:fe54:7ee0:6994:5fb7/126 dev eth0
ip -6 addr add 2001:da8:7001:251:1::/80 dev wlan0
ip -6 route add default via fe80::f7ce:a905:9347:7144 dev eth0 metric 256
ip -6 route add 2001:da8:7001:251:1::/80 dev wlan0
service radvd restart
service npd6 restart

先解释下这个脚本,2001:da8:7001:251:fe54:7ee0:6994:5fb7是我的Global的IPv6地址,这个原样根据自己的地址修改,后面的/64和/126不要动(64可能要改成你查到的perfix长度,126是不能动的,防止错乱),2001:da8:7001:251:1::/80是内网分配的地址前缀,前四段跟Global的地址一样,后面随便加个数就可以,这里直接写1,接下来那个fe80开头的地址换成你的Link的那个地址,加上执行权限,脚本先放在这里。
配置radvd
编辑/etc/radvd.conf(可能是新文件),写入下面的内容:

1
2
3
4
5
6
7
8
9
10
11
interface wlan0
{
AdvSendAdvert on;
AdvManagedFlag on;
AdvOtherConfigFlag on;
prefix 2001:da8:7001:251:1::/80 {
AdvRouterAddr off;
AdvOnLink on;
AdvAutonomous on;
};
};

注意上面的2001开头地址要换成你刚才设定好的内网地址。
配置npd6
npd6是邻居发现代理,编辑/etc/npd6.conf,写入下面的内容:

1
2
3
4
5
6
7
8
9
10
11
prefix=2001:da8:7001:251:1:
interface = eth0
ralogging = off
listtype = none
listlogging = off
collectTargets = 100
linkOption = false
ignoreLocal = true
routerNA = true
maxHops = 255
pollErrorLimit = 20

注意2001开头那个地址还是要填你自己的内网地址。
配置DHCPv6
编辑文件/etc/wide-dhcpv6/dhcp6s.conf,写入下面的内容,

1
2
3
4
5
6
interface wlan0{
address-pool pool1 86400;
};
pool pool1 {
range 2001:da8:7001:251:1::200 to 2001:da8:7001:251:1::300;
};

这是圈定了你的内网范围。好了,重启后sudo执行脚本ndp_ipv6.sh

1
2
chmod a+x ndp_ipv6.sh
sudo ./ndp_ipv6.sh

当然完全可以让他开机自启动,编辑/etc/rc.local,在exit 0前加上

1
/home/pi/ndp_ipv6.sh

参考资料:
  1. 从零开始,把Raspberry Pi打造成双栈11n无线路由器,支持教育网原生IPv6(原网址打不开了) https://hahaschool.net/tag/linux/
  2. Openwrt的一篇资料http://blog.martianz.cn/article/2013-05-27-openwrt-ipv6
  3. http://talk.withme.me/?p=51
至此ipv4+ipv6无线热点配置完成!经过一段时间测试,比较稳定,信号还是可以的,撒花~

Popular posts from 产品随想的博客

Steve Jobs: `There's Sanity Returning', 1998

Nobody can doubt the charisma of Steven P. Jobs. The interim CEO of Apple Computer Inc., who returned to the company last July after his ignominious 1985 ouster, has brought back his legendary vision, impatience, and infectious passion for the Macintosh. Jobs spoke to Business Week Correspondent Andy Reinhardt in Apple's stark, fourth-floor boardroom, just after the company rolled out its new software strategy on May 11. Note: This is an extended, online-only version of the Q&A that appears in the May 25, 1998, issue of Business Week. Q: Now that you've introduced the new, bold-looking iMac, are you going to do some radically different products? A: There's a lot of talk about such things -- about handhelds, set-top boxes. A lot of computer companies have been searching for a consumer product. My view is that the personal computer has been the most successful consumer product of the last 10 years. What we have to do, what the industry stopp...

Apple's One-Dollar-a-Year Man, By Steve Jobs, 2000

(FORTUNE Magazine) – Now that Steve Jobs has showed his hand on Apple's Internet and system software strategies and dropped the "interim" from his title, other questions loom. He's always denied it, but isn't it true that his old company, Next, did wind up taking over Apple? Will there ever be an encore to the 15-year-old Macintosh? Short of that, does Apple have any plans to jump into the "Internet appliance" fray? Will Apple ever build computers for business people again? And what, pray tell, does Steve think of all these young Internet zillionaires? Let's ask. Practically every technology that your old company, Next, possessed when Apple acquired it in 1997 is now being used by Apple in some strategic way. This must seem like sweet vindication.  The thing about Next was that we produced something that was truly brilliant for an audience that our heart really wasn't into selling to--namely, the enterprise. I suppose if you were wr...

Steve Jobs at 44, By Michael Krantz, 1999

Differences and Similarities Between Apple and Pixar Apple turns out many products--a dozen a year; if you count all the minor ones, probably a hundred. Pixar is striving to turn out one a year. But the converse of that is that Pixar's products will still be used fifty years from now, whereas I don't think you'll be using any product Apple brings to market this year fifty years from now. Pixar is making art for the ages. Kids will be watching Toy Story in the future. And Apple is much more of a constant race to continually improve things and stay ahead of the competition.  His Role At Pixar At Pixar my job is to help build the studio and recruit people and help create a situation where they can do the best work of their lives. And to some degree it's the same at Apple. But at Pixar, I don't direct the movies, whereas at Apple probably, if I had to pick a role out of a film production, I'd be the director. So it...

Rhino_GH从入门到精通听课笔记_二

一. 基础操作   1. Rhino F6精确更改相机视野   2. 中键和左菜单栏弹出时间都是可以自己设置缩短的 二. 软件技巧   1. GH搭配生成楼梯,柱子,栏杆   2. SU\3DS\OBJ 均可被Rhino识别   3. 已命名工作位置很有用,和和已命名是图标是不一样的   4. Rhino等轴测做法          显示——投影——改为平行          旋转改为0/360          视图——等角视图 三. 奇技淫巧   1. 善用微信搜索,比如“地形制作”,第三讲前半部分讲解利用高程点制作地形   2. Rhino转折剖制作方法,用面split模型,即模型被切成两个,类似于佐罗刀   3. 转折剖模型制作时间很久,工作量比较大 四. Rhino命令   1. worksession  链接文件进来,以一个图层显示,类似于SU里面的另存再载入的操作,可       以节省运算量,比ctrl+c ctrl+v快   2. ctrl+w  局部放大   3. hatch  嵌面

91%犀牛人都不知道的高效率建模方法

原文地址 91%犀牛人不知道的建模技巧 习惯了su的建模思路,用rhino做方方正正的建筑如何提高效率? (原问题链接https://www.zhihu.com/question/35303800#draft) 91%犀牛人都不知道的高效率建模方法(三) KD、Holt 首先呢,继续安利一下咱们的群 前两期我们说完了 rhino的选项设置,图层操作习惯,rhino的材质设置,rhino和cad的协同,rhino自身的协同,以及rhino的剖面绘制 ,基本上是把除建模以外的前期准备工作都过了一遍,那么这期我们将正式进入实打实的建模相关的部分,不过需要注明的是,有些地方rhino确实没有su快,我们能做的就是尽可能的提高大家的效率,相信我,su能带给你的只有快速推拉方盒子,而rhino可以让你无所不能~~可能中国人懒惯了,用惯了su的那么几个命令看到rhino成百上千的命令会不由得倒吸一口冷气然后默默的转身离开,其实你学习rhino为你省下的时间比你在su中浪费的时间要多得多得多。 —————————— 实体工具 —————————— 关于rhino建方盒子,先放结论, 核心命令都在实体工具栏, 核心思想就是组合,布尔 。 你别指望rhino像su一样啪画一笔面就自动分割了,也别指望随便选中物体的哪个面就可以挤出了,也别指望成个组件之后就可以直接墙体开洞了,rhino是rhino,既然你选择了它,就得按照它的规矩来,也得容忍他在这方面的不足,况且要是这方面都秒了su,那咱们使用su的理由就真的只有显示模式好看了。 言归正传,首先我们都知道建筑模型当中,尤其是规则建筑,重复构建是非常多的,比如梁,柱墙,门窗等等,在这方面,其实rhino是有优势的,毕竟有gh在,大批量的操作做起来就异常简单了,先来看命令吧,rhino在方盒子的建模上常用的命令基本就是下面这些了。 其实这些命令的介绍我们在rhino小教室里提过,这里我们就单独结合实例再来摆活一遍吧。先说 墙体 吧. 一般我们墙体建模也就三种情况, 一种是我们有画好的天正双线墙体。 这种情况是最好办的了,直接挤出就哦了。 难就难在这双线很多时候得我们自己去描一遍,因为很多时候我们的c...

ISSUU使用指南--木喵

作者: 木喵   出处: Wonderworks 问:issuu是什么? 答:Issuu是国外的一个在线文档共享网站,它是你的PDF文档发布专家。它类似于我们熟悉的youtube,但它共享的是文档、杂志之类的文本。 简而言之、同志们想看国外的各种杂志? 想找国外的汇报文本么? 想借鉴国外学生的作品集么? 那么你就要用到它啦~ 今天主要和大家讲两个方面 一、如何在pc端使用和下载issuu上的pdf文档 首先我们打开issuu的网址 https://issuu.com/ 我们可以很清楚的看到网页上呢都是国外的杂志以及一些作者自己制作的pdf文档 首先我们点击右上角的 sign up  然后填写相关信息注册一个账户: 注册完成之后我们就可以搜索我们想要找的资料: 比如说,我想找一些分析图的资料,我们就搜索: architecture diagram 然后我们就可以看到相关的文档了: 点击你所选择的文档, 好了问题来了: sorry,this publication is not available 这个时候!就需要在用pc端的我们做一件必不可少的事: 翻墙 然后我们就能将页面刷新粗来了 好、接下来是非常有建设性意义的一步 怎样把我们网页上的文件 下载下来 呢? 截图? no~no~no~ 接下来,让木喵告诉你怎么下载: 首先你需要复制上面的网址 然后将 https://wenfan.hk/issuu/index_link.php 在另一个网址中打开 将你之前复制的pdf的网址粘贴在下面的对话框中 点击 I‘m not a robot 再点击 get it 然后会出现一堆网址代码 我们 全选 打开你的迅雷点击 新建 将你之前的复制粘贴到下载链接里 然后呢~我们就全都下载成功啦~ 然后我们回到之前的网页向下看 我们可以看到有上传文档的作者(记得要关注哟) 然后还有 info   share   stack   ❤ 如果...

《爱因斯坦:我的世界观》

   我们这些总有一死的人,命运是多么的奇特! 我们每个人在这个世界上都只作一个短暂的逗留;目的何在,却无从知道,尽管有时自以为对此若有所感。 但是,不必深思,只要从日常生活中就可以明白:人是为别人而生存的──首先是为那样一些人,我们的幸福全部依赖于他们的喜悦和健康;其次是为许多我们所不认识的人,他们的命运通过同情的纽带同我们密切结合在一起。我每天上百次的提醒自己:我的精神生活和物质生活都是以别人(包括生者和死者)的劳动为基础的,我必须尽力以同样的分量来报偿我所领受了的和至今还在领受着的东西。我强烈地向往着俭朴的生活。并且时常发觉自己占用了同胞的过多劳动而难以忍受。我认为阶级的区分是不合理的,它最后所凭借的是以暴力为根据。我也相信,简单淳朴的生活,无论在身体上还是在精神上,对每个人都是有益的。    我完全不相信人类会有那种在哲学意义上的自由。每个人的行为不仅受着外界的强制,而且要适应内在的必然。 叔本华说:“ 人虽然能够做他所想做的,但不能要他所想要的。 ”这句格言从我青年时代起就给了我真正的启示;在我自己和别人的生活面临困难的时候,它总是使我们得到安慰,并且是宽容的持续不断的源泉。这种体会可以宽大为怀地减轻那种容易使人气馁的责任感,也可以防止我们过于严肃地对待自己和别人;它导致一种特别给幽默以应有地位的人生观。   要追究一个人自己或一切生物生存的意义或目的,从客观的角度来看,我总觉得是愚蠢可笑的。 可是每个人都有一些理想,这些理想决定着他的努力和判断的方向。就在这个意义上,我从来不把安逸和享乐看作生活目的本身──我把这种伦理基础叫做“猪栏的理想”。 照亮我的道路,是善、美和真。要是没有志同道合者之间的亲切感情,要不是全神贯注于客观世界──那个在艺术和科学工作领域里永远达不到的对象,那么在我看来,生活就会是空虚的。我总觉得,人们所努力追求的庸俗目标──财产、虚荣、奢侈的生活──都是可鄙的。   我有强烈的社会正义感和社会责任感,但我又明显地缺乏与别人和社会直接接触的要求,这两者总是形成古怪的对照。我实在是一个“孤独的旅客”,我未曾全心全意地属于我的国家、我的家庭、我的朋友,甚至我最为接近的亲人;在所有这些关系面前,我总是感觉到有一定距离而且需要保持孤独──而这种感受正与年俱增。人们会清楚地发觉,同别人的相互了解和协调一致是有限度的,但这不值得...

产品随想 | 陪读《乔布斯传》:1-17章

乔布斯经典照片集 坐在麗莎電腦旁。他說:「毕加索曾說:「好的藝術家懂得模仿,佛大的藝術家善於偷取。」因此,窃取偉大的點子沒有什麼好羞耻的。 與蓋茲在電話中達成協議:「比爾,謝謝你支持蘋果。因為你的支持,世界將變得更美好。」 1997年蘋果在波士頓舉行的麥金塔世界大會,蓋茲透過衛星連線在巨大的螢幕上出現。質伯斯說:「我真是笨死了,竟然讓蓋兹以這種方式現身。他讓我看起來好沙小。」 ──时刻自省 前言 The people who are crazy enough to think they can change the world are the ones who do. 只有那些瘋狂到以為自己可以改變世界的人, 才能改變這個世界。 這麼些年來,賈伯斯說起話來的認真與專注態度,著實打動不少人。我們一直保持連絡,即使在他被逐出蘋果之後,我們還有來往。每次他有新產品要推出時,像 NeXT 電腦或皮克斯 (Pixar)的電影,他就會來找我。他常帶我去曼哈頓下城一家壽司店用餐,講起他的產品,渾身散發出光和熱,眉飛色舞的說這是他登峰造極之作。我喜歡這個人。 ──对自己产品深深的爱 他的堅持教我疑惑。人人都知道賈伯斯不道餘力捍衛隱私, 而且我不知道他是否看過我寫的任何一本傳記。我還是不敢立刻答應,只說或許再等等。然而到了 2009年,我接到他太太蘿琳. 鮑威爾打來的電話。她直截了當說:「如果你還想為史帝夫寫傳,最好趕快動筆。」這是他第二次因病向公司請長假。我坦言他早在2004 年得知自己罹患胰臟癌的時候就曾主動邀我寫傳,但我當時對他罹癌的事一無所知。蘿琳解釋說,他們盡量保密,因此當時根本沒幾個人知道。他是在動手術的前夕打電話給我的。 ──和Make Something Wonderful对照起来看 他還說,自從他回到蘋果重新掌權,這十二年來是他創造新產品的高峰期,但他還有更重要的目標,也就是效法惠普的惠立和普克(David Packard),締造一家創新動力無限的公司,進而超越惠普。 ──苹果公司才是乔布斯最得意的产品 他說:「我一直認為,自己是個偏向人文的孩子,但我也喜歡電子的東西。後來,我讀到寶麗來(Polaroid)創辦人蘭德 (Edwin Land)曾說過,一個人能站在人文和科學的交會口,兼容贯通,才是真正的人才。在那當下,我决定要當這樣的人。」他似乎在暗示我,這可以做為傳...

黑客技术论坛推荐

原文来自知乎, 世界各大黑客技术论坛TOP排行榜 ,表示感谢 这份名单基本上囊括了目前世界上各大最佳黑客技术论坛。