Coder Social home page Coder Social logo

cw1997 / natbypass Goto Github PK

View Code? Open in Web Editor NEW
1.1K 35.0 278.0 29 KB

一款lcx在golang下的实现, 可用于内网穿透, 建立TCP反弹隧道用以绕过防火墙入站限制等, This tool is used to establish reverse tunnel in NAT network environment, it can bypass firewall inbound restriction, support all functions of lcx.exe

Home Page: https://github.com/cw1997/NATBypass

License: Apache License 2.0

Go 100.00%
computer-network frp lcx network socket socket-programming tcp tcp-client tcp-server

natbypass's Introduction

NATBypass (内网穿透,端口转发工具)

一款lcx(htran)在golang下的实现

通过主动连接具有公网IP的电脑打通隧道可实现内网穿透,让内网主机提供的服务能够借助外网主机来访问。软件实现的端口转发,透明代理,在主机限制入站规则但未限制出站规则的特定情况下可绕过防火墙。

build

go build nb.go

如果未出现任何消息则表示编译成功。(Linux哲学:没有消息就是最好的消息)

执行之后Linux或Mac OS在当前目录执行./nb,Windows在当前目录执行nb.exe,如果出现欢迎信息则表示一切正常。

如果编译出现错误,请检查当前系统上的golang是否被破坏,建议重装后再尝试或者直接下载已经编译好的二进制文件,下载地址见后面。

如果运行出现错误,请检查您所输入的参数是否有错,或者相应的端口被占用,请更换端口重试。如果未看见欢迎消息,请给编译好的可执行文件设置权限为777。如果无法写日志,请检查当前用户是否有权限在日志文件路径的读写权限。

release

https://github.com/cw1997/NATBypass/releases

-v1.0.0 发布时间:2017-10-20 16:11:02 平台:Windows-386,Windows-amd64 下载地址

platform

  • Windows 7 7601 + go1.7.5(windows/amd64) 编译与测试通过
  • Ubuntu 16.04.1 + go1.6.2(linux/amd64) 编译与测试通过
  • Windows 2003 SP2 3790 + go1.9.1(windows/386) 编译与测试通过

usage

语法

  • -listen port1 port2

说明

同时监听port1端口和port2端口,当两个客户端主动连接上这两个监听端口之后,nb负责这两个端口间的数据转发。

示例

nb -listen 1997 2017


语法

  • -tran port1 ip:port2

说明

本地开始监听port1端口,当port1端口上接收到来自客户端的主动连接之后,nb将主动连接ip:port2,并且负责port1端口和ip:port2之间的数据转发。

示例

nb -tran 1997 192.168.1.2:338


语法

  • -slave ip1:port1 ip2:port2

说明

本地开始主动连接ip1:port1主机和ip2:port2主机,当连接成功之后,nb负责这两个主机之间的数据转发。

示例

nb -slave 127.0.0.1:3389 8.8.8.8:1997


语法

  • log filedirpath

示例

nb -listen 1997 2017 -log D:/nb

nb -tran 1997 192.168.1.2:338 -log D:/nb

nb -slave 127.0.0.1:3389 8.8.8.8:1997 -log D:/nb

说明

-log为一个可选开关,其参数为日志文件所在目录。如果在前面任意一个必选开关的末尾加上该开关,那么所有转发数据将会被记录到D:/nb/Y_m_d_H_i_s-agrs1-args2-args3.log文件中,其中YmdHis以及args均会被替换为实际执行时的时间和参数。如果有特殊需求,可根据时间顺序,以及相关参数进行合并,以得到连续的转发数据日志记录。(由于转发数据可能并非文本文件,建议使用UltraEdit等支持二进制查看的编辑器打开)

警告:不要使用包含空格以及各种特殊字符的文件路径,比如说C:\Documents and Settings\Administrator\桌面\go\bin这个文件路径就是无效文件路径,因为其包含空格。

注意:由于日志流记录是即时的,建议将日志文件存储在机械硬盘分区中,而不要放在包括固态硬盘,U盘,SD卡等设备,防止大量小文件写入影响这些设备的寿命。

技巧:可使用Linux下的tail -f命令将转发数据实时显示出来。

example

假设有外网主机123.123.123.123:1997123.123.123.123:2017端口开放。

内网主机192.168.1.2:3389需要转发到外网。首先在外网主机执行

nb -listen 1997 2017

作用是开辟两个用于监听内网打隧道的连接端口和其他应用客户端连接的端口。

接着内网主机执行

nb -slave 127.0.0.1:3389 123.123.123.123:1997

作用是内网主机主动连接外网主机打通隧道。

然后其他客户端(例如本例子中的3389远程桌面客户端)连接123.123.123.123:2017,就等同于连接到了内网主机的192.168.1.2:3389上。

TODO

  • UDP协议的转发支持

natbypass's People

Contributors

cw1997 avatar hanks avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

natbypass's Issues

感觉只支持一个连接

如题,使用listen 的时候 能改成多线程的支持同时处理多个连接吗... 现在好像只能处理第一个对上的连接.

如何使用介绍的太模糊了

我想把内网发到有公网IP的外网,如何操作?比如公网IP 8.8.8.8 端口 88
内网端口 192.168.12.2 端口 8990?
都是什么命令?

windows server2012R2报错

报错如下:
panic: runtime error: index out of range

goroutine 1 [running]:
main.main()
D:/golang/GOPATH/src/github.com/cw1997/lcx/nb.go:52 +0x986

should be a string like [ip:por]

我输入了这样一条命令:
nb.exe -slave 172.16.0.71:3389 47.92.248.25:8899
结果出来了这个
should be a string like [ip:por]

是不是写的时候IP的匹配出了问题

案例问题

你好,你提供的案例是不是有点小问题呢?

内网网站如何使用

我在阿里云装个服务比如nginx
在内网穿透到阿里云,用户访问阿里云特定端口就可以访问到我?怎么架构

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.