香橙派R2S手搓双宽带聚合指南
引言
本次手搓路由器,是为了实现通信网基础课程设计。
题目如下:
将Linux系统配置成NAT网关,具备NAT、DHCP、DNS功能,利用地址池实现内网访问外网的通信、实现外网对内网特定主机的访问以及域名解析的功能。搭建实验测试网络。
本次实验设备为:
Orange Pi R2s 一台
使用官方Ubuntu 24.0 镜像
桥接两个LAN口
由于香橙派有两个2.5G网口,我想让他们都作为LAN口使用,此处建立网桥:
# 创建网桥并设置 IP
sudo nmcli con add type bridge ifname br0 con-name br0 ip4 192.168.17.1/24
# 取消 STP (生成树),避免接入时有几十秒延迟
sudo nmcli con modify br0 bridge.stp no
配置DHCP服务器
使用如下命令安装必要的环境
sudo apt update && sudo apt upgrade
sudo apt install isc-dhcp-server dnsmasq iptables
再将dhcp服务器绑定至LAN口
sudo vi /etc/default/isc-dhcp-server
在此配置中加入
INTERFACESv4="br0"
再编辑dhcpd.conf,加入
subnet 192.168.17.0 netmask 255.255.255.0{
range 192.168.17.100 192.168.17.117;
option routers 192.168.17.1;
option domain-name-servers 192.168.17.1;
}
重启dhcpd
$ sudo systemctl start isc-dhcp-server
$ sudo systemctl enable isc-dhcp-server
此时已经完成了配置,重新插拔网线发现主机得到了dhcp地址
配置DNS服务
编辑配置文件 /etc/dnsmasq.conf。为了避免混乱,建议先备份原文件,新建一个空的配置文件写入以下内容:
# 备份
sudo cp /etc/dnsmasq.conf /etc/dnsmasq.conf.bak
# 编辑
sudo vim /etc/dnsmasq.conf
填入以下内容
interface = enP2p1s0
listen-address=127.0.0.1,192.168.17.1
# 上游 DNS:
server=223.5.5.5
# 加载本地 hosts 文件
domain-needed
bogus-priv
expand-hosts
题目要求“实现内网特定主机的访问以及域名解析”,这里设定 setmyrouter.com 指向网关主机192.168.17.1
修改网关本机 (VM1) 的 /etc/hosts 文件,在末尾添加:
192.168.17.1 setmyrouter.com
由于Ubuntu默认开启了systemd-resolved服务,占用了53端口,我们需要关闭它以让dnsmasq接管dns服务:
# 停止服务
sudo systemctl stop systemd-resolved
# 禁用服务(防止重启后自动运行)
sudo systemctl disable systemd-resolved
sudo systemctl restart dnsmasq
sudo systemctl enable dnsmasq
配置NAT
香橙派的镜像默认不启用IPv4转发,编辑 /etc/sysctl.conf,找到 net.ipv4.ip_forward=1 取消注释,然后执行 sudo sysctl -p,使用cat /proc/sys/net/ipv4/ip_forward返回1,开启成功。
设置NAT
# 1. 允许内网通过 end0 (互联网) 访问外网
sudo iptables -t nat -A POSTROUTING -s 192.168.17.0/24 -o end0 -j MASQUERADE
# 2. 允许内网通过 end1 (校园网) 访问外网
sudo iptables -t nat -A POSTROUTING -s 192.168.17.0/24 -o end1 -j MASQUERADE
设置两条宽带负载均衡:
sudo ip route del default
sudo ip route add default \ nexthop via 192.168.31.1 dev end0 weight 1 \ nexthop via 202.60.0.1 dev end1 weight 1
此时,主机已经可以上网
配置反向代理
为了实现外网访问内网指定主机,我们需要设置DNAT
sudo iptables -t nat -A PREROUTING -i end0 -p tcp --dport 8080 -j DNAT --to-destination 192.168.17.100:8080
sudo iptables -A FORWARD -d 192.168.17.100 -p tcp --dport 8080 -j ACCEPT
此时,所有的8080端口流量都将流向100主机
浙公网安备 33010602011771号