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
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 设置你路由器的地址
下方为参考配置,各位请勿无脑抄,应结合实际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即可。