一款开源网络转发、代理软件,解决跨网通信问题

这篇具有很好参考价值的文章主要介绍了一款开源网络转发、代理软件,解决跨网通信问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一直比较懒,没有为开源事业做出过什么贡献,最近痛定思痛,写了一个开源软件,解决网络通信问题,附上github地址,供大家共同交流。
https://github.com/wsrf16/anchor

1.功能介绍

本软件针对跨区、跨网段等网络不通场景,或需要批量网络代理场景而开发,可实现:

  • 基于http协议的转发(正、反向代理)
  • 基于tcp协议的转发(正、反向代理)
  • 基于udp协议的转发(反向代理)
  • 基于socks5协议的代理
  • 基于ssh协议的转发以及建立隧道,可用于通过ssh协议中转的方式搭建ssh代理机或http代理机
  • 搭建http服务器,以http接口形式调用服务端shell脚本,或以服务器为中转机,访问远端ssh服务器
  • 以伪终端的形式,访问远程ssh服务器,类似putty、xshell等工具

2.示意图

一款开源网络转发、代理软件,解决跨网通信问题

3.启动方式

3.1 命令行模式

适用于单一端口转发,启动方式简单,无需额外配置,可以通过无参数方式执行,查看帮助:

Help you access the server efficiently

Usage:                                                                  
  anchor [flags]                                                        
  anchor [command]                                                      
                                                                        
Available Commands:                                                     
  completion  Generate the autocompletion script for the specified shell
  help        Help about any command                                    
  http        Start a http server                                       
  server      Start a anchor server                                     
  socks       Start a socks server                                      
  ssh         Start a ssh server                                        
  ssh-pty     Login remote ssh                                          
  tcp         Start a tcp server                                        
  udp         Start a udp server                                        
                                                                        
Flags:                                                                  
  -f, --forward string   <forward-address>                              
  -h, --help             help for anchor                                
  -l, --listen string    <listen-address>                               
                                                                        
Use "anchor [command] --help" for more information about a command.
3.1.1 http转发

该类转发在应用层实现,仅适用于http协议,因为https需要证书。

·正向代理

# 将本机作为代理服务器。其他机器可以通过设置代理为192.168.0.100:8081访问其他网络(假设该服务器ip为192.168.0.100)
$ anchor http -l :8081

·反向代理

# 将本地8081端口接收到的http请求,转发到http://192.168.0.10:8081
$ anchor http -l :8081 -f http://192.168.0.10:8081
3.1.2 tcp转发

该类转发在会话层实现,支持http、https、ssh等大部分基于tcp的协议。

·正向代理

# 将本机作为代理服务器。其他机器可以通过设置代理为192.168.0.100:8081访问其他网络(假设该服务器ip为192.168.0.100)
$ anchor tcp -l :8081

·反向代理

# 将本地8081端口接收到的tcp请求,转发到192.168.0.10的8081端口
$ anchor tcp -l :8081 -f 192.168.0.10:8081
3.1.3 udp转发

该类转发在会话层实现,支持udp协议。

·反向代理

# 将本地8081端口接收到的udp请求,转发到192.168.0.10的8081端口
$ anchor udp -l :8081 -f 192.168.0.10:8081
3.1.4 socks代理

该类转发在会话层实现,支持http、https、ssh等大部分基于tcp的协议。

·正向代理

# 将本地8081端口接收到的tcp请求,转发到192.168.0.10的8081端口
$ anchor socks -l :8081 -f 192.168.0.10:8081
3.1.5 建立ssh隧道
3.1.6 搭建http服务器,以http形式执行shell或访问远程ssh

本模式由于参数较多,仅支持配置文件方式启动。

3.1.7 访问远程ssh服务器
$ ssh-pty 192.168.0.10 -u root -p 12345678

3.2 配置文件模式

以配置文件方式启动,一次启动同时支持多种转发方式,listen为本地监听地址(必填),forward为转发目标地址(非必填)。

# 启动服务
$ ./anchor server

$ cat config.yaml

tcp:
  - listen: :8081
  - listen: :8082
    forward: mecs.com:8080

udp:
  - listen: :8083
    forward: localhost:8084

