ffay / lanproxy Goto Github PK
View Code? Open in Web Editor NEWlanproxy是一个将局域网个人电脑、服务器代理到公网的内网穿透工具,支持tcp流量转发,可支持任何tcp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面、http代理、https代理、socks5代理...)。技术交流QQ群 736294209
Home Page: https://nat.nioee.com
lanproxy是一个将局域网个人电脑、服务器代理到公网的内网穿透工具,支持tcp流量转发,可支持任何tcp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面、http代理、https代理、socks5代理...)。技术交流QQ群 736294209
Home Page: https://nat.nioee.com
rt,多谢
运行一段时间就自动断开了
I cannot visit my client with server host:Internet port, server.log has error.
ERROR [org.fengfei.lanproxy.server.handlers.ServerChannelHandler] - <exception caught>
io.netty.handler.codec.TooLongFrameException: Adjusted frame length exceeds 2097152: 369296132 - discarded
at io.netty.handler.codec.LengthFieldBasedFrameDecoder.fail(LengthFieldBasedFrameDecoder.java:499)
at io.netty.handler.codec.LengthFieldBasedFrameDecoder.failIfNecessary(LengthFieldBasedFrameDecoder.java:477)
at io.netty.handler.codec.LengthFieldBasedFrameDecoder.decode(LengthFieldBasedFrameDecoder.java:403)
at org.fengfei.lanproxy.protocol.ProxyMessageDecoder.decode(ProxyMessageDecoder.java:44)
at org.fengfei.lanproxy.protocol.ProxyMessageDecoder.decode(ProxyMessageDecoder.java:7)
at io.netty.handler.codec.LengthFieldBasedFrameDecoder.decode(LengthFieldBasedFrameDecoder.java:343)
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:387)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:245)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:292)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:278)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:962)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:131)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:528)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:485)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:399)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:371)
at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:112)
at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137)
at java.lang.Thread.run(Thread.java:748)
2017-09-14 19:19:50,150 WARN [io.netty.channel.DefaultChannelPipeline] - <An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did not handle the exception.>
io.netty.handler.codec.TooLongFrameException: Adjusted frame length exceeds 2097152: 369296132 - discarded
at io.netty.handler.codec.LengthFieldBasedFrameDecoder.fail(LengthFieldBasedFrameDecoder.java:499)
at io.netty.handler.codec.LengthFieldBasedFrameDecoder.failIfNecessary(LengthFieldBasedFrameDecoder.java:477)
at io.netty.handler.codec.LengthFieldBasedFrameDecoder.decode(LengthFieldBasedFrameDecoder.java:403)
at org.fengfei.lanproxy.protocol.ProxyMessageDecoder.decode(ProxyMessageDecoder.java:44)
at org.fengfei.lanproxy.protocol.ProxyMessageDecoder.decode(ProxyMessageDecoder.java:7)
at io.netty.handler.codec.LengthFieldBasedFrameDecoder.decode(LengthFieldBasedFrameDecoder.java:343)
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:387)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:245)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:292)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:278)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:962)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:131)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:528)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:485)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:399)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:371)
at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:112)
at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137)
at java.lang.Thread.run(Thread.java:748)
Caused by: javax.net.ssl.SSLHandshakeException: null cert chain
at sun.security.ssl.Handshaker.checkThrown(Handshaker.java:1478)
at sun.security.ssl.SSLEngineImpl.checkTaskThrown(SSLEngineImpl.java:535)
at sun.security.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:813)
at sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:781)
at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:624)
at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1098)
at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:970)
at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:904)
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:387)
一直在循环报这个错。
局域网内有一个MongoDB服务
192.168.0.12:40000
使用lanproxy映射到外网 项目中改用外网地址后 21分钟的定时任务第一次执行成功 后面就执行失败了
# 第一次
[extractScheduler-1] driver.connection - Opened connection [connectionId{localValue:2, serverValue:1462175}] to 120.27.XXX.XXX:40000
# 第二次
[extractScheduler-1] driver.connection - Got socket exception on connection [connectionId{localValue:2, serverValue:1462175}] to 120.27.XXX.XXX:40000. All connections to 120.27.XXX.XXX:40000 will be closed.
[extractScheduler-1] driver.connection - Closed connection [connectionId{localValue:2, serverValue:1462175}] to 120.27.XXX.XXX:40000 because there was a socket exception raised by this connection.
# 之后都是类似的错误
错误日志
Caused by: java.net.SocketException: Operation timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
wireshark抓包
如果使用内网地址的话 就没有这个问题
如果使用外网地址 但定时任务间隔时间小于20分钟的话 也没问题
所以我现在怀疑是lanproxy的问题 能不能帮忙确认一下?
目前都支持哪些?
ssh web都正常 MySQL 连接不知道为什么就变localhost了
mysql -u test -D aaa -h xxxxx.com -P 3381 -p
ERROR 1045 (28000): Access denied for user 'hztest'@'localhost' (using password: YES)
系统是这个样子的
root@LEDE:/tmp# cat /proc/cpuinfo
system type : Qualcomm Atheros QCA956X ver 1 rev 0
machine : TP-LINK TL-WDR6500 v2
processor : 0
cpu model : MIPS 74Kc V5.0
BogoMIPS : 373.55
wait instruction : yes
microsecond timers : yes
tlb_entries : 32
extra interrupt vector : yes
hardware watchpoint : yes, count: 4, address/irw mask: [0x0ffc, 0x0ffc, 0x0ffb, 0x0ffb]
isa : mips1 mips2 mips32r1 mips32r2
ASEs implemented : mips16 dsp dsp2
shadow register sets : 1
kscratch registers : 0
package : 0
core : 0
VCED exceptions : not available
VCEI exceptions : not available
试了下面两个客户端都不行
root@LEDE:/tmp# ./client_linux_mipsle
./client_linux_mipsle: line 1: syntax error: unexpected word (expecting ")")
root@LEDE:/tmp# ./client_linux_mips
Illegal instruction
看了 build-release.sh 不知道这么编译能支持这个系统
./startup.sh: bad interpreter: /bin/bash^M: no such file or directory
打包后在distribution的proxy-server中,执行startup.sh脚本报错。脚本内容为:
#!/bin/bash
cd `dirname $0`
cd ..
DEPLOY_DIR=`pwd`
CONF_DIR=$DEPLOY_DIR/conf
LOGS_DIR=$DEPLOY_DIR/logs
APP_MAINCLASS=org.fengfei.lanproxy.server.ProxyServerContainer
PIDS=`ps -ef | grep java | grep "$CONF_DIR" |awk '{print $2}'`
if [ -n "$PIDS" ]; then
echo "ERROR: already started!"
echo "PID: $PIDS"
exit 1
fi
if [ ! -d $LOGS_DIR ]; then
mkdir $LOGS_DIR
fi
STDOUT_FILE=$LOGS_DIR/stdout.log
CLOG_FILE=$LOGS_DIR/gc.log
LIB_DIR=$DEPLOY_DIR/lib
LIB_JARS=`ls $LIB_DIR|grep .jar|awk '{print "'$LIB_DIR'/"$0}'| xargs | sed "s/ /:/g"`
JAVA_OPTS=" -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true "
JAVA_DEBUG_OPTS=""
if [ "$1" = "debug" ]; then
JAVA_DEBUG_OPTS=" -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n "
fi
JAVA_JMX_OPTS=""
if [ "$1" = "jmx" ]; then
JAVA_JMX_OPTS=" -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false "
fi
JAVA_MEM_OPTS=""
#JAVA_MEM_OPTS="-server -Xms5120M -Xmx5120M -Xmn1024M -Xnoclassgc -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+PrintClassHistogram -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -Xloggc:$CLOG_FILE"
echo -e "Starting the proxy server ...\c"
nohup java -Dapp.home=$DEPLOY_DIR $JAVA_OPTS $JAVA_MEM_OPTS $JAVA_DEBUG_OPTS $JAVA_JMX_OPTS -classpath $CONF_DIR:$LIB_JARS $APP_MAINCLASS >$STDOUT_FILE 2>&1 &
sleep 1
echo "started"
PIDS=`ps -ef | grep java | grep "$DEPLOY_DIR" | awk '{print $2}'`
echo "PID: $PIDS"
我用这个0.1-20171115版本,发现10分钟左右客户端就掉线了,我重新下载https://gitee.com/fengfei/lanproxy/repository/archive/master.zip码云上的源码生成执行程序后用了几个小时都没有出现掉线的情况。我暂时不清楚之前0.1-20171115版本这个版本为什么为出现客户端无故掉线的原因,
Alongside with the Chinese text there should be English description for international audience to know what is the project about.
加了heatbeat心跳机制后 , 还需要加mux协议,
这样才能彻底解决 , 感知tcp健康状态,的问题 ,保持长时间连接建议使用“多路复用”
https://github.com/xtaci/smux
您好,读了Doc后还有个地方想请问下,比如我有一台公网服务器配置了server,然后有广西、广东2个点的客户端要同时使用,而不单单是同一条网线经过路由的多台不同机器。
net::ERR_CONTENT_LENGTH_MISMATCH
小流量的简单引用代理都没问题,但针对流量需求稍微大点的应用常常代理失败。尤其是单个大js文件(数据图表),基本无法下载。可否调整测试下加强大流量应用代理的支持。
rt,请问是否有官方的Docker镜像发布,这样可以直接部署成容器
你好,我按照Readme配置好了server端,也成功的启动了, 但是登陆成功之后,直接又闪退回登陆界面.想问下是怎么回事. 具体操作我录了一个gif图片 如下.
http://linuxsogood.org/wp-content/uploads/2017/09/proxy.gif
github试了好几次都传不上来图片,所以放我个人博客了.
下面是日志.
2017-09-11 03:17:54,741 INFO [org.fengfei.lanproxy.server.config.web.routes.RouteConfig] - <handle request for api /login> 2017-09-11 03:27:05,003 INFO [org.fengfei.lanproxy.server.config.web.routes.RouteConfig] - <handle request for api /login> 2017-09-11 03:27:10,141 INFO [org.fengfei.lanproxy.server.config.web.routes.RouteConfig] - <handle request for api /login> 2017-09-11 03:29:23,103 INFO [org.fengfei.lanproxy.server.config.web.routes.RouteConfig] - <handle request for api /login> 2017-09-11 03:29:27,944 INFO [org.fengfei.lanproxy.server.config.web.routes.RouteConfig] - <handle request for api /login>
windows系统可以使用这个软件吗?
刚好在找类似的产品,相对于其他开源产品来说,确实这个还是比较好用的,软件轻量,部署操作简单、有Web管理界面好用,还未进行大数据量的测试,不知道有没有什么问题。不过先想到几个小建议:
1、基于TCP长连接,能否实时查看客户端是否在线。
2、支持多管理员账户登录。
3、考虑到登录的安全性,可以支持验证码登录。
4、客户端运行可以打印一下基本信息。
5、现在是用JSON来存储数据,是否可以修改为小型嵌入式数据比如SQLite,以后比较好扩展功能。
lanproxy.org使用github账号无法登录
client_windows_amd64.exe 用的是最新的,lanproxy-client-windows-amd64-20171128.tar。
start heartbeat: &{1513150033 1513150033 false 0xc0420d6010 [] }
start listen cmd message: {0xc04204a3c0 0xc04208e300 6666 0xc0420d2120}
connSuccess, clientkey: 1b5c3992055c4bb88a6a2ac52b98b31c
connError: &{1513150036 1513150036 false 0xc0420d6010 [] 0xc0420c4240}
编译的是最新的版本
客户端日志正常
服务端日志
2018-01-19 10:23:55,880 ERROR [org.fengfei.lanproxy.server.handlers.ServerChannelHandler] -
java.io.IOException: Connection timed out
at sun.nio.ch.FileDispatcherImpl.read0(Native Method)
at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39)
at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223)
at sun.nio.ch.IOUtil.read(IOUtil.java:192)
at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:380)
at io.netty.buffer.UnpooledUnsafeDirectByteBuf.setBytes(UnpooledUnsafeDirectByteBuf.java:357)
at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:898)
at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:242)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:119)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:528)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:485)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:399)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:371)
at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:112)
at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137)
at java.lang.Thread.run(Thread.java:748)
2018-01-19 10:23:55,880 WARN [io.netty.channel.DefaultChannelPipeline] - <An exceptionCaught() event was fired, and it reac
hed at the tail of the pipeline. It usually means the last handler in the pipeline did not handle the exception.>
java.io.IOException: Connection timed out
at sun.nio.ch.FileDispatcherImpl.read0(Native Method)
at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39)
at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223)
at sun.nio.ch.IOUtil.read(IOUtil.java:192)
at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:380)
at io.netty.buffer.UnpooledUnsafeDirectByteBuf.setBytes(UnpooledUnsafeDirectByteBuf.java:357)
at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:898)
at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:242)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:119)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:528)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:485)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:399)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:371)
at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:112)
at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137)
at java.lang.Thread.run(Thread.java:748)
服务端配置
server.bind=0.0.0.0
server.port=4900
server.ssl.enable=true
server.ssl.bind=0.0.0.0
server.ssl.port=4993
server.ssl.jksPath=test.jks
server.ssl.keyStorePassword=123456
server.ssl.keyManagerPassword=123456
server.ssl.needsClientAuth=false
config.server.bind=0.0.0.0
config.server.port=8090
config.admin.username=admin
config.admin.password=admin
客户端配备
client.key=8c0b7f77be7b47158ebd43f189daed05
ssl.enable=false
ssl.jksPath=test.jks
ssl.keyStorePassword=123456
server.host=*****
#default ssl port is 4993 与服务端通讯端口
server.port=4900
在后台取消某个外网端口与内网IP:port映射关系时,对应的外网端口不会释放
当主机没有运行lanproxy的情况下,执行startup.sh
PIDS=`ps -ef | grep java | grep "$CONF_DIR" |awk '{print $2}'
这行在ubuntu14.04执行后依然能得到一个PID,这个是grep命令的PID,但脚本的逻辑却认为客户端已经在运行了,从而报错退出
建议改成 PIDS=ps -f -C java | grep "$CONF_DIR" |awk '{print $2}'
[WARN ] 2017-08-14 20:12:25 :channel closed, clear real server channels
[INFO ] 2017-08-14 20:12:27 :connect proxy server success, [id: 0xc0a03e37, L:/192.168.199.147:51742 - R:/39.108.68.3:4900]
[WARN ] 2017-08-14 20:12:27 :channel closed, clear real server channels
[INFO ] 2017-08-14 20:12:29 :connect proxy server success, [id: 0x14828b2f, L:/192.168.199.147:51749 - R:/39.108.68.3:4900]
[WARN ] 2017-08-14 20:12:29 :channel closed, clear real server channels
[INFO ] 2017-08-14 20:12:31 :connect proxy server success, [id: 0x583c40d4, L:/192.168.199.147:51754 - R:/39.108.68.3:4900]
[WARN ] 2017-08-14 20:12:31 :channel closed, clear real server channels
[INFO ] 2017-08-14 20:12:33 :connect proxy server success, [id: 0x37981ed9, L:/192.168.199.147:51761 - R:/39.108.68.3:4900]
[WARN ] 2017-08-14 20:12:33 :channel closed, clear real server channels
这是控制台打印的信息,我已经在一台阿里云服务器上部署了service端,并且配置了
[{"clientKey":"client_01","proxyMappings":[{"inetPort":8088,"lan":"127.0.0.1:8080"}]}]
然后在本地运行client端,但是访问39.108.68.3:8088却访问不到本地的一个项目。
不知道是不是我哪个地方弄得不对?
client配置
client.key=client
ssl.enable=false
ssl.jksPath=test.jks
ssl.keyStorePassword=123456
server.host=39.108.68.3
#default ssl port is 4993
server.port=4900
service配置
server.bind=0.0.0.0
server.port=4900
server.ssl.enable=false
server.ssl.bind=0.0.0.0
server.ssl.port=4993
server.ssl.jksPath=test.jks
server.ssl.keyStorePassword=123456
server.ssl.keyManagerPassword=123456
server.ssl.needsClientAuth=false
config.server.bind=0.0.0.0
config.server.port=8090
config.admin.username=
config.admin.password=
对java不懂,希望能生成exe形式的
@ffay
我使用lanproxy 代理我的ss, 因为ss-server在美国,网络访问波动比较大。导致后续请求的block很严重。 相反我在使用国内服务器进行中转,速度很快。
我分析
有时候 lanproxy-client 会认为的链接断掉,然后关闭远程channel,然而我 ss-local 这边还以为链接存在,导致请求被hold住,后续的链接被block.
后面我把 idle 调整到60s,和 ss 的改成一样。后续查看日志,发现链接被block的情况少了很多。
lanproxy-client 请求消息转发这块,对于数据的转发,我理解是一个耗时操作,应该使用 queue 来处理,这样避免 block 后续的相同 channel 的数据收发。
windows 没有停止脚本吗?并且windows多次执行启动脚本会怎么样
比如树莓派这种.也是经常需要内网穿透的场景
运行startup.sh后显示:Starting the proxy client ... started PID:
PID后面是空。
运行stop.sh后显示:PID: ERROR:The proxy client does not started.
PID后面也是空。
请问正常启动后,显示信息是什么?我启动不正常可能是哪里出了问题?
简单的看了一下现在的Web管理接口部分,基本上是通过JSON来进行数据交换的,是否考虑设计一套符合JSONAPI规范的接口呢?
lanproxy
与我以前想的功能需求高度一致,非常感谢 @ffay
非常有兴趣参与lanproxy
的后期开发。
我想把自己内网笔记本上的项目,让外网也能访问,使用这个软件可以实现吗?
本地127.0.0.1:80访问正常
外网访问的是默认的nginx页面
https://github.com/xtaci/smux
tcp 多路复用协议
我把源码clone起来,运行server的测试用例,日志server.log显示正常,但请求ip+port报404.运行mvn package -Dmaven.test.skip 生成的包运行又可以。请问我该如何本地调试。麻烦作者有空的时候可以回答。
客户端和服务端:
heartbeat_interval = 15
heartbeat_timeout = 40
比如这种的?可以自定义设置的
比如我本地192.168.1.10 端口80服务。映射到外面端口2200.
转发后,页面里内容的地址192.168.1.10变为外网地址,但是端口确还是80,没有变为2200.
这个问题怎么解决?
比较支持这个项目,很想知道这个项目后期有什么规划。
@ffay
形如ssh -R xxxx:localhost:xxxx user@xxxx -p xxx -fTNC
的功能lanproxy已经做到了 ):
还缺个类似 ssh -D localport user@proxy-server
有时候内网由于一些原因,网络可能会中断,客户端网络中断几分钟后,有没有断线重连的功能
Exception in thread "main" java.lang.ExceptionInInitializerError
at org.fengfei.lanproxy.server.ProxyServerContainer.(ProxyServerContainer.java:61)
at org.fengfei.lanproxy.server.ProxyServerContainer.main(ProxyServerContainer.java:174)
Caused by: java.lang.IllegalArgumentException: 一个公网端口只能映射一个后端信息,不能重复: 81‘
总是出现这个问题 我用了一台新linux服务器 81没有占有 一打开 就是这个问题 不能重复81
我81 端口没有用过呀 不知道怎么解决 启动不了!!!!!! 配置信息 都存在哪???我想问问
公网IP:例如1.2.3.4
公网端口:绑定8001
内网端口:绑定127.0.0.1:808(内网运行lanproxy客户端和ccproxy)
在第三台电脑IE代理设置成1.2.3.4:8001,访问内网中10.0.0.1的OA,出现OA画面,1~3秒后中断,刷新无效,再无法访问任何网页,除非去掉IE代理。
无法通过release和文档成功运行landproxy。PID为空。
操作系统
Ubuntu 16.04.1 (腾讯云) 64位
JDK版本
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-2ubuntu1.16.04.3-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)
lanproxy版本
v0.1-beta-1
如何复现
wget https://github.com/ffay/lanproxy/archive/0.1-beta-1.tar.gz
tar -zxvf 0.1-beta-1.tar.gz
cd lanproxy-0.1-beta-1/proxy-server/src/main/resources/
sudo chmod 755 startup.sh
./startup.sh
出现错误
cannot access '/home/ubuntu/project/lanproxy-0.1-beta-1/proxy-server/src/main/lib': No such file or directory
然后通过
mkdir -p /home/ubuntu/project/lanproxy-0.1-beta-1/proxy-server/src/main/lib
./startup.sh
然后控制台的输出如下
Starting the proxy server ...started
PID:
查看日志
Error: Could not find or load main class org.fengfei.lanproxy.server.ProxyServerContainer
这是启动服务端的问题。然后我在自己的PC机(Ubuntu17)上启动客户端,也是这个现象,只有命令行输出,然后PID也是空。
想问一下,是我哪里操作出了问题吗?我主要不是写java的,所以想帮忙改进也无能为力。
不过有一点建议:可以再改改readme,把过程改具体一些,还有比如哪个文件位于哪个路径最好也贴一个链接,否则只有去一层层的找。
Exception in thread "main" java.lang.ExceptionInInitializerError
at org.fengfei.lanproxy.server.ProxyServerContainer.(ProxyServerContainer.java:61)
at org.fengfei.lanproxy.server.ProxyServerContainer.main(ProxyServerContainer.java:174)
Caused by: java.lang.IllegalArgumentException: 一个公网端口只能映射一个后端信息,不能重复: 81
at org.fengfei.lanproxy.server.config.ProxyConfig.update(ProxyConfig.java:202)
at org.fengfei.lanproxy.server.config.ProxyConfig.(ProxyConfig.java:102)
at org.fengfei.lanproxy.server.config.ProxyConfig.(ProxyConfig.java:73)
... 2 more
我第一次启动 压根没有配置任何东西 我81端口也好好的 所有要用的端口 都没有冲突 没有占有!
docker?
在阿里云上的服务器部署了应用 需要访问局域网环境的es集群
192.168.0.21 9300
192.168.0.22 9300
192.168.0.25 9300
于是使用了lanproxy来进行内网穿透 以便通过外网地址来访问局域网的es服务
120.27.XXX.XXX 9300 <--> 192.168.0.21 9300
120.27.XXX.XXX 9200 <--> 192.168.0.21 9200
并且可以成功的通过如下的地址来查看集群状态
http://120.27.XXX.XXX:9200/_cluster/health?pretty=
但是实际启动工程时发现 仍是连不上 通过抓包工具发现怎么连得还是局域网地址啊
但是我代码中明明使用的是外网地址啊
.addServerAddress("120.27.XXX.XXX", 9300)
没有详细的PAI介绍吗?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.