<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>OpenWRT on Canghai's Blog</title><link>https://blog-old.pages.dev/tags/openwrt/</link><description>Recent content in OpenWRT on Canghai's Blog</description><generator>Hugo</generator><language>zh</language><lastBuildDate>Sat, 02 Sep 2023 00:00:00 +0000</lastBuildDate><atom:link href="https://blog-old.pages.dev/tags/openwrt/index.xml" rel="self" type="application/rss+xml"/><item><title>Docker部署OpenWRT旁路由快速入门</title><link>https://blog-old.pages.dev/posts/learn/230902-docker-install-openwrt/</link><pubDate>Sat, 02 Sep 2023 00:00:00 +0000</pubDate><guid>https://blog-old.pages.dev/posts/learn/230902-docker-install-openwrt/</guid><description>&lt;p>旁路由是在不改变网络架构的情况下最方便的升级网络环境的方式，OpenWRT社区生态丰富，基本可以满足你的绝大部分上网需求。&lt;/p>
&lt;h4 id="自制openwrt固件">自制OpenWRT固件&lt;/h4>
&lt;ul>
&lt;li>&lt;strong>OpenWRT&lt;/strong>作为一个成熟的路由系统，基本适配市面上绝大部分设备，不同人编译的固件搭载了不同的插件。这里推荐使用&lt;strong>Github Action&lt;/strong>进行固件的自编译，选择需要的插件，编译一个适合自己的固件，具体过程这里就不过多介绍了。&lt;/li>
&lt;li>你也可以试试开源项目&lt;a href="https://openwrt.ai" target="_blank" rel="noopener" style="color:#42b983";>OpenWRT.ai&lt;/a>，进行固件的自编译，这里给出OpenWRT.ai默认加载的插件，可以选择性精简。&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-c" data-lang="c">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">-&lt;/span>luci&lt;span style="color:#f92672">-&lt;/span>app&lt;span style="color:#f92672">-&lt;/span>gpsysupgrade &lt;span style="color:#f92672">-&lt;/span>luci&lt;span style="color:#f92672">-&lt;/span>app&lt;span style="color:#f92672">-&lt;/span>quickstart &lt;span style="color:#f92672">-&lt;/span>luci&lt;span style="color:#f92672">-&lt;/span>app&lt;span style="color:#f92672">-&lt;/span>firewall &lt;span style="color:#f92672">-&lt;/span>luci&lt;span style="color:#f92672">-&lt;/span>app&lt;span style="color:#f92672">-&lt;/span>advanced &lt;span style="color:#f92672">-&lt;/span>luci&lt;span style="color:#f92672">-&lt;/span>app&lt;span style="color:#f92672">-&lt;/span>autoreboot &lt;span style="color:#f92672">-&lt;/span>luci&lt;span style="color:#f92672">-&lt;/span>app&lt;span style="color:#f92672">-&lt;/span>cpufreq &lt;span style="color:#f92672">-&lt;/span>luci&lt;span style="color:#f92672">-&lt;/span>app&lt;span style="color:#f92672">-&lt;/span>upnp &lt;span style="color:#f92672">-&lt;/span>luci&lt;span style="color:#f92672">-&lt;/span>app&lt;span style="color:#f92672">-&lt;/span>fan &lt;span style="color:#f92672">-&lt;/span>luci&lt;span style="color:#f92672">-&lt;/span>app&lt;span style="color:#f92672">-&lt;/span>wizard
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="上传镜像至dockerhub">上传镜像至DockerHub&lt;/h4>
&lt;ul>
&lt;li>&lt;strong>wget&lt;/strong>命令将编译好的镜像下载至服务器中，并使用&lt;strong>mv&lt;/strong>命令改名&lt;/li>
&lt;li>解压文件&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-c" data-lang="c">&lt;span style="display:flex;">&lt;span>gzip &lt;span style="color:#f92672">-&lt;/span>d openwrt.img.gz
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>挂载镜像&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-c" data-lang="c">&lt;span style="display:flex;">&lt;span>modprobe nbd
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-c" data-lang="c">&lt;span style="display:flex;">&lt;span>qemu&lt;span style="color:#f92672">-&lt;/span>nbd &lt;span style="color:#f92672">-&lt;/span>c &lt;span style="color:#f92672">/&lt;/span>dev&lt;span style="color:#f92672">/&lt;/span>nbd0 &lt;span style="color:#f92672">-&lt;/span>f raw openwrt.img
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>打包镜像&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-c" data-lang="c">&lt;span style="display:flex;">&lt;span>mkdir &lt;span style="color:#f92672">/&lt;/span>opt&lt;span style="color:#f92672">/&lt;/span>openwrt
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-c" data-lang="c">&lt;span style="display:flex;">&lt;span>mount &lt;span style="color:#f92672">/&lt;/span>dev&lt;span style="color:#f92672">/&lt;/span>nbd0p2 &lt;span style="color:#f92672">/&lt;/span>opt&lt;span style="color:#f92672">/&lt;/span>openwrt
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-c" data-lang="c">&lt;span style="display:flex;">&lt;span>cd &lt;span style="color:#f92672">/&lt;/span>opt&lt;span style="color:#f92672">/&lt;/span>openwrt
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-c" data-lang="c">&lt;span style="display:flex;">&lt;span>tar &lt;span style="color:#f92672">-&lt;/span>czvf &lt;span style="color:#f92672">/&lt;/span>opt&lt;span style="color:#f92672">/&lt;/span>openwrt&lt;span style="color:#f92672">/&lt;/span>openwrt.rootfs.tar.gz &lt;span style="color:#f92672">*&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>导入镜像，&lt;code>tag&lt;/code>部分注意修改&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-c" data-lang="c">&lt;span style="display:flex;">&lt;span>docker import openwrt.rootfs.tar.gz user&lt;span style="color:#f92672">/&lt;/span>app:latest
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>通过&lt;code>docker login&lt;/code>登录DockerHub&lt;/li>
&lt;li>推送镜像&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-c" data-lang="c">&lt;span style="display:flex;">&lt;span>docker push user&lt;span style="color:#f92672">/&lt;/span>app:latest
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="部署openwrt">部署OpenWRT&lt;/h4>
&lt;ul>
&lt;li>开启网卡混杂模式&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-c" data-lang="c">&lt;span style="display:flex;">&lt;span>ip link set eth0 promisc on
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>(Optional)也可以通过在&lt;code>/etc/rc.local&lt;/code>中写入命令，永久开启网卡混杂模式&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-c" data-lang="c">&lt;span style="display:flex;">&lt;span>ip link set eth0 promisc on
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>创建Docker网络，具体信息请根据实际情况修改，容器内需&lt;strong>IPV6&lt;/strong>支持，需要增加相关信息&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-c" data-lang="c">&lt;span style="display:flex;">&lt;span>docker network create &lt;span style="color:#f92672">-&lt;/span>d macvlan &lt;span style="color:#f92672">--&lt;/span>subnet&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">192.168.10.0&lt;/span>&lt;span style="color:#f92672">/&lt;/span>&lt;span style="color:#ae81ff">24&lt;/span> &lt;span style="color:#f92672">--&lt;/span>gateway&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">192.168.10.1&lt;/span> &lt;span style="color:#f92672">-&lt;/span>o parent&lt;span style="color:#f92672">=&lt;/span>eth0 openwrt
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-c" data-lang="c">&lt;span style="display:flex;">&lt;span>docker network create &lt;span style="color:#f92672">-&lt;/span>d macvlan &lt;span style="color:#f92672">--&lt;/span>subnet&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">192.168.10.0&lt;/span>&lt;span style="color:#f92672">/&lt;/span>&lt;span style="color:#ae81ff">24&lt;/span> &lt;span style="color:#f92672">--&lt;/span>gateway&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">192.168.10.1&lt;/span> &lt;span style="color:#f92672">--&lt;/span>subnet&lt;span style="color:#f92672">=&lt;/span>fe80&lt;span style="color:#f92672">::/&lt;/span>&lt;span style="color:#ae81ff">16&lt;/span> &lt;span style="color:#f92672">--&lt;/span>gateway&lt;span style="color:#f92672">=&lt;/span>fe80&lt;span style="color:#f92672">::&lt;/span>&lt;span style="color:#ae81ff">1&lt;/span> &lt;span style="color:#f92672">-&lt;/span>o parent&lt;span style="color:#f92672">=&lt;/span>eth0 openwrt
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>拉取镜像&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-c" data-lang="c">&lt;span style="display:flex;">&lt;span>docker run &lt;span style="color:#f92672">-&lt;/span>d \
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">--&lt;/span>restart always \
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">--&lt;/span>name openwrt \
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">--&lt;/span>network openwrt \
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">--&lt;/span>privileged&lt;span style="color:#f92672">=&lt;/span>true \
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> user&lt;span style="color:#f92672">/&lt;/span>app:latest \
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">/&lt;/span>sbin&lt;span style="color:#f92672">/&lt;/span>init
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>(Optional)如需&lt;strong>IPV6&lt;/strong>支持需要在&lt;code>sysctl.conf&lt;/code>中添加如下字段：&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-c" data-lang="c">&lt;span style="display:flex;">&lt;span>docker exec &lt;span style="color:#f92672">-&lt;/span>it openwrt bash
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-c" data-lang="c">&lt;span style="display:flex;">&lt;span>vi &lt;span style="color:#f92672">/&lt;/span>etc&lt;span style="color:#f92672">/&lt;/span>sysctl.conf
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-c" data-lang="c">&lt;span style="display:flex;">&lt;span>net.ipv6.conf.all.disable_ipv6&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>net.ipv6.conf.&lt;span style="color:#66d9ef">default&lt;/span>.disable_ipv6&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>net.ipv6.conf.&lt;span style="color:#66d9ef">default&lt;/span>.accept_ra&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>net.ipv6.conf.all.accept_ra&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">2&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>(Optional)如编译时选择的OpenWRT地址不在局域网网段内需自行修改&lt;code>ipaddr&lt;/code>&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-c" data-lang="c">&lt;span style="display:flex;">&lt;span>docker exec &lt;span style="color:#f92672">-&lt;/span>it openwrt bash
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-c" data-lang="c">&lt;span style="display:flex;">&lt;span>vi &lt;span style="color:#f92672">/&lt;/span>etc&lt;span style="color:#f92672">/&lt;/span>config&lt;span style="color:#f92672">/&lt;/span>network
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>重启后通过填写的局域网地址即可打开OpenWRT后台界面&lt;/li>
&lt;/ul></description></item></channel></rss>