socks:
  - listen: :1080

http:
  - listen: :8087
  - listen: :8088
    forward: http://mecs.com:8080
    addedHead: test_header

ssh:
  - listen: :8022
    forward: mecs.com:22

httpserver:
  listen: :8080
  shell:
    enabled: true
  ssh:
    - id: mecs.com:22
      addr: mecs.com:22
      user: root
      password: 11
      privateKey: "-----BEGIN RSA PRIVATE KEY-----
  MIIEpQIBAAKCAQEA5tm9KUtCqjSNMqZGENzyLYj5W/8fwghZVtta1CVv0ycgMW9G
  UKRnXkHR9mrUQ38W7JvMaY2G8Z5eijvIp20YtIe/jrvgs/ZWxmAZANz/CSTI5/Jt
  3ks33wGHRey/Rh3nM+CpfWyQkR34PVQP00A/L/9D5PuZ0kaU+mmt9am/iefouSJP
  uweo+jJaTMwZIaR5qbu+UOh/9FrvfCZQqBgslrIzVE37Lk58zCWRG9opY85RvQJr
  hQbyyYCSeKE/Pm+SqZO3ZXj4pvCH3YRSudW0sOLaiyro29I/Ttk0u3ATE3YnJu3t
  BSOI9WKJN259xXAZFJCYQeJIP74B8RSTpzDXVwIDAQABAoIBAQDU5nC/Gaqa7bpe
  wNwTh0FOX2nhv0txrjN+mDSPPKuB6C6XiNEnZEf0tO1HvkRer2Hb+t+tZRnT0cPM
  5s/qIQJM1HkE0R6tuf1TXKMSmb4Xl7Y1u+45udMgNw+jnHDW4JMu0/5cLviw7RvY
  q6Mgp7resCPUlXnKZM/Wlgoaa1+7dMY+RGHLznWVaYAwdgvR5sjmtfobmrHaIt4E
  e0XL7DdbtrLFhK2WVXyDlmB5Y/ji7UajRNTeZVEhihgUdBkTiyBMlJ8jA3sBG/7s
  EL+HS4WmjaoIh86wvUeh+Ue/R16p9CGfNS4QHocLM26qK3MwxOEb/il8un1/lOVB
  x7OWlYJZAoGBAO5URQSJsqCk2Dgitj+A3yPF650rsDsMhJcAoOtHPlwae/8RNh/9
  eNwqxPNrCqr+nbf4Eo22IxWmAUSRtq4NcWD0mhFyBb+MarD8P8NDByzllGlXAQok
  HK68KK6dmfnFMIa6seIJkQ2H0scP17GK/MWsjrKA6/+k4kuVwqLJkH2TAoGBAPf3
  hGb7M3BZqMWn/n6CWCyD3Jhtpfae9SZolTBrrC32uW+YxrLcJQcHQ4AqbYQihZap
  jnYUNUTB5ZpCB8Xt9vkmrJrkvvVmeonw8ebDNQbCHS0btU+06OBtwHahCj4mOLxI
  X4OtYKIoqyZzF1psPBP3i1jXmeA/3mpQM7TA+PmtAoGBAMq0mAM1Dt39dv2/4FyA
  wslNZInIh9qhWgCJA1U5wjtaN06JmAx7bRltsxgKWgd4CjNX5ofre0nFaNymRsch
  HebGBGiEH4l8553i3mS4lNjF54X0/yhd8JtZ5Awodbbv1ccx8Wv8kQf+FvNCcUVL
  npSOoMwIRTGpTuPU27fTUnbLAoGBANvRFxV3oGz7fmrh9vBNOj8UEc0qfpJ27ZnD
  4mVPPg5tBowQYiySjVyCqusGMZmOROB/pOO2HFa8kH7EBEIJJwRNrXuORl4jH4QD
  DV5lNC+uitC/HGbxV/QENzayofLgTTFT8yA25VA7PyXRpyUoh8Wnj2cNkcJCvDeA
  q6WT3+LtAoGAKHhFUXtSznBtajKaAc36rNR7V29/RctCTKWMHG9BrMXmrvOnuJw1
  r6/cWM1g7ez4qEsgzk0rRVRhsIoq01sXf4dc2N7Un2fgkmQOSqX7qqYBQgJUEFjB
  F4kdbHpJWTnF2l70iLkGIBu8Pxs7sUK658Q81iGJ/rvvaC8XAR5WM/M=
  -----END RSA PRIVATE KEY-----"

