Package: turbo-tunnel
_____            _          _____                        _
/__   \_   _ _ __| |__   ___/__   \_   _ _ __  _ __   ___| |
  / /\/ | | | '__| '_ \ / _ \ / /\/ | | | '_ \| '_ \ / _ \ |
 / /  | |_| | |  | |_) | (_) / /  | |_| | | | | | | |  __/ |
 \/    \__,_|_|  |_.__/ \___/\/    \__,_|_| |_|_| |_|\___|_|中文READMERuntime EnvironmentOperating System：Windows、Linux、MacOSPython:>=3.5Primary FunctionProvide access to various tunnel / proxy servicesSupported tunnel / proxy service types：https/socks4/socks5/websocket/ssh/icmp/k8sThe types of tunnel / proxy services supported to create：https/socks4/socks5/websocket/sshSupport TCP port forwarding and SSL port forwardingIt supports specifying different policies through configuration file, allowing access different services through different tunnel / proxy servicesInstallationpython3-mpipinstallturbo-tunnelBasic FunctionsDetail inDocumentPort Forwardingturbo-tunnel-ltcp://127.0.0.1:8080-ttcp://www.qq.com:443This command can forwardwww.qq.com:443to local8080port.turbo-tunnel-ltcp://127.0.0.1:8080-thttp://web-proxy.com:8080-ttcp://www.qq.com:443This command can forwardwww.qq.com:443to local8080port throughhttpsproxyweb-proxy.com:8080.If address is not specified, default is0.0.0.0.Create Tunnel ServerUse-lor--listenparameter to create a tunnel server.Create https proxy tunnel serverturbo-tunnel-lhttp://username:password@:8080The variableusernameandpasswordis used for authentication. If username and password not specified, authentication will be disabled. If the password include special characters, it should be encoded byurlencode. For example,pwd@123should be encoded topwd%40123.Create socks4 proxy tunnel serverturbo-tunnel-lsocks4://userid@127.0.0.1:1080socks4://can also replaced bysocks://，becausesocks4is the default socks protocol.useridis used for authentication.Create WebSocket proxy tunnel serverturbo-tunnel-lws://username:password@127.0.0.1/proxy/{addr}/{port}{addr}and{port}are variable placeholders here, which are used to indicate the parameters of target address and target port. This is due to the WebSocket protocol is not a native proxy protocol, which need specil fields to indicate these information. For example, if the user want to visit1.1.1.1:8888, turbo-tunnel will create request path/proxy/1.1.1.1/8888dynamically.User can change the path to different formats, such as/proxy-{addr}-{port}.The client and serverMUSTuse the same format.Thewssprotocol is not supported currently, user can run wss server withnginx.Config Tunnel ClientWith-tor--tunnelparam, turbo-tunnel process can access target server through specified tunnel, default is direct connection.Config single tunnelturbo-tunnel-lhttp://127.0.0.1:8080-twss://username:password@proxy.com/{addr}/{port}All requests to the https proxy server will be forwarded to theWebSockettunnel server.This method can be used to convert tunnel protocol.Config multiple tunnelsturbo-tunnel-lhttp://127.0.0.1:8080-tsocks://10.1.1.1:1080-tssh://username:password@10.2.2.2:22When multiple channels configured, the tunnel will be nested. So data packet can cross all tunnels in turn and access the target service.Config global transparent proxyWhen proxy server is created, program is expected to access network through proxy automatically. This problem can bed solved by configing global transparent proxy.Windows & MacOS can useProxifiertool to config various rules, different rule will be selected to access different server.Linux can useproxychainstool, which is likeProxifier, but can't config rule, and need to addproxychainsbefore cmdline.Advanced UsageConfig fileThe user can use-cor--configparam to specify ayamlformat config file, which can config access rules.Config file example:version:1.0listen:http://127.0.0.1:6666# Listen addresshosts:-domain:www.test.comip:1.2.3.4tunnels:-id:directurl:tcp://default:true# Default is direct connect-id:blockurl:block://# Forbidden rule-id:weburl:http://web-proxy.com:8080-id:privateurl:wss://test:mypassword@ws-proxy.com/proxy/{addr}/{port}dependency:web# Depend web tunnelrules:-id:localpriority:100# Priority, 1-100, highest priority rule will be selected when rule conflictaddr:127.0.0.1tunnel:direct-id:internalpriority:99addr:"192.168.*"port:1-65535tunnel:direct-id:publicpriority:90addr:"*"port:80;443;8080tunnel:web# Access public network with web tunnel-id:privatepriority:95addr:"*.private.com"port:1-65535tunnel:private-id:testpriority:90addr:"*.baidu.com"port:80;443tunnel:block# Connection will be blockedExtend pluginturbo-tunnel is allowing users to develop their own plugins, which can support new proxy server or tunnel. They can also perform special operations, such as dynamically modify sending and receiving data.Built-in plugins:terminal: Show current active connectionsturbo-tunnel-lhttp://127.0.0.1:8080-pterminal-pxxxUser can use-por--pluginparams to specify1-Nplugins. Plugin load order is decided by-pparams order.