openwrt的docker镜像助自由上网

你是否听说过openwrt实现自由上网后又方便又灵活?但是为此通常需要准备专门的软路由需要改造家里的网络,非常麻烦。今天给大家提供一种只需要一台服务器就可以实现的方法。该方案基于docker镜像,因此也不会对已有的服务器环境造成破坏,部署灵活,使用方便。下面给了个最终实现的例子

安装docker

使用官方脚本安装 Docker

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

安装完成后执行 docker 命令是需要加 sudo 权限的,这样操作会比较麻烦, 我们可以做如下操作

sudo groupadd docker ## 如果没有 docker 组的话,添加一个 docker 组
sudo gpasswd -a ${USER} docker ## 把当前登陆的用户添加到 docker 组
sudo service docker restart ## 重启 docker 服务
newgrp - docker ## 切换到新的回话

设置网络

docker的实力默认网络端口不对外暴露。为了让我们的docker完全对外暴露,就好像vmware虚拟的桥接模式那样,需要进行一些设置。

1. 把网卡混杂模式打开

运行如下命令找到服务器对外连接网络的网卡名

ip addr show
 
打开对于网卡得到混杂模式,需要注意,哪个网卡连接了网络就设置哪个,名字不一定是enp2s0
sudo ip link set enp2s0 promisc on

 2. 创建 docker 网卡

参考如下命令创建一个docker网络,下面的ip等参数供参考,请勿无脑抄

docker network create -d macvlan --subnet=192.168.1.50/24 --gateway=192.168.1.1 -o parent=enp2s0 openwrt-net

macvlan 模式会为每个容器创建一个独立的 ip 每个容器可以通过独立的 ip 进行访问

下载 openwrt 镜像并启动容器

Github地址 这里包含了很全的镜像文件包含了 arm  x86  x64 的 docker 镜像文件。我是x86_64的系统,所以就选择了x86_64,但对于其它系统的,各位自行选择

docker run --restart always --name openwrt -d --network openwrt-net --privileged sulinggg/openwrt:x86_64 /sbin/init

启动后输入docker ps可以查看状态。

设置容器 ip

运行如下命令接入docker

docker exec -it openwrt bash

下面开始设置容器的 ip 以便我们能通过 ip 地址访问容器, 通过命令:vim /etc/config/netwrok 来设置 ip。 按住 i 键开始输入。

其中 option ipaddr 是你的 openwrt 的地址,注意不要与局域网其它设备冲突 . option gateway 与 option dns 设置你路由器的地址

设置完成依次按:Esc -> : -> wq -> 回车保存。

下方为参考配置,各位请勿无脑抄,应结合实际ip输入。

config interface 'lan'
        option type 'bridge'
        option ifname 'eth0'
        option proto 'static'
        option netmask '255.255.255.0'
        option ip6assign '60'
        option ipaddr '192.168.1.50'
        option gateway '192.168.1.1'
        option dns '192.168.1.1'

 保存完成后通过命令 /etc/init.d/network restart 重启网络, 重启完成后便可以通过浏览器访问了 http://192.168.1.50 默认密码是 password

桥接网络关闭 打开网络 -> 接口 -> LAN -> 物理设置 -> 桥接接口 取消勾选

路由器配置

关于具体如何配置自由上网,这里就不多说了,相信各位简答点点鼠标就知道了

客户端配置

客户端只需要将网关修改为openwrt的ip即可。

posted @ 2022-12-28 15:34  zornlink  阅读(2541)  评论(0编辑  收藏  举报