3.3 搭建http服务器

这里详细说一下搭建http服务器,以下配置内容说明:监听本地8080端口,客户端可访问本地8080端口执行shell命令,或通过该服务器访问其他ssh服务器执行shell命令。

除支持linux平台外,同时也支持windows平台的dos命令

3.3.1 第一步:搭建http服务器
httpserver:
  # 监听本地端口
  listen: :8080
  # 在服务器本地执行shell命令
  shell:
    enabled: true
  # 通过服务器连接其他ssh服务器执行shell命令
  ssh:
      # 自定义,用于标记该目标地址的唯一标识
    - id: 192.168.0.10:22
      # 目标服务器地址
      addr: 192.168.0.10:22
      # 登录该服务器的用户名
      user: root
      # 登录该服务器的密码
      password: 11
      # 也可配置私钥,与密码认证方式二选一即可
      privateKey: "-----BEGIN RSA PRIVATE KEY-----
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      -----END RSA PRIVATE KEY-----"
3.3.2 远程调用ssh

经过以上配置后,可以通过调用以下http接口,ssh连接到id为“mecs.com:22”的机器上执行命令

$ curl -XPOST “http://localhost:8089/ssh” -H “Content-Type: applicaton/json” -d “{“commands”:[“whoami”, “aaaa”, “curl”],“serverId”:“mecs.com:22”}”
返回以下类似内容:

{
    "spanId": "02063545-70ca-11ed-8f4d-f018980ebd48",
    "code": 0,
    "msg": "操作成功",
    "data": {
        "results": [
            {
                "stdout": "root\n",
                "stderr": ""
            },
            {
                "stdout": "bash: aaaa: command not found\n",
                "stderr": "Process exited with status 127"
            },
            {
                "stdout": "curl: try 'curl --help' or 'curl --manual' for more information\n",
                "stderr": "Process exited with status 2"
            }
        ]
    },
    "dateTime": "2022-12-01T00:14:03.8019397+08:00",
    "timestamp": 1669824843801
}
3.3.3 调用shell

也可在服务器本地执行shell命令,使用方法与ssh类似,此时无需指定serverId

$ curl -XPOST “http://localhost:8089/shell” -H “Content-Type: applicaton/json” -d “{“commands”:[“whoami”, “aaaa”, “curl”]}”文章来源地址https://www.toymoban.com/news/detail-402566.html

{
    "spanId": "96478563-70cb-11ed-86be-000c297d3626",
    "code": 0,
    "msg": "操作成功",
    "data": {
        "results": [
            {
                "stdout": "root\n",
                "stderr": ""
            },
            {
                "stdout": "/bin/bash: aaaa: command not found\n",
                "stderr": "exit status 127"
            },
            {
                "stdout": "curl: try 'curl --help' or 'curl --manual' for more information\n",
                "stderr": "exit status 2"
            }
        ]
    },
    "dateTime": "2022-12-01T00:25:22.032626684+08:00",
    "timestamp": 1669825522032
}

