树莓派改造路由器(使用默认Linux)

使用OpenWRT一段时间了,发现OpenWRT确实强大,但是LuCI其配置过于简单,且而且自己编译的有些小Bug,所以决定在Linux上安装软件包,将Raspbian改造成路由器系统!

准备工作

第一步 更换国内软件源

这个很简单,比如说使用清华源,将/etc/apt/sources.list改为:

deb https://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main contrib non-free rpi

再将/etc/apt/sources.list.d/raspi.list改为:

deb https://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main

然后更新软件列表:

sudo apt update

最好更新一下软件包,并重启:

sudo apt upgrade
sudo reboot

第二步 检查网络环境

我的硬件环境是:
树莓派3B+ x1,USB网卡 x1,(USB无线网卡x1),TP-LINK无线路由器 x1

在这里我们要实现的是传统的路由,而不是单臂路由(只有一个有线接口),所以我给树莓派加了一个有线网卡。那么树莓派现在就有两个有线接口加一个无线接口了。现在我们使用ifconfig命令看看接口:

现在应该列出了四个网络接口。eth0、eth1是有线接口,wlan0是无线接口,lo是local,本地接口。我这里已经通过wifi联网,所以有ip地址等信息。

那么下面就根据不同情景配置不同功能:

功能实现

基本的安全策略

既然是路由器,也就是内网与外网的防火墙,我们需要增强整个系统的安全性。

首先从路由器自身的角度来说,应该不允许任何来自外网的连接:

iptables -t filter -P INPUT DROP

对于保障内网设备不被路由,应该不允许任何来自外网的转发:

iptables -t filter -P FORWARD DROP 

NAT网关

NAT,网络地址转换,是为了解决IPv4地址不够用而生的一项技术,是家用路由器的基本功能。

IPv4 NAT

内网网段192.168.1.x的数据包进行NAT:

第一步,打开IPv4内核转发:

sysctl -w net.ipv4.ip_forward=1

第二步,开启IPv4 NAT:

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE

IPv6 NAT

内网地址为dddd::0/48的IPv6地址进行NAT:

第一步,开启IPv6内核转发:

sysctl -w net.ipv6.conf.all.forwarding=1

第二步,开启IPv6 NAT:

ip6tables -t nat -I POSTROUTING -s dddd::0/48 -j MASQUERADE

NAT端口映射

将公网网卡88端口映射到内网192.168.1.2:80上

数据包入站时使用DNAT:

iptables -t nat -I PREROUTING --dport 88 -j DNAT --to-destination 192.168.1.2:80

数据包出站时无需配置。如果再次配置SNAT将会使数据包不具有公网标识性(服务器日志记录的全是来自路由器的请求)。而且注意此时路由器(树莓派)不能通过访问localhost:88来访问被映射的主机。具体原因可看iptables原理。

开放路由器端口

iptables -I INPUT -p tcp --dport 80 -j ACCEPT

UPnP配置

安装软件包miniupnpd,即可提供upnp端口映射服务:

apt install miniupnpd

PPPoE拨号配置

锐捷认证配置

DHCP服务搭建

IPv6的DHCP中继

DNS缓存服务搭建

高级安全策略

允许ICMP

限制ICMP连接数

防止SYN泛洪

编写脚本

编写防火墙脚本

编写网络初始化脚本

编写维护管理脚本

FAQ

1、为什么ifconfig只有三个设备:eth0 wlan0 lo?

先检查是否插入USB网卡,如果已经插入,看看是不是USB线松了,还有USB网卡是不是坏了,是不是不兼容。可能需要换一个网卡。

2、是否有其他国内源?

当然有,除了清华还有中科大源等等。如果清华源速度不理想可以更换其他源。

发表评论