1. 我的网络环境
由于各高校网络环境不同,下面给出我的网络环境,大家可以参考。本方法在UESTC沙河校园网环境下运行稳定。
宿舍里每人有一个RJ-45接口(固定在墙上),这个接口连接到路由器的wan口,路由器发出lan口和wlan给终端设备使用上网。路由器只可被分到一个不可再分的IPv6地址(即为/128)。
我希望让每个连接到路由器的设备都分到一个IPv6地址,从而可以通过IPv6访问某些被ban的网站。这本不应是一件难事。一般的家庭向ISP申请IPv6地址时,通常会被直接分到一个IPv6地址块(通常是/64)。现在的家用路由器基本都支持IPv6,获得IPv6地址块后,路由器将自动配置DHCPv6,给终端设备分配IPv6地址。
但是在我的网络环境,路由器分到的IPv6地址已经不可再分了,因此无法使用DHCP。由于只有一个IPv6地址,所以路由器自身访问IPv6是没有问题的,但是如何使Lan口的设备访问IPv6呢?NAT技术的出现就是为解决这个问题。若要使每个终端都能通过IPv6上网,就需要配置IPv6 NAT。
终端获得IPv6地址后,仍不能直接访问Google等网站。还需要修改本机hosts或自建DNS。电脑上直接修改hosts就可以了,但安卓手机需要root后才能修改hosts(不建议root)。有人已经做好了IPv6 hosts,直接取用即可,见https://github.com/lennylxx/ipv6-hosts
2. 实验环境
- 刷了LEDE的小米路由器mini
- 一台连接到路由器Lan的电脑(Windows 10)
- XShell 5
- scp(如果你用的是Win10,那么系统是自带这条命令的,不需要安装)
3. 方法
一般来说只要你的路由器是LEDE系统的(这里以小米路由器mini为例),那么按照以下操作就能够使用IPv6 NAT了。
1) 将此项目下载到电脑
https://github.com/zlrs/IPv6-NAT-LEDE
2) 把项目中的nat6和ipv6.nat.sh文件复制到路由器上
以Windows 10为例,打开命令行,先cd到下载目录,然后输入这条命令,按提示输入root用户的密码(注意不是WiFi密码,也不是路由器管理密码,而是路由器操作系统中root用户的密码)
scp nat6 ipv6.nat.sh root@192.168.1.1:/tmp
(以保存到 /tmp 为例)
3) 在路由器上依次执行以下命令
cd /tmp
cp nat6 /etc/init.d/nat6
chmod +x ipv6.nat.sh
chmod +x /etc/init.d/nat6
/tmp/ipv6.nat.sh
/etc/init.d/nat6 enable
解释一下,这段命令的作用是将nat6加入开机启动列表,然后执行ipv6.nat.sh和nat6这两个脚本。其中ipv6.nat.sh是为nat6做准备工作的,所以要先执行ipv6.nat.sh,再执行nat6。
把nat6放在/etc/init.d目录的作用是,让nat6脚本在每次重启后自动运行。如果不这么做,每次重启后路由器就没有nat6功能了,除非你手动执行这个脚本。
测试
- 以Windows为例,查看网卡状态,看IPv6连接一行是否显示连接到Internet. Debian-Like的系统可以使用
ifconfig
或ip addr
-
有许多测试IPv6的网站,选择一个测试即可,这里给出两个:
ipv6-test.com
test-ipv6.com