到了这里,关于一款开源网络转发、代理软件,解决跨网通信问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Apache Seata -- 一款开源的分布式事务解决方案

    1.1 分布式事务简介 (1)事务 事务可以看做是一次大的活动,它由不同的小活动组成,这些活动要么全部成功,要么全部失败。 (2)本地事务 ​ 在计算机系统中,更多的是通过关系型数据库来控制事务,这是利用数据库本身的事务特性来实现的,因此叫数据库事务,由于

    2024年03月17日
    浏览(58)
  • wsl 网络配置, 代理配置, 常用软件代理

    下面这个脚本可以设置当前网络代理, 有的应用如果发现了这个环境变量就会自动使用代理 在 windows 宿主机上我们会设置 HTTP_PROXY=\\\"http://127.0.0.1:1080\\\" , 但是wsl 基于 hyperv, 使用的是独立的网络, 因此不能将 wsl 的代理地址设置为 127.0.0.1, 需要设置为 宿主机IP . 宿主机(也叫本地D

    2024年02月11日
    浏览(32)
  • 探索socks5代理协议:高效、安全的网络通信方式

    代理IP的作用与应用领域: 介绍代理IP的基本概念和工作原理。 探讨代理IP在网络安全、爬虫和反爬虫技术中的应用。 分享代理IP在实际项目中的案例和经验。 socks5代理协议的特点与用途: 详细解释socks5代理协议的特点和优势。 探讨socks5代理在网络通信和数据传输中的重要

    2024年02月14日
    浏览(46)
  • K8s进阶之网络:pod内不同容器、同节点不同pod通信、CNI插件、不同节点pod通信、Flannel容器网络、Serivce连接外部网络、服务发现、Nginx反向代理与域名、Ingress代理

    Pod是Kubernetes中最小的可部署单元,它是一个或多个紧密关联的容器的组合,这些容器共享同一个网络命名空间和存储卷,因此Pod中的 所有容器都共享相同的网络命名空间和IP地址——PodIP ,所以在同一个Pod内的容器间通信可以 通过localhost直接通信 。 k8s创建Pod时永远都是首先

    2024年02月05日
    浏览(53)
  • irreader RSS 订阅源阅读器工具软件 - 一款强大的网络内容阅读器

    irreader 是一款强大的网络内容阅读器,不仅支持订阅 RSS 文章,还能够订阅网站、播客等内容,将众多订阅源聚合于一处,告别纷杂的互联网信息。     方便的内置订阅源 软件界面采取源列表、文章列表和内容区三栏式布局,内置的「源市场」整合多种热门订阅源,并按照互

    2024年02月01日
    浏览(45)
  • 免费开源使用的几款红黑网络流量工具,自动化的多功能网络侦查工具、超级关键词URL采集工具、Burpsuite被动扫描流量转发插件

    免费开源使用的几款红黑网络流量工具,自动化的多功能网络侦查工具、超级URL采集工具、Burpsuite被动扫描流量转发插件。 #################### 免责声明:工具本身并无好坏,希望大家以遵守《网络安全法》相关法律为前提来使用该工具,支持研究学习,切勿用于非法犯罪

    2024年02月12日
    浏览(39)
  • 探究代理技术在网络安全、爬虫与HTTP通信中的多重应用

    在当今高度互联的世界中,代理技术在网络安全、爬虫开发以及HTTP通信中扮演着举足轻重的角色。本文将深入探讨Socks5代理、IP代理以及HTTP代理在这些领域中的多重应用,探索其如何为我们创造更安全、高效的网络环境。 1. Socks5代理:构建安全通道与绕过限制 Socks5代理作为

    2024年02月11日
    浏览(42)
  • 网络电影购票系统代理商客户端开发(java开源)

    一、背景介绍 随着互联网技术的不断发展,网络电影购票已经成为了人们日常生活中的一部分。然而,在电影购票市场中,代理商客户端的开发与搭建是一个关键环节。接下来将介绍如何使用Java开源技术来开发一个网络电影购票系统代理商客户端。 二、代理商客户端功能分

    2024年02月13日
    浏览(78)
  • Socks5与代理IP技术探析:构建安全高效的网络通信

    1.1 握手与身份验证 Socks5协议的握手阶段通过版本协商和灵活的身份验证方式建立安全连接。这确保了通信的可靠性和用户身份的安全。 1.2 数据传输机制 Socks5通过代理实现数据传输,支持TCP和UDP协议,为用户提供了高度灵活的网络通信机制。连接一旦建立,数据可以通过代

    2024年02月04日
    浏览(44)
  • Socks5与代理IP技术的深度解析:保障网络通信安全的利器

    随着互联网的发展,网络通信的安全性和隐私保护变得尤为重要。Socks5协议与代理IP技术作为保护网络通信的关键工具,为用户提供了更加安全、私密的网络访问方式。本文将深入探讨Socks5协议和代理IP技术的原理、特性以及其在实际应用中的技术细节。 2.1 握手与认证 Socks

    2024年02月20日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包