<?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-test-1bi.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-test-1bi.pages.dev/tags/openwrt/index.xml" rel="self" type="application/rss+xml"/><item><title>Docker部署OpenWRT旁路由快速入门</title><link>https://blog-test-1bi.pages.dev/posts/learn/230902-docker-install-openwrt/</link><pubDate>Sat, 02 Sep 2023 00:00:00 +0000</pubDate><guid>https://blog-test-1bi.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">OpenWRT.ai&lt;/a>，进行固件的自编译，这里给出OpenWRT.ai默认加载的插件，可以选择性精简。&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-c" data-lang="c">&lt;span class="line">&lt;span class="cl">&lt;span class="o">-&lt;/span>&lt;span class="n">luci&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">app&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">gpsysupgrade&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="n">luci&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">app&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">quickstart&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="n">luci&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">app&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">firewall&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="n">luci&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">app&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">advanced&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="n">luci&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">app&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">autoreboot&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="n">luci&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">app&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">cpufreq&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="n">luci&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">app&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">upnp&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="n">luci&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">app&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">fan&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="n">luci&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">app&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">wizard&lt;/span>
&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" class="chroma">&lt;code class="language-c" data-lang="c">&lt;span class="line">&lt;span class="cl">&lt;span class="n">gzip&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="n">d&lt;/span> &lt;span class="n">openwrt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">img&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">gz&lt;/span>
&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" class="chroma">&lt;code class="language-c" data-lang="c">&lt;span class="line">&lt;span class="cl">&lt;span class="n">modprobe&lt;/span> &lt;span class="n">nbd&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-c" data-lang="c">&lt;span class="line">&lt;span class="cl">&lt;span class="n">qemu&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">nbd&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="n">c&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">dev&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">nbd0&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="n">f&lt;/span> &lt;span class="n">raw&lt;/span> &lt;span class="n">openwrt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">img&lt;/span>
&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" class="chroma">&lt;code class="language-c" data-lang="c">&lt;span class="line">&lt;span class="cl">&lt;span class="n">mkdir&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">opt&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">openwrt&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-c" data-lang="c">&lt;span class="line">&lt;span class="cl">&lt;span class="n">mount&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">dev&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">nbd0p2&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">opt&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">openwrt&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-c" data-lang="c">&lt;span class="line">&lt;span class="cl">&lt;span class="n">cd&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">opt&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">openwrt&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-c" data-lang="c">&lt;span class="line">&lt;span class="cl">&lt;span class="n">tar&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="n">czvf&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">opt&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">openwrt&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">openwrt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">rootfs&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">tar&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">gz&lt;/span> &lt;span class="o">*&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" class="chroma">&lt;code class="language-c" data-lang="c">&lt;span class="line">&lt;span class="cl">&lt;span class="n">docker&lt;/span> &lt;span class="n">import&lt;/span> &lt;span class="n">openwrt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">rootfs&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">tar&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">gz&lt;/span> &lt;span class="n">user&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="nl">app&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="n">latest&lt;/span>
&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" class="chroma">&lt;code class="language-c" data-lang="c">&lt;span class="line">&lt;span class="cl">&lt;span class="n">docker&lt;/span> &lt;span class="n">push&lt;/span> &lt;span class="n">user&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="nl">app&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="n">latest&lt;/span>
&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" class="chroma">&lt;code class="language-c" data-lang="c">&lt;span class="line">&lt;span class="cl">&lt;span class="n">ip&lt;/span> &lt;span class="n">link&lt;/span> &lt;span class="n">set&lt;/span> &lt;span class="n">eth0&lt;/span> &lt;span class="n">promisc&lt;/span> &lt;span class="n">on&lt;/span>
&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" class="chroma">&lt;code class="language-c" data-lang="c">&lt;span class="line">&lt;span class="cl">&lt;span class="n">ip&lt;/span> &lt;span class="n">link&lt;/span> &lt;span class="n">set&lt;/span> &lt;span class="n">eth0&lt;/span> &lt;span class="n">promisc&lt;/span> &lt;span class="n">on&lt;/span>
&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" class="chroma">&lt;code class="language-c" data-lang="c">&lt;span class="line">&lt;span class="cl">&lt;span class="n">docker&lt;/span> &lt;span class="n">network&lt;/span> &lt;span class="n">create&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="n">d&lt;/span> &lt;span class="n">macvlan&lt;/span> &lt;span class="o">--&lt;/span>&lt;span class="n">subnet&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mf">192.168.10.0&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="mi">24&lt;/span> &lt;span class="o">--&lt;/span>&lt;span class="n">gateway&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mf">192.168.10.1&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="n">o&lt;/span> &lt;span class="n">parent&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">eth0&lt;/span> &lt;span class="n">openwrt&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-c" data-lang="c">&lt;span class="line">&lt;span class="cl">&lt;span class="n">docker&lt;/span> &lt;span class="n">network&lt;/span> &lt;span class="n">create&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="n">d&lt;/span> &lt;span class="n">macvlan&lt;/span> &lt;span class="o">--&lt;/span>&lt;span class="n">subnet&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mf">192.168.10.0&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="mi">24&lt;/span> &lt;span class="o">--&lt;/span>&lt;span class="n">gateway&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mf">192.168.10.1&lt;/span> &lt;span class="o">--&lt;/span>&lt;span class="n">subnet&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">fe80&lt;/span>&lt;span class="o">::/&lt;/span>&lt;span class="mi">16&lt;/span> &lt;span class="o">--&lt;/span>&lt;span class="n">gateway&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">fe80&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="mi">1&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="n">o&lt;/span> &lt;span class="n">parent&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">eth0&lt;/span> &lt;span class="n">openwrt&lt;/span>
&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" class="chroma">&lt;code class="language-c" data-lang="c">&lt;span class="line">&lt;span class="cl">&lt;span class="n">docker&lt;/span> &lt;span class="n">run&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="n">d&lt;/span> \
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">--&lt;/span>&lt;span class="n">restart&lt;/span> &lt;span class="n">always&lt;/span> \
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">--&lt;/span>&lt;span class="n">name&lt;/span> &lt;span class="n">openwrt&lt;/span> \
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">--&lt;/span>&lt;span class="n">network&lt;/span> &lt;span class="n">openwrt&lt;/span> \
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">--&lt;/span>&lt;span class="n">privileged&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="nb">true&lt;/span> \
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">user&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="nl">app&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="n">latest&lt;/span> \
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">/&lt;/span>&lt;span class="n">sbin&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">init&lt;/span>
&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" class="chroma">&lt;code class="language-c" data-lang="c">&lt;span class="line">&lt;span class="cl">&lt;span class="n">docker&lt;/span> &lt;span class="n">exec&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="n">it&lt;/span> &lt;span class="n">openwrt&lt;/span> &lt;span class="n">bash&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-c" data-lang="c">&lt;span class="line">&lt;span class="cl">&lt;span class="n">vi&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">etc&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">sysctl&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">conf&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-c" data-lang="c">&lt;span class="line">&lt;span class="cl">&lt;span class="n">net&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">ipv6&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">conf&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">all&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">disable_ipv6&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">net&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">ipv6&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">conf&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="k">default&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">disable_ipv6&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">net&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">ipv6&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">conf&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="k">default&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">accept_ra&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">net&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">ipv6&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">conf&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">all&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">accept_ra&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">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" class="chroma">&lt;code class="language-c" data-lang="c">&lt;span class="line">&lt;span class="cl">&lt;span class="n">docker&lt;/span> &lt;span class="n">exec&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="n">it&lt;/span> &lt;span class="n">openwrt&lt;/span> &lt;span class="n">bash&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-c" data-lang="c">&lt;span class="line">&lt;span class="cl">&lt;span class="n">vi&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">etc&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">config&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">network&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>重启后通过填写的局域网地址即可打开OpenWRT后台界面&lt;/li>
&lt;/ul></description></item></channel></rss>