CINXE.COM
端口转发 | GOST v2
<!DOCTYPE html> <html lang="cn"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="description" content="端口转发"><meta property="og:title" content="端口转发" /> <meta property="og:description" content="GOST从2.1版本开始增加了对端口转发的支持。 使用说明 端口转发服务节点的配置与普通的代理节点有所不同: scheme://[bind_address]:port/[host]:hostport[,[host]:hostport]?ip=[host]:hostport][,[host]:hostport]] scheme - 端口转发模式, 本地端口转发: tcp, udp; 远程端口转发: rtcp, rudp; 转发隧道: tls, kcp等传输类型。 [bind_address]:port - 本地/远程绑定地址。 [host]:hostport[,[host]:hostport] - (可选, 2.6+) 目标访问地址,支持以逗号分割的多地址形式。 参数说明 ip - (可选, 2.8+) 也可以通过此参数来指定目标地址。 strategy - 指定节点选择策略,round - 轮询,random - 随机, fifo - 自上而下。默认值为round。 max_fails - (2.8.1+) 指定节点连接的最大失败次数,当与一个节点建立连接失败次数超过此设定值时,此节点会被标记为死亡节点(Dead),死亡节点不会被选择使用。默认值为1。 fail_timeout - (2.8.1+) 指定死亡节点的超时时间,当一个节点被标记为死亡节点后,在此设定的时间间隔内不会被选择使用,超过此设定时间间隔后,会再次参与节点选择。默认为30秒。 TCP本地端口转发 将本地的TCP端口A映射到指定的目标TCP端口B,所有到端口A的数据会被转发到端口B。此功能类似于SSH的本地端口转发功能。 gost -L=tcp://:2222/192.168.1.1:22 [-F=..] 将本地TCP端口2222上的数据(通过代理链)转发到192.168.1.1:22上。 当代理链末端(最后一个-F参数)为forward+ssh类型时,GOST会直接使用SSH的本地端口转发功能: gost -L=tcp://:2222/192.168.1.1:22 -F forward+ssh://:2222 服务端可以是标准的SSH程序,也可以是GOST的SSH转发模式: gost -L forward+ssh://:2222 scheme必须是forward+ssh。 TCP远程端口转发 将目标TCP端口B映射到本地TCP端口A,所有到端口B上的数据会被转发到端口A。此功能类似于SSH的远程端口转发功能。 gost -L=rtcp://:2222/192.168.1.1:22 [-F=... -F=socks5://172.24.10.1:1080] 将172." /> <meta property="og:type" content="article" /> <meta property="og:url" content="/port-forwarding/" /> <meta property="article:published_time" content="2017-11-16T20:26:24+08:00" /> <meta property="article:modified_time" content="2017-11-16T20:26:24+08:00" /> <title>端口转发 | GOST v2</title> <link rel="icon" href="/favicon.png" type="image/x-icon"> <link rel="stylesheet" href="/book.min.68d45956421753cdf6bcfc865ede445c56afc5bcaaebfe02961f44fe77d8f45a.css" integrity="sha256-aNRZVkIXU832vPyGXt5EXFavxbyq6/4Clh9E/nfY9Fo="> <script type="application/javascript"> var doNotTrack = false; if (!doNotTrack) { window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date; ga('create', 'UA-98791308-2', 'auto'); ga('send', 'pageview'); } </script> <script async src='https://www.google-analytics.com/analytics.js'></script> <!-- Made with Book Theme https://github.com/alex-shpak/hugo-book --> </head> <body> <input type="checkbox" class="hidden" id="menu-control" /> <main class="flex container"> <aside class="book-menu fixed"> <nav> <h2 class="book-brand"> <a href="/"><span>GOST v2</span> </a> </h2> <ul> <li> <a href="/getting-started/" > 快速开始 </a> </li> <li> <a href="/configuration/" > 节点配置 </a> </li> <li> <a href="/http/" > HTTP(S) </a> </li> <li> <a href="/http2/" > HTTP2 </a> </li> <li> <a href="/probe_resist/" > 探测防御 </a> </li> <li> <a href="/socks/" > SOCKS </a> </li> <li> <a href="/ss/" > Shadowsocks </a> </li> <li> <a href="/sni/" > SNI </a> </li> <li> <a href="/tls/" > TLS </a> </li> <li> <a href="/ws/" > Websocket </a> </li> <li> <a href="/kcp/" > KCP </a> </li> <li> <a href="/quic/" > QUIC </a> </li> <li> <a href="/ssh/" > SSH </a> </li> <li> <a href="/simple-obfs/" > Simple-obfs </a> </li> <li> <a href="/obfs4/" > Obfs4 </a> </li> <li> <a href="/redirect/" > 透明代理 </a> </li> <li> <a href="/port-forwarding/" class="active"> 端口转发 </a> </li> <li> <a href="/relay/" > Relay </a> </li> <li> <a href="/permission/" > 权限控制 </a> </li> <li> <a href="/load-balancing/" > 负载均衡 </a> </li> <li> <a href="/bypass/" > 路由控制 </a> </li> <li> <a href="/resolver/" > DNS解析 </a> </li> <li> <a href="/dns/" > DNS代理 </a> </li> <li> <a href="/tuntap/" > TUN/TAP设备 </a> </li> </ul> </nav> <script> (function() { var menu = document.querySelector("aside.book-menu nav"); addEventListener("beforeunload", function(event) { localStorage.setItem("menu.scrollTop", menu.scrollTop); }); menu.scrollTop = localStorage.getItem("menu.scrollTop"); })(); </script> </aside> <div class="book-page"> <header class="flex align-center justify-between book-header"> <label for="menu-control"> <img src="/svg/menu.svg" class="book-icon" alt="Menu" /> </label> <strong>端口转发</strong> </header> <article class="markdown"><p>GOST从2.1版本开始增加了对端口转发的支持。</p> <h2 id="heading">使用说明</h2> <p>端口转发服务节点的配置与普通的代理节点有所不同:</p> <pre><code>scheme://[bind_address]:port/[host]:hostport[,[host]:hostport]?ip=[host]:hostport][,[host]:hostport]] </code></pre><p>scheme - 端口转发模式, 本地端口转发: <code>tcp</code>, <code>udp</code>; 远程端口转发: <code>rtcp</code>, <code>rudp</code>; 转发隧道: <code>tls</code>, <code>kcp</code>等传输类型。</p> <p>[bind_address]:port - 本地/远程绑定地址。</p> <p>[host]:hostport[,[host]:hostport] - (可选, 2.6+) 目标访问地址,支持以逗号分割的多地址形式。</p> <h3 id="heading-1">参数说明</h3> <p><code>ip</code> - (可选, 2.8+) 也可以通过此参数来指定目标地址。</p> <p><code>strategy</code> - 指定节点选择策略,<code>round</code> - 轮询,<code>random</code> - 随机, <code>fifo</code> - 自上而下。默认值为<code>round</code>。</p> <p><code>max_fails</code> - (2.8.1+) 指定节点连接的最大失败次数,当与一个节点建立连接失败次数超过此设定值时,此节点会被标记为死亡节点(Dead),死亡节点不会被选择使用。默认值为1。</p> <p><code>fail_timeout</code> - (2.8.1+) 指定死亡节点的超时时间,当一个节点被标记为死亡节点后,在此设定的时间间隔内不会被选择使用,超过此设定时间间隔后,会再次参与节点选择。默认为30秒。</p> <h2 id="tcp">TCP本地端口转发</h2> <p>将本地的TCP端口A映射到指定的目标TCP端口B,所有到端口A的数据会被转发到端口B。此功能类似于SSH的本地端口转发功能。</p> <pre><code>gost -L=tcp://:2222/192.168.1.1:22 [-F=..] </code></pre><p>将本地TCP端口2222上的数据(通过代理链)转发到192.168.1.1:22上。</p> <p>当代理链末端(最后一个-F参数)为<code>forward+ssh</code>类型时,GOST会直接使用SSH的本地端口转发功能:</p> <pre><code>gost -L=tcp://:2222/192.168.1.1:22 -F forward+ssh://:2222 </code></pre><p>服务端可以是标准的SSH程序,也可以是GOST的SSH转发模式:</p> <pre><code>gost -L forward+ssh://:2222 </code></pre><p>scheme必须是<code>forward+ssh</code>。</p> <h2 id="tcp-1">TCP远程端口转发</h2> <p>将目标TCP端口B映射到本地TCP端口A,所有到端口B上的数据会被转发到端口A。此功能类似于SSH的远程端口转发功能。</p> <pre><code>gost -L=rtcp://:2222/192.168.1.1:22 [-F=... -F=socks5://172.24.10.1:1080] </code></pre><p>将172.24.10.1:2222上的数据(通过代理链)转发到192.168.1.1:22上。</p> <h3 id="socks5">SOCKS5多路复用模式</h3> <p>在2.5版本中,SOCKS5的BIND方法增加了对多路复用的支持,远程端口转发可以利用这个特性提高传输效率。</p> <pre><code>gost -L rtcp://:8080/192.168.1.1:80 -F socks5://:1080?mbind=true </code></pre><p>客户端通过<code>mbind=true</code>参数开启SOCKS5的BIND多路复用模式。</p> <h3 id="ssh">SSH端口转发模式</h3> <p>当代理链末端(最后一个-F参数)为<code>forward+ssh</code>类型时,GOST会直接使用SSH的远程端口转发功能:</p> <pre><code>gost -L=rtcp://:2222/192.168.1.1:22 -F forward+ssh://:2222 </code></pre><p>服务端可以是标准的SSH程序,也可以是GOST的SSH转发模式:</p> <pre><code>gost -L forward+ssh://:2222 </code></pre><p>scheme必须是<code>forward+ssh</code>。</p> <h2 id="udp">UDP本地端口转发</h2> <p>将本地的UDP端口A映射到指定的目标UDP端口B,所有到端口A的数据会被转发到端口B。</p> <pre><code>gost -L=udp://:5353/192.168.1.1:53?ttl=60s [-F=... -F=socks5://172.24.10.1:1080] </code></pre><p>将本地UDP端口5353上的数据(通过代理链)转发到192.168.1.1:53上。</p> <p>每一个不同的客户端(不同的端口)对应一条转发通道,每条转发通道都有超时时间,当超过此时间且在此时间段内无任何数据交互,则此通道将关闭。 可以通过<code>ttl</code>参数来设置超时时间,默认值为60秒。</p> <h2 id="udp-1">UDP远程端口转发</h2> <p>将目标UDP端口B映射到本地UDP端口A,所有到端口B上的数据会被转发到端口A。</p> <pre><code>gost -L=rudp://:5353/192.168.1.1:53?ttl=60s [-F=... -F=socks5://172.24.10.1:1080] </code></pre><p>将172.24.10.1:5353上的数据(通过代理链)转发到192.168.1.1:53上。</p> <p>每一个不同的客户端(不同的端口)对应一条转发通道,每条转发通道都有超时时间,当超过此时间且在此时间段内无任何数据交互,则此通道将关闭。 可以通过<code>ttl</code>参数来设置超时时间,默认值为60秒。</p> <blockquote class="book-hint warning"> <p>转发UDP数据时,如果有代理链,则代理链的末端(最后一个-F参数)协议必须是GOST <code>socks5</code>类型,传输层可以任意选择。</p> <p>2.10+后本地UDP端口转发也可以使用<code>ssu</code>进行转发。</p> </blockquote> <h2 id="heading-2">转发隧道</h2> <p>在2.5版本中TCP本地端口转发可以配合传输类型一起使用:</p> <p>服务端:</p> <pre><code>gost -L tls://:443/:1443 -L sni://:1443 </code></pre><p>对应的<code>scheme</code>为传输类型,协议类型必须为空。</p> <p>客户端:</p> <pre><code>gost -L :8080 -F forward+tls://server_ip:443 </code></pre><p>对应的<code>scheme</code>为<code>forward+transport</code>格式,其中协议类型必须为<code>forward</code>。</p> <h3 id="heading-3">使用场景</h3> <h4 id="heading-4">加密</h4> <pre><code>gost -L tls://:443/:8080 -L http://:8080 </code></pre><p>将8080端口的HTTP代理服务转成443端口的HTTPS代理服务</p> <h4 id="heading-5">加速</h4> <pre><code>gost -L kcp://:8388/:8338 -L ss://chacha20:123456@:8338 </code></pre><p>将8338端口的shadowsocks代理服务转成使用KCP传输。</p> </article> <div class="book-footer justify-between"> <div class="book-languages"> <ul> <li class="flex"> <img src="/svg/translate.svg" class="book-icon" alt="Languages" /> Chinese </li> </ul> <ul class="book-languages-list"> <li class="active"> <a href="/" class="flex"> <img src="/svg/translate.svg" class="book-icon" alt="Languages" /> Chinese </a> </li> <li class=""> <a href="/en/port-forwarding/" class="flex"> <img src="/svg/translate.svg" class="book-icon" alt="Languages" /> English </a> </li> </ul> </div> </div> </div> </main> </body> </html>