安装openwrt

install openwrt
Install openwrt

openwrt以其类似linux的系统格式,可更新的系统,给路由器带来了更多的可定制化玩法。但同时,也要求我们对路由的原理有更多的理解,对我们学习和使用网络也更有帮助。

openwrt为cisco开源后的一个代码分支。拥有丰富的功能包和插件。几乎你能想像到的功能都可以在这里找到支持。比如同时播号移动和电信网络。甚至同时使用手机流量。丰富的流量控制策略。

0 路由器

不推荐是普通的TP-Link,迅捷,腾达等大众路由器。

推荐使用华硕路由器,网件路由器,Linksys路由器 。

选择要点是内存,存储越大越好。因为内存越大越有利于openwrt的运行。存储越大可以安装更多的软件。

1 刷固件

最新稳定版本为:21.02.0

下载地址:

https://firmware-selector.openwrt.org/

分为stable版, snapshot版(此版本无网页版的管理界面luci)。

请选择带有sysupgrade的tar压缩包或img镜像文件。此文件为完整安装包。登录路由器原始后台管理界面。上传固件。刷机。注意选择你的路由器的型号:netgear R6220.

刷机结束后,用电脑网线连接路由器。路由器会默认设置成IP:192.168.1.1。使用浏览器访问此地址打开管理后台。

也可以下载如下项目,把路由器和电脑接入到同一个网络中,进行刷 机:

https://github.com/jclehner/nmrpflash

注意:要使用netgear的LAN口,不要使用WAN口。这种方法可以刷后缀为factory的版本。

2 登录

由于openwrt为linux系统。所以管理路由器即是管理linux系统。使用ssh登录路由器。

ssh root@192.168.1.1

设置密码

passwd

换源

opkg为openwrt的包管理工具。以下命令最为常用:

  • opkg update
  • opkg install package-name
  • opkg remove package-name
  • opkg search package-name

官方源下载速度奇慢。所以改用其它源。 但在这之前,必须安装https支持。

opkg install libustream-mbedtls

有清华大学的源和中国科技大学的源。登录ssh,修改/etc/opkg/distfeeds.conf使其指向清华大学源

https://mirrors.ustc.edu.cn/openwrt/

opkg update

安装必要的准备软件:

opkg install wget ca-certificates

opkg install iptables-mod-nat-extra ipset iptables-mod-tproxy

3 管理界面

开发版需要手动安装后台界面:

opkg install luci

uci命令为管理后台的命令行形式。

/etc/config/下的配置文件对应管理后台里的设置。/etc/config和/etc/下的配置同时起作用。

访问:http://192.168.1.1/ 打开管理界面。

4 开启WIFI

登录管理后台: http://openwrt/或者 http://192.168.1.1/在Network》Wireless下。分别有radio0和radio1,分别代表2.5G和5G。分别在他们下面编辑或设置相应的无线网络。并设置密码。密码采用WPA2PSK格式。

设置国家代码:设置国家代码为AU。

5 adblock

安装去广告插件:

opkg install adblock

opkg install luci-app-adblock

在管理界面打开reg_cn列表源。

更新广告列表。全局去广告。

https://openwrt.org/docs/guide-user/services/ad-blocking?s[]=adblock

6 unbound

 unbound是本地的域名解释软件。dnsmasq只能起到DNS解析转发作用。而unbound可以实现完整的DNS功能。

opkg install unbound

opkg install luci-app-unbound

opkg install ca-bundle

ca-bundle可以实现DNS over TLS功能。即DNS的解析加密传输。而普通的DNS解析,都是明文传输的。

openwrt中dhcp,dnsmasq,unbound三者的关系。

dhcp起到局域网的IP分配,DNS分配的功能。在最前端。dnsmasq可以实现hosts文件的功能,并可实现广告拦截。unbound可以实现安全的DNS解析功能。dnscrypt-proxy可以让我们不使用公共的DNS。这四者的关系如下:

dhcp》dnsmasq》unbound》dnscrypt-proxy

为了使用去广告的功能。需要使用完整版的dnsmasq。运行以下命令:

opkg remove dnsmasq && opkg install dnsmasq-full

firewall

ipset是一个IP列表,可以 iptables配合使用。

使指向这些IP的路由全部都转发到11100端口。一些特殊的路由功能。可以用ipset实现。如在dnsmasq里做如下配置:

/etc/dnsmasq.d/custom_ipset.conf

server=/abc.com/127.0.0.1#5353
ipset=/abc.com/aiplist

以下这样设置即可实现以上解析的DNS的IP全部都转发到11100的链路上去。

ipset -N aiplist iphash
iptables -t nat -A PREROUTING -p tcp -m set --match-set
aiplist dst -j REDIRECT --to-port 11100
iptables -t nat -A OUTPUT -p tcp -m set --match-set aiplist dst -j REDIRECT --to-port 11100

dnsmasq工作在53端口,监听DNS请求。unbound工作在5353端口。dnscrypt-proxy工作在10053端口。

在这里查找相应的安装包:

https://openwrt.org/packages/index/network—web-servers-proxies

ss-local工作在11080端口, ss-redir工作在11100端口。 ss-tunel工作在5300端口,在本例中使用unbound代替。

