openwrt/LEDE 教程

朋友最近入手了一台 J1900 CPU 的低功耗电脑主机作为路由器,我也跟着中毒了,决定买一台当玩具尝试一把软路由。我后来选择的是 3215U 这款CPU,性能与 J1900 差不多,只是支持虚拟化,理论上可以通过安装 ESXI 来支持多个系统的运行。

陆陆续续折腾了几天,是时候总结一下各种坑和经验了。

安装系统

软路由常用的系统是openwrt。曾经有一个团队从 openwrt 分离出来成立了 LEDE 项目,但后来 LEDE 项目又合并回 openwrt 了。所以LEDE和 openwrt 都是指相同的系统了。

最简单的安装方式就是使用 winPE 的U盘启动3215U主机,然后通过 physdiskwrite 把 openwrt 的镜像文件刷到3215U主机的硬盘。

WinPE 推荐微PE工具箱的版本。phpsdiskwrite 从官网下载。openwrt 有官方原版与koolshare加工后的国内版本,为了省事就从koolshare 下载国内版本。国内版本又分为combineduefi-gpt 两种,前者支持MBR的分区表和BIOS系统,后者支持GPT 分区表和EFI系统。我用了 uefi-gpt 。openwrt 解压之后,得到一个openwrt*uefi-gpt-squashfs.img文件。

WinPE 启动电脑之后, phpsdiskwrite -u openwrt*uefi-gpt-squashfs.img 就刷完了。

访问路由器的方式

3215U主机配了4个千兆网卡,机箱写着 Lan1、Lan2、Lan3和Lan4。

3215U主机的默认IP为192.168.1.1。用电脑通过网线接到3215U主机的某个Lan(推荐Lan2~4),浏览器访问 192.168.1.1,正常情况下,输入用户名和密码就能登陆了。原始用户名root密码koolshare

web访问,在我这里有个坑:chrome正常模式登录不了,隐私模式可以登录。换用火狐则一切顺利。

此外,有些时候。还是需要 ssh 到3215U主机,推荐使用 xshell 或者 putty。原始用户名root密码koolshare

初步设置与拨号上网

Web登录之后的系统首页显示了3215U主机的概况,目前没啥看头,也当不了路由器,默认情况下,网络接口显示了 Lan,Wan 和 Wan 6。其中,Lan 为路由器下方接口用于连接局域网的设备,Wan 为路由器的上方接口用于连接外部,Wan 6 为 ipv6 的Wan。

到菜单系统=>进阶设置=>模式切换里面,切换到正常模式,就能快速地使3215U主机设置为一台路由器。此时,Wan6 消失了,就剩 Lan 和 Wan 了。

Wan 中,选择 PPPOE,填入拨号的用户名和密码,正常情况下,就能联网了。3215U主机的4个网口,默认Lan1 是Wan,Lan2至Lan4才是Lan,所以,这时候要把电脑连接到3215U主机的 Lan2~Lan4的其中一个接口才能连接到3215U主机了。

把剩余的硬盘用起来

通过 xshell ,ssh 到3215U主机 。df -h可列出当前使用的分区情况,可以看到,openwrt 默认使用的硬盘空间很小,不到2G。我买的是16G的SSD,剩下的14G处于未分区的状态。fdisk -l同样能列出磁盘的分区信息。

我的硬盘被命名为/dev/sda

运行’fdisk /dev/sda’ 就能对 /dev/sda硬盘进行处理了,主要是把这14G未分配的空间分成一个区。fdisk 的操作比较简单,不清楚时就输入 m 来获取帮助即可。印象中,n就是新建分区。

我这边新分出的分区是/dev/sda5 mkfs.ext4 /dev/sda5将其格式化为ext4格式,然后运行如下命令编辑 fstab 文件:

nano /etc/config/fstab

在文末新增这一段:

config 'mount'
        option  target  '/mnt/data1'
        option  device '/dev/sda5'
        option  enabled '1'

也可以使用 blkid/dev/sda5的UUID找出来,然后以UUID代替/dev/sda5,即:

config 'mount'
        option  target  '/mnt/data1'
        option  uuid    'cc1ce16c-8b6f-42aa-b602-e10776c20686'
        option  enabled '1'

运行 mount -a 就能把这个分区挂到系统了。

设置 swapfile 文件作为虚拟内存

