搭建環境:
-
1.在虛擬機中搭建好ubuntu 20.04系統也可以其它版本的linux,確保可以ping通外網。
-
2.安裝docker(生成docker鏡像必備)終端中輸入:curl -fsSL https://get.docker.com | sudo bash 和 apt-get install pigz(運行后面build.sh所需的工具)
-
3.搭建openwrt所需的編譯環境:
打開終端輸入:
sudo apt-get update # 更新軟件
sudo apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3.5 unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler g++-multilib antlr3 gperf -
4.克隆openwrt源碼這里使用的是大雕Lean的openwrt源碼(這一步需要需要一些時間)
openwrt源碼地址:Lean-github
在終端輸入git clone https://github.com/coolsnowwolf/lede.git /home/admi/openwrt && cd /home/admi/openwrt # 這句表示克隆lede.git包到路徑為/home/admi/下的openwrt目錄中並進入到/home/admi/openwrt目錄中。
注意:不要無腦復制因為你的這個/home/admi/openwrt路徑跟我的路徑並不一樣,請根據自己的路徑來適當修改,其次克隆時確保該路徑下沒有同名的openwrt文件夾。
-
5.更新及安裝openwrt所有的包
https://www.cnblogs.com/mhq-martin/p/11523260.html
在openwrt根目錄中輸入./scripts/feeds update -a # 更新openwrt包
在openwrt根目錄中輸入./scripts/feeds install -a # 安裝openwrt包說明:這里./ # 表示當前目錄; ./scripts/feeds update -a # 表示在當前目錄下執行scripts/feeds bash腳本程序 update -a是參數含義是更新所有feeds.conf.options文件中的源。
准備編譯階段
-
在openwrt根目錄下輸入make menuconfig # 打開openwrt菜單
這里給N1-小鋼炮中的docker用所以架構按下面選擇:
Target System ---> 選 QEMU ARM Virtual
Subtarget ---> 選 QEMU ARMv8 Virtual Machine (cortex-a53)
Target Profile ---> 選 (Default)
Target Images ---> 選 [*] tar.gz 格式用於docker接下來選插件:
LuCI ---> 3. Applications(應用) ---> 按Y選中編譯進固件里面,按N取消選中,按M生成IPK安裝包,選擇完后左右鍵選到save保存config配置文件,一路退出到終端。
后面給出LUCI 應用列表的各自對應的名字
LuCI ---> 4.Themes (主題包)
注意:如果選中編譯進固件后續在openwrt軟件包欄中想刪除插件那么內存並不會減少,有可能會增加因為要在內存中標記所刪除的插件包。
這里給出openwrt官網的詳細編譯說明openwrt編譯解釋
下載dl包
在openwrt根目錄下 輸入 make -j8 download V=s # 以8線程下載dl包
開始編譯
在openwrt根目錄下輸入:
make -j8 V=s # 用8線程編譯並輸出所有調試信息V表(Verbose)。
有報錯就用make -j1 V=s # 以單線程編譯如果同樣有報錯則根據輸出信息來百度搜索來解決。
如果需要重新配置:
rm -rf ./tmp && rm -rf .config # 刪除臨時文件和配置文件之后按 准備編譯階段節內容操作。
編譯成功
編譯成功后會在/home/admi/openwrt/bin/targets/架構名文件夾(這里是armvirt)/64/下的openwrt-armvirt-64-default-rootfs.tar.gz 此壓縮包就是編譯出來的docker鏡像包。
將tar.gz轉為docker鏡像
-
使用的是恩山flippy(大佬)制作的一鍵腳本便於生成docker鏡像點這下載make_opwrt_docker_img.tar.gz
下載腳本后解壓到指定文件夾,將前面編譯出來的openwrt-armvirt-64-default-rootfs.tar.gz復制到放到腳本的同一文件夾內。
-
(此步可跳過但要知道創建默認的路徑)右鍵選中build.sh用文本編輯器打開或vim修改生成docker鏡像的build.sh腳本:
TAG=latest # 版本號,默認是latest 根據喜好修改
OUTDIR=/home/admi/docker_image # 本地docker鏡像保存的目錄可根據喜好修改路徑,目錄需提前創建 默認為/opt/imgs/docker。
IMG_NAME=mymake/openwrt-aarch64 # 鏡像名,可根據喜好修改,默認unifreq/openwrt-aarch64。 -
生成docker鏡像
進入腳本根目錄 輸入:sudo bash build.sh tag # tag可空如空則為默認值latest,也可修改為其它如openwrt版本號R22.01
命令執行結束后會在前面指定的目錄中/home/admi/docker_image生成一個.gz后綴的壓縮包
- 拷貝.gz壓縮包至N1盒子
用winscp登錄到N1盒子中將此壓縮包拷貝至指定文件夾並進入此文件夾輸入:
docker load --input 鏡像文件名.gz
登錄docker后台會查看到一個如下圖的鏡像:
-
打開網卡混合模式並創建一個docker網絡
1.ssh 遠程到N1 輸入下面命令:
ip link set eth0 promisc on # 打開網卡的混合模式
docker network create -d macvlan --subnet=192.168.2.0/24 --gateway=192.168.2.1 -o parent=eth0 macnet # 網段根據自己主路由網段修改、macnet是網絡名稱可根據喜好修改。
運行結束后會發現后台network欄中出現名為macnet的網絡2.創建openwrt容器:
輸入:docker run --name openwrt --restart always -d --network macnet --privileged unifreq/openwrt-aarch64:R22 /sbin/init # openwrt 是名字可根據喜好修改、unifreq/openwrt-aarch64:R22 是所導入的鏡像名一定要也要一致。
3.修改openwr的網絡地址(默認是192.168.1.1):
輸入:docker exec -it openwrt sh # 進入交互終端 再輸入 vi /etc/config/network 按i開始編輯,編輯完成后按ESC退出編輯模式,然后輸入:wq(別忘記冒號)回車保存,使得openwrt與主路由在同一網段。
exit # 退出交互終端。
docker restart openwrt # 重啟openwrt容器重啟結束之后就可在瀏覽器中輸入修改后的IP地址即可。
登錄openwrt 賬號 root 密碼 password
LUCI 應用列表解釋
LuCI ---> Applications ---> luci-app-accesscontrol #訪問時間控制
LuCI ---> Applications ---> luci-app-adblock #ADB廣告過濾
LuCI ---> Applications ---> luci-app-adbyby-plus #廣告屏蔽大師Plus +
LuCI ---> Applications ---> luci-app-adbyby #廣告過濾大師(已棄)
LuCI ---> Applications ---> luci-app-adkill #廣告過濾(已棄)
LuCI ---> Applications ---> luci-app-advanced-reboot #Linksys高級重啟
LuCI ---> Applications ---> luci-app-ahcp #支持AHCPd
LuCI ---> Applications ---> luci-app-aliddns #阿里DDNS客戶端(已棄,集成至ddns)
LuCI ---> Applications ---> luci-app-amule #aMule下載工具
LuCI ---> Applications ---> luci-app-aria2 # Aria2下載工具
LuCI ---> Applications ---> luci-app-arpbind #IP/MAC綁定
LuCI ---> Applications ---> luci-app-asterisk #支持Asterisk電話服務器
LuCI ---> Applications ---> luci-app-attendedsysupgrade #固件更新升級相關
LuCI ---> Applications ---> luci-app-autoreboot #支持計划重啟
LuCI ---> Applications ---> luci-app-baidupcs-web #百度網盤管理 *
LuCI ---> Applications ---> luci-app-bcp38 #BCP38網絡入口過濾(不確定)
LuCI ---> Applications ---> luci-app-bird4 #Bird 4(未知)
LuCI ---> Applications ---> luci-app-bird6 #Bird 6(未知)
LuCI ---> Applications ---> luci-app-bmx6 #BMX6路由協議
LuCI ---> Applications ---> luci-app-bmx7 #BMX7路由協議
LuCI ---> Applications ---> luci-app-caldav #聯系人
LuCI ---> Applications ---> luci-app-cjdns #加密IPV6網絡相關
LuCI ---> Applications ---> luci-app-clamav #ClamAV殺毒軟件
LuCI ---> Applications ---> luci-app-commands #Shell命令模塊
LuCI ---> Applications ---> luci-app-cshark #CloudShark捕獲工具
LuCI ---> Applications ---> luci-app-ddns #動態域名 DNS(集成阿里DDNS客戶端)
LuCI ---> Applications ---> luci-app-diag-core #core診斷工具
LuCI ---> Applications ---> luci-app-dnscrypt-proxy #DNSCrypt解決DNS污染
LuCI ---> Applications ---> luci-app-dnsforwarder #DNSForwarder防DNS污染
LuCI ---> Applications ---> luci-app-dnspod #DNSPod
LuCI ---> Applications ---> luci-app-docker #Docker容器 *
LuCI ---> Applications ---> luci-app-dump1090 #民航無線頻率(不確定)
LuCI ---> Applications ---> luci-app-dynapoint #DynaPoint(未知)
LuCI ---> Applications ---> luci-app-e2guardian #Web內容過濾器
LuCI ---> Applications ---> luci-app-familycloud #家庭雲盤
LuCI ---> Applications ---> luci-app-filetransfer #文件傳輸(可web安裝ipk包)
LuCI ---> Applications ---> luci-app-firewall #添加防火牆
LuCI ---> Applications ---> luci-app-flowoffload #Turbo ACC網絡加速(已棄,移至下面SFE)
LuCI ---> Applications ---> luci-app-freifunk-diagnostics #freifunk組件 診斷(未知)
LuCI ---> Applications ---> luci-app-freifunk-policyrouting #freifunk組件 策略路由(未知)
LuCI ---> Applications ---> luci-app-freifunk-widgets #freifunk組件 索引(未知)
LuCI ---> Applications ---> luci-app-frpc #內網穿透 Frp
LuCI ---> Applications ---> luci-app-fwknopd #Firewall Knock Operator服務器
LuCI ---> Applications ---> luci-app-guest-wifi #WiFi訪客網絡
LuCI ---> Applications ---> luci-app-gfwlist #GFW域名列表(已棄)
LuCI ---> Applications ---> luci-app-haproxy-tcp #HAProxy負載均衡-TCP
LuCI ---> Applications ---> luci-app-hd-idle #硬盤休眠
LuCI ---> Applications ---> luci-app-hnet #Homenet Status家庭網絡控制協議
LuCI ---> Applications ---> luci-app-kodexplorer #KOD可道雲私人網盤
LuCI ---> Applications ---> luci-app-kooldns #virtual**服務器 ddns替代方案(已棄)
LuCI ---> Applications ---> luci-app-koolproxy #KP去廣告(已棄)
LuCI ---> Applications ---> luci-app-lxc #LXC容器管理
LuCI ---> Applications ---> luci-app-meshwizard #網絡設置向導
LuCI ---> Applications ---> luci-app-minidlna #完全兼容DLNA / UPnP-AV客戶端的服務器軟件
LuCI ---> Applications ---> luci-app-mjpg-streamer #兼容Linux-UVC的攝像頭程序
LuCI ---> Applications ---> luci-app-mmc-over-gpio #添加SD卡操作界面(已棄)
LuCI ---> Applications ---> luci-app-multiwan #多撥虛擬網卡(已棄)
LuCI ---> Applications ---> luci-app-mwan #MWAN負載均衡
LuCI ---> Applications ---> luci-app-mwan3 #MWAN3分流助手
LuCI ---> Applications ---> luci-app-n2n_v2 #N2N內網穿透 N2N v2 virtual**服務
LuCI ---> Applications ---> luci-app-nft-qos #QOS流控 Nftables版(已棄)
LuCI ---> Applications ---> luci-app-ngrokc #Ngrok 內網穿透(已棄)
LuCI ---> Applications ---> luci-app-nlbwmon #網絡帶寬監視器
LuCI ---> Applications ---> luci-app-noddos #NodDOS Clients 阻止DDoS攻擊
LuCI ---> Applications ---> luci-app-ntpc #NTP時間同步服務器
LuCI ---> Applications ---> luci-app-ocserv #OpenConnect virtual**服務
LuCI ---> Applications ---> luci-app-olsr #OLSR配置和狀態模塊
LuCI ---> Applications ---> luci-app-olsr-services #OLSR服務器
LuCI ---> Applications ---> luci-app-olsr-viz #OLSR可視化
LuCI ---> Applications ---> luci-app-ocserv #OpenConnect virtual**服務(已棄)
LuCI ---> Applications ---> luci-app-openvirtual** #Openvirtual**客戶端
LuCI ---> Applications ---> luci-app-openvirtual**-server #易於使用的Openvirtual**服務器 Web-UI
LuCI ---> Applications ---> luci-app-oscam #OSCAM服務器(已棄)
LuCI ---> Applications ---> luci-app-p910nd #打印服務器模塊
LuCI ---> Applications ---> luci-app-pagekitee #Pagekite內網穿透客戶端
LuCI ---> Applications ---> luci-app-polipo #Polipo代理(是一個小型且快速的網頁緩存代理)
LuCI ---> Applications ---> luci-app-pppoe-relay #PPPoE NAT穿透 點對點協議(PPP)
LuCI ---> Applications ---> luci-app-p p t p-server #virtual**服務器 p p t p
LuCI ---> Applications ---> luci-app-privoxy #Privoxy網絡代理(帶過濾無緩存)
LuCI ---> Applications ---> luci-app-qbittorrent #BT下載工具(qBittorrent)
LuCI ---> Applications ---> luci-app-qos #流量服務質量(QoS)流控
LuCI ---> Applications ---> luci-app-radicale #CalDAV/CardDAV同步工具
LuCI ---> Applications ---> luci-app-ramfree #釋放內存
LuCI ---> Applications ---> luci-app-rp-pppoe-server #Roaring Penguin PPPoE Server 服務器
LuCI ---> Applications ---> luci-app-samba #網絡共享(Samba)
LuCI ---> Applications ---> luci-app-samba4 #網絡共享(Samba4)
LuCI ---> Applications ---> luci-app-sfe #Turbo ACC網絡加速(集成FLOW,BBR,NAT,DNS... *
LuCI ---> Applications ---> luci-app-s-s #SS兲朝上網(已棄)
LuCI ---> Applications ---> luci-app-s-s-libes #SS-libev服務端
LuCI ---> Applications ---> luci-app-shairplay #支持AirPlay功能
LuCI ---> Applications ---> luci-app-siitwizard #SIIT配置向導 SIIT-Wizzard
LuCI ---> Applications ---> luci-app-simple-adblock #簡單的廣告攔截
LuCI ---> Applications ---> luci-app-simple-softethervirtual** #SoftEther virtual**服務器 NAT穿透(已棄)
LuCI ---> Applications ---> luci-app-splash #Client-Splash是無線MESH網絡的一個熱點認證系統
LuCI ---> Applications ---> luci-app-sqm #流量智能隊列管理(QOS)
LuCI ---> Applications ---> luci-app-squid #Squid代理服務器
-------------------------------------------------------------------------------------------
LuCI ---> Applications ---> luci-app-S-S R-plus #S-S R兲朝上網Plus+
LuCI ---> Applications ---> luci-app-S-S R-plus ---> Include s-s New Versiong #新SS代理
LuCI ---> Applications ---> luci-app-S-S R-plus ---> Include 微2瑞
LuCI ---> Applications ---> luci-app-S-S R-plus ---> Include Kcptun #Kcptun代理
LuCI ---> Applications ---> luci-app-S-S R-plus ---> Include s-sR Server #S-S R服務器
LuCI ---> Applications ---> luci-app-S-S R-plus ---> Include s-sR Socks and Tunnel #S-S R代理
-------------------------------------------------------------------------------------------
LuCI ---> Applications ---> luci-app-S-S R-pro #S-S R-Pro
LuCI ---> Applications ---> luci-app-S-S Rserver-python #s-sR Python服務器
LuCI ---> Applications ---> luci-app-statistics #流量監控工具
LuCI ---> Applications ---> luci-app-syncdial #多撥虛擬網卡(原macvlan)
LuCI ---> Applications ---> luci-app-tinyproxy #Tinyproxy是 HTTP(S)代理服務器
LuCI ---> Applications ---> luci-app-transmission #BT下載工具
LuCI ---> Applications ---> luci-app-travelmate #旅行路由器
LuCI ---> Applications ---> luci-app-ttyd #網頁終端命令行
LuCI ---> Applications ---> luci-app-udpxy #udpxy做組播服務器
LuCI ---> Applications ---> luci-app-uhttpd #uHTTPd Web服務器
LuCI ---> Applications ---> luci-app-unblockmusic #解鎖網易雲灰色歌曲
LuCI ---> Applications ---> luci-app-unbound #Unbound DNS解析器
LuCI ---> Applications ---> luci-app-upnp #通用即插即用UPnP(端口自動轉發)
LuCI ---> Applications ---> luci-app-usb-printer #USB 打印服務器
LuCI ---> Applications ---> luci-app-微2瑞-server #微2瑞 服務器
LuCI ---> Applications ---> luci-app-微2瑞-pro #微2瑞透明代理(已棄,集成S-S R)
LuCI ---> Applications ---> luci-app-vlmcsd #KMS服務器設置
LuCI ---> Applications ---> luci-app-vnstat #vnStat網絡監控(圖表)
LuCI ---> Applications ---> luci-app-virtual**bypass #virtual** BypassWebUI 繞過virtual**設置
LuCI ---> Applications ---> luci-app-vsftpd #FTP服務器
LuCI ---> Applications ---> luci-app-watchcat #斷網檢測功能與定時重啟
LuCI ---> Applications ---> luci-app-webadmin #Web管理頁面設置
LuCI ---> Applications ---> luci-app-webshell #網頁命令行終端(已棄)
LuCI ---> Applications ---> luci-app-wifischedule #WiFi 計划
LuCI ---> Applications ---> luci-app-wireguard #virtual**服務器 WireGuard狀態
LuCI ---> Applications ---> luci-app-wireless-regdb #WiFi無線
LuCI ---> Applications ---> luci-app-wol #WOL網絡喚醒
LuCI ---> Applications ---> luci-app-wrtbwmon #實時流量監測
LuCI ---> Applications ---> luci-app-xlnetacc #迅雷快鳥
LuCI ---> Applications ---> luci-app-zerotier #ZeroTier內網穿透