firewall,iptable,route三者的关系

route 管理的是多个网卡。如果把路由器看做是多网卡计算机,那么每个网口,如4个千兆LAN口加2个wifi口 (2.4G和5G) 和一个WAN口(外网接口)即代表有7个网卡每个网卡都有可能联接着一个网络或设备。而路由表则即代表着各个网卡之间的路由规则。

firewall是使用iptable实现的。而iptable不仅仅能实现防火墙的功能,还能实现如端口转发,映射等功能。

三种模式

交换机:把更多的设备连接到现有的网络中。把WIFI连接的设备连接到现有网络中。都可以工作在交换机模式下。把NAS接入到现有网络,也可以工作在交换机模式下。

路由器:LAN口连接局域网,WAN口连接外网(通常是猫)。猫即起到网关的作用。

网关:有些路由器自己具备有光纤的功能,或者WAN口外接的光猫。或者有时也指播号上网用的协议。

lede和openwrt的关系。

lede和openwrt合并后,现在指的是同一个开源项目。

其它的开源项目有:freedombox,DD-wrt,Tomato。和大名鼎鼎的梅林。

梅林

openwrt的安装和刷机是一个烧脑的技术活,得明白很多软件硬件知识和路由原理。想轻松些?用梅林。

梅林是openwrt的一个深度定制版,集成了很多插件。主要针对华硕路由器。

当然也可以刷到其它设备上。

openWRT安装NAS

如果你的netgear有U盘接口,那么即可为路由器安装USB移动硬盘,为openWRT安装NAS。

opkg update # 非常重要。如果报包找不到,就先执行下这个命令。

opkg install kmod-usb-storage #安装usb存储驱动

opkg install usbutils #安装lsusb查看usb情况。使用命令: lsusb -t

opkg install kmod-usb-storage-uas

ls -al /dev/sd* # 展示是否发现了移动硬盘

opkg install kmod-fs-ext4 e2fsprogs # ext4支持

# 自动挂载移动硬盘

opkg install block-mount

block info # show the fs infomation to check if disk is mounted.

请参考这篇文章的自动挂载部分:

https://openwrt.org/docs/guide-user/storage/usb-drives

https://openwrt.org/docs/guide-user/storage/usb-drives-quickstart

ls -l /mnt/sda1 # 查看硬盘挂载是否成功。

然后参考下面三往篇文章:

https://openwrt.org/docs/guide-user/services/nas/nfs.server

opkg install nfs-kernel-server

vim /etc/exports

exportfs -r

netstat -l

在Debian端需要安装nfs-common:

apt install nfs-common

https://www.server-world.info/en/note?os=Debian_10&p=nfs&f=2

rpcinfo -p 192.168.1.1

nc -zv router 111

showmount -e 192.168.1.1 # 查看NFS是否工作正常。

mount router:/mnt/sda1 /mnt/share -o nolock,async,rsize=32768,wsize=32768,intr,noatime -v # -v可以显示调试信息

安装SMB

opkg install luci-app-ksmbd

tweaks:

ERRORS:

exportfs: /etc/exports [1]: Neither ‘subtree_check’ or ‘no_subtree_check’ specified for export “*:/mnt”.
Assuming default behaviour (‘no_subtree_check’).

exportfs: /mnt does not support NFS export

mount.nfs: portmap query retrying: RPC: Program not registered

  • rpcbind vs portmap

portmap 是18.06版本的,rpcbind是19.07版本的。

  • nfs v3 vs nfs v4

NFSv4 export paths don’t work the way they did in NFSv3. NFSv4 has a global root directory (configured as fsid=0) and all exported directories are children to it. So what would have been nfs-server:/export/users on NFSv3 is nfs-server:/users on NFSv4, because /export is the root directory.

  • samba vs remotefs

samba为微软的标准,remotefs也为一种实现。

常用命令

  • tcpdump
  • ipset
  • nslookup
  • netstat -tulp
  • logread
  • ping6

路由器

美国网件(NETGEAR) R7000

华硕(ASUS)RT-AC68U

领势 LINKSYS MR8300-AC2200M

参考:

NAT:网络地址转换。由于IPV4地址个数的有限性,而使用的技术。IPV6则没有这个问题。

Double NAT:光猫做了一次地址转换,路由器又做了一次地址转换。普通上网时不会出现问题,但如果想使内网向外提供服务。或点对点传输则会有问题。IPV6没有这个问题。解决方式有:ISP modem采用桥接的方式;ISPmodem只工作在光猫状态;路由器不使用NAT,而使用route规则;路由器工作在交换机状态。

ISP:网络服务提供商。中国电信,中国移动,中国联通,长城宽带等。

NAS:网络存储。

Access Point(AP):只使用路由器的WIFI功能和交换机功能,接入到现有网络。

Wifi Reapter:也叫做 wireless range extender。只使用WIFI功能扩大现有WIFI信号范围。

桥接:连接两个不同的网络,使他们在逻辑上成为一个网络。

VLAN

子网

  • https://openwrt.org/docs/guide-quick-start/start
  • https://www.asuswrt-merlin.net/download
  • https://openwrt.org/docs/guide-user/services/nas/nfs.server