后来折腾的过程中,发现有时候2G内存不够用,所以我新建了一个 swapfile 文件作为虚拟内存(交换分区)。

 dd if=/dev/zero of=/mnt/data1/swapfile bs=1k count=2048k
 chmod 600 /mnt/data1/swapfile
 mkswap /mnt/data1/swapfile
 swapon /mnt/data1/swapfile

然后nano /etc/config/fstab编辑 fstab文件,在末尾增加:

# a swap file
config 'swap'
        option  device  '/mnt/data1/swapfile'

free -h应该能看到虚拟内存(swapfile)的使用情况了。

设置软件源

默认的软件源是mirrors.ustc.edu.cn的,在我这里很难连接上,所以替换到openwrt.proxy.ustclug.org

系统=>软件包=>配置里面,把发行版软件源修改为:

src/gz openwrt_koolshare_mod_core http://openwrt.proxy.ustclug.org/snapshots/targets/x86/64/packages
src/gz openwrt_koolshare_mod_base http://openwrt.proxy.ustclug.org/snapshots/packages/x86_64/base
src/gz openwrt_koolshare_mod_luci http://openwrt.proxy.ustclug.org/snapshots/packages/x86_64/luci
src/gz openwrt_koolshare_mod_packages http://openwrt.proxy.ustclug.org/snapshots/packages/x86_64/packages
src/gz openwrt_koolshare_mod_routing http://openwrt.proxy.ustclug.org/snapshots/packages/x86_64/routing
src/gz openwrt_koolshare_mod_telephony http://openwrt.proxy.ustclug.org/snapshots/packages/x86_64/telephony

安装酷软

这一步,才是软路由值得折腾的地方。通过这里,可以把软路由DIY成近似于一台低配的电脑。

下面就简单说说几个坑

aira2

aira2 是一个下载工具。可用于下载 http/https/ftp/bt/磁力链接等。

测试时,我发现BT和磁力死活下载不了,折腾了很久。后来发现,不是 aira2 下载不了BT/磁力,而是我选择的种子太冷门,根本没有源。白白浪费我的时间啊。

据说 aria2 的BT下载速度与 tracker 有关系,建议多添加 tracker 。http://www.tkser.tk/ 有推荐aria2-BT服务器地址。建议把trackers_all_http 以及trackers_best 的内容都增加进去。

v2ray

这是一个网络加速工具。

如果电脑A直接连接电脑C的网速很慢,而如果电脑A直接连接电脑B很快,且电脑B直接连接电脑C也很快,那么,通过通过A<=>B<=>C的方式,实现电脑A与电脑C之间的加速。两点之间,直线最短,但不一定最快。

v2ray 的坑主要是,填写的配置文件只需要outbound的部分,外加一对大括号{},不能有其他的内容了,否则就出错了。即,只能填写:

{

    "outbound": {
        必须的内容
    }

}

酷软里面,科学上网工具也有类似的加速的功能。

卸载软件

曾经有一段时间,发现有些软件点击卸载之后,仍然处于已安装的状态。后来才知道,需要先把启动的勾去掉,也就是先禁止软件运行,否则就无法卸载。

网络共享

折腾路由器,除了让路由器能够下载之外,还希望路由器能把自己的硬盘共享出来。

网络共享是通过samba这个协议/程序实现的。比较坑的地方是,openwrt 默认只有root用户,而samba默认不支持 root,所以需要先ssh 到3215U主机,adduer aaa来新建一个名为aaa的用户。

另一个坑就是,刚才adduser新建aaa用户时设定的密码还不是samba的密码。需要smbpasswd -a aaa来设定用户aaa的密码,即,网络共享时需要输入 smbpasswd设置的密码。

在网页界面中,服务=>网络共享中设置共享的文件夹就行。我把/mnt/data1/download共享了。有时候会发现访问这个共享文件夹时,没有写入或者删除的权限,运行如下命令即可:

chown -R aaa:root /mnt/data1/download/

计划任务/crontab

Linux 系统经常使用 crontab -e来设定各种计划任务,这种计划任务依赖于一个叫 cron 或者 crond 的守护程序。openwrt 比较坑的地方时,默认没有启用 cron 。所以需要运行如下命令:

/etc/init.d/cron restart
/etc/init.d/cron enable
/etc/init.d/cron reload

网页端,系统=>计划任务中,写入:

*/5 * * * * chown -R aaa:root /mnt/data1/download/

这句话的意思时,每5分钟,就把 download 文件夹里面的所有文件划归到用户aaa,这样,网络共享中,aaa就有权限修改、删除了。

想要的功能都实现了,忽然感觉空虚了。