树莓派搭建软路由

科长
2023-12-19 / 0 评论 / 39 阅读 / 正在检测是否收录...
本文使用的是树莓派来进行的部署,拥有docker的主机均可食用本教程

开启网卡混用

ip link set eth0 promisc on

创建网络

docker network create -d macvlan --subnet=192.168.123.0/24 --gateway=192.168.123.1 -o parent=eth0 macnet

这一条命令需要根据树莓派所处的网络环境来做修改,可以使用 sudo ifconfig命令来查看树莓派 eth0 网卡获得的 IP 地址,如果树莓派获得的 IP 地址为 192.168.2.154,那么说明树莓派处在 192.168.2.x网段,相应的,命令中的192.168.123.0和192.168.123.1需要被替换成 192.168.2.0和192.168.2.1:

docker network create -d macvlan --subnet=192.168.2.0/24 --gateway=192.168.2.1 -o parent=eth0 macnet

拉取镜像

docker pull registry.cn-shanghai.aliyuncs.com/suling/openwrt:latest
or
docker pull sulinggg/openwrt:latest
or 
docker pull docker.m.daocloud.io/nonnichen/nonniwrt:latest

创建并启动

docker run --restart always --name openwrt -d --network macnet --privileged registry.cn-shanghai.aliyuncs.com/suling/openwrt:latest /sbin/init

其中:
--restart always参数表示容器退出时始终重启,使服务尽量保持始终可用;

--name openwrt参数定义了容器的名称;

-d参数定义使容器运行在 Daemon 模式;

--network macnet参数定义将容器加入 maxnet网络;

--privileged 参数定义容器运行在特权模式下;

registry.cn-shanghai.aliyuncs.com/suling/openwrt:latest为 Docker 镜像名,因容器托管在阿里云 Docker 镜像仓库内,所以在镜像名中含有阿里云仓库信息;

/sbin/init定义容器启动后执行的命令。

进入容器并修改相关参数

docker exec -it openwrt bash

其中:

openwrt为容器名称;

bash为进入容器后执行的命令。

执行此命令后我们便进入 OpenWrt 的命令行界面,首先,我们需要编辑 OpenWrt 的网络配置文件:

vim /etc/config/network

我们需要更改 Lan 口设置

config interface 'lan'
        option type 'bridge'
        option ifname 'eth0'
        option proto 'static'
        option ipaddr '192.168.123.100'
        option netmask '255.255.255.0'
        option ip6assign '60'
        option gateway '192.168.123.1'
        option broadcast '192.168.123.255'
        option dns '192.168.123.1'

其中:
所有的 192.168.123.x 需要根据树莓派所处网段修改,option gateway和option dns填写路由器的 IP,若树莓派获得的 IP 为 192.168.2.154,路由器 IP 为192.168.2.1,则需要这样修改:

config interface 'lan'
        option type 'bridge'
        option ifname 'eth0'
        option proto 'static'
        option ipaddr '192.168.2.100'
        option netmask '255.255.255.0'
        option ip6assign '60'
        option gateway '192.168.2.1'
        option broadcast '192.168.2.255'
        option dns '192.168.2.1'

重启网络

/etc/init.d/network restart

进入控制面板

在浏览器中输入第 5 步option ipaddr 项目中的 IP 进入 Luci 控制面板,若option ipaddr 的参数为 192.168.123.100,则可以在浏览器输入 http://192.168.123.100进入控制面板。

用户名:root

密码:password

关闭 DHCP 服务

在 “网络 - 接口 - Lan - 修改” 界面中,勾选下方的 “忽略此接口(不在此接口提供 DHCP 服务)”,并“保存&应用”。image.png

其他修复

1.关闭 WLAN 硬件加速

设置旁路路由后,若出现访问国内网站网速慢,不稳定的情况(多见于 Pandavan 及其改版固件,如华硕老毛子固件),请在路由器的控制面板中关闭有关 WLAN 的硬件加速,比如选择“Offload TCP/UDP for LAN”(若未出现此现象请忽略):
image.png

2.宿主机网络修复

OpenWrt 容器运行后,宿主机内可能无法正常连接外部网络,需要修改宿主机的/etc/network/interfaces文件以修复:
(须结合实际网络情况,不能照抄配置)

cp /etc/network/interfaces /etc/network/interfaces.bak # 备份文件
vim /etc/network/interfaces # 使用 vim 编辑文件

以“树莓派爱好者基地”64 位 Debian 为例,向文件末尾添加:

auto eth0
iface eth0 inet manual

auto macvlan
iface macvlan inet static
  address 192.168.123.200
  netmask 255.255.255.0
  gateway 192.168.123.1
  dns-nameservers 192.168.123.1
  pre-up ip link add macvlan link eth0 type macvlan mode bridge
  post-down ip link del macvlan link eth0 type macvlan mode bridge

其中,所有的 192.168.123.x都需要按照树莓派所处网段更改,gateway和dns-nameservers填写路由器的 IP,若树莓派获得的 IP 为 192.168.2.154,路由器 IP 为192.168.2.1,则需要这样修改:

auto eth0
iface eth0 inet manual

auto macvlan
iface macvlan inet static
  address 192.168.2.200
  netmask 255.255.255.0
  gateway 192.168.2.1
  dns-nameservers 192.168.2.1
  pre-up ip link add macvlan link eth0 type macvlan mode bridge
  post-down ip link del macvlan link eth0 type macvlan mode bridge

修改后重启树莓派,之后树莓派的局域网 IP 地址将会固定为/etc/network/interfaces文件中address参数中的地址。

0

评论 (0)

取消