<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Gost on Kai's Blog</title><link>https://blog.kai.vg/tags/gost/</link><description>Recent content in Gost on Kai's Blog</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Tue, 15 Oct 2024 00:00:00 +0800</lastBuildDate><atom:link href="https://blog.kai.vg/tags/gost/index.xml" rel="self" type="application/rss+xml"/><item><title>Gost使用加密隧道转发数据</title><link>https://blog.kai.vg/p/gost-forward/</link><pubDate>Tue, 15 Oct 2024 00:00:00 +0800</pubDate><guid>https://blog.kai.vg/p/gost-forward/</guid><description>&lt;img src="https://blog.kai.vg/p/gost-forward/2.jpg" alt="Featured image of post Gost使用加密隧道转发数据" /&gt;&lt;h1 id="需求"&gt;需求&#10;&lt;/h1&gt;&lt;ul&gt;&#10;&lt;li&gt;有两台机器A与B，需要都能访问 &lt;code&gt;x.x.x.x:xx&lt;/code&gt; 地址。其中B机器能直接访问，A机器只能与B机器连通，无法访问 &lt;code&gt;x.x.x.x:xx&lt;/code&gt; 地址。因此需要用Gost搭建端口转发，实现A访问B的特定端口，B再往&lt;code&gt;x.x.x.x:xx&lt;/code&gt; 地址发送请求&lt;/li&gt;&#10;&lt;li&gt;为了隐私与安全性考量，B的特定端口需要有权限校验，防止任何人都能访问&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h1 id="准备工作"&gt;准备工作&#10;&lt;/h1&gt;&lt;ol&gt;&#10;&lt;li&gt;到&lt;a class="link" href="https://github.com/go-gost/gost/releases" target="_blank" rel="noopener"&#10; &gt;这里&lt;/a&gt;下载最新版Gost到A、B两台机器上&lt;/li&gt;&#10;&lt;li&gt;将可执行文件放入 &lt;code&gt;/usr/local/bin/gost&lt;/code&gt; 路径下&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h1 id="b机器配置"&gt;B机器配置&#10;&lt;/h1&gt;&lt;h2 id="具体写法"&gt;具体写法&#10;&lt;/h2&gt;&lt;p&gt;使用 &lt;code&gt;relay+tls&lt;/code&gt;模式监听本地8888端口，并将接收到的数据解密后发送到 &lt;code&gt;x.x.x.x:xx&lt;/code&gt;&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/usr/local/bin/gost -L&lt;span class="o"&gt;=&lt;/span&gt;relay+tls://user:pwd@:8888/0:0 -F&lt;span class="o"&gt;=&lt;/span&gt;forward+tcp://x.x.x.x:xx&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;h2 id="持续化运行"&gt;持续化运行&#10;&lt;/h2&gt;&lt;p&gt;需要编写systemd配置信息将Gost放入systemd运行维护，创建 &lt;code&gt;/etc/systemd/system/gost.service&lt;/code&gt; 文件：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 2&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 3&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 4&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 5&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 6&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 7&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 8&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 9&#10;&lt;/span&gt;&lt;span class="lnt"&gt;10&#10;&lt;/span&gt;&lt;span class="lnt"&gt;11&#10;&lt;/span&gt;&lt;span class="lnt"&gt;12&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[Unit]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Description=GO Simple Tunnel&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;After=network.target&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Wants=network.target&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[Service]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Type=simple&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ExecStart=/usr/local/bin/gost -L=relay+tls://user:pwd@:8888/0:0 -F=forward+tcp://x.x.x.x:xx&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Restart=always&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[Install]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;WantedBy=multi-user.target&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;执行：&lt;code&gt;systemctl daemon-reload &amp;amp;&amp;amp; systemctl enable gost &amp;amp;&amp;amp; systemctl start gost&lt;/code&gt; 即可实现启动Gost并开机自启&lt;/p&gt;&#10;&lt;h1 id="a机器配置"&gt;A机器配置&#10;&lt;/h1&gt;&lt;p&gt;需要在本地监听一个端口（例如9999），使用与B机器相同配置的加密模式后转发到B机器的8888端口，A机器上访问 &lt;code&gt;127.0.0.1:9999&lt;/code&gt; 即会被Gost转发到B机器后再转发到 &lt;code&gt;x.x.x.x:xx&lt;/code&gt; 地址&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/usr/local/bin/gost -L&lt;span class="o"&gt;=&lt;/span&gt;tcp://:9999/0:0 -F&lt;span class="o"&gt;=&lt;/span&gt;relay+tls://user:pwd@B_address:8888/0:0&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;h2 id="持续化运行-1"&gt;持续化运行&#10;&lt;/h2&gt;&lt;p&gt;需要编写systemd配置信息将Gost放入systemd运行维护，创建 &lt;code&gt;/etc/systemd/system/gost.service&lt;/code&gt; 文件：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 2&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 3&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 4&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 5&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 6&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 7&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 8&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 9&#10;&lt;/span&gt;&lt;span class="lnt"&gt;10&#10;&lt;/span&gt;&lt;span class="lnt"&gt;11&#10;&lt;/span&gt;&lt;span class="lnt"&gt;12&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[Unit]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Description=GO Simple Tunnel&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;After=network.target&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Wants=network.target&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[Service]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Type=simple&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ExecStart=/usr/local/bin/gost -L=tcp://:9999/0:0 -F=relay+tls://user:pwd@B_address:8888/0:0&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Restart=always&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[Install]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;WantedBy=multi-user.target&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;执行：&lt;code&gt;systemctl daemon-reload &amp;amp;&amp;amp; systemctl enable gost &amp;amp;&amp;amp; systemctl start gost&lt;/code&gt; 即可实现启动Gost并开机自启&lt;/p&gt;&#10;&lt;h1 id="效果"&gt;效果&#10;&lt;/h1&gt;&lt;p&gt;A机器上访问 &lt;code&gt;127.0.0.1:9999&lt;/code&gt; 地址，数据就会通过Gost的加密隧道到达B机器，再由B机器转发到 &lt;code&gt;x.x.x.x:xx&lt;/code&gt; 地址&lt;/p&gt;&#10;</description></item></channel></rss>