LightTunnel

支持TCP、HTTP、HTTPS穿透。

0x01 文件说明

服务器端文件

lts.exe

服务器端windows可执行文件

lts.sh

服务器端*nix可执行文件

lts.jar

服务器端jvm可执行文件

lts.ini

服务器端最小配置文件

lts_full.ini

服务器端完整配置文件

lts.jks

服务器端SSL证书

客户端文件

ltc.exe

客户端windows可执行文件

ltc.sh

客户端*nix可执行文件

ltc.jar

客户端jvm可执行文件

ltc.ini

客户端最小配置文件

ltc_full.ini

客户端完整配置文件

ltc.jks

客户端SSL证书

0x02 启动命令

windows系统

服务器端

  1. .\lts.exe -c lts.ini

客户端

  1. .\ltc.exe -c ltc.ini

*nix系统

服务器端

  1. ./lts.sh -c lts.ini

客户端

  1. ./ltc.sh -c ltc.ini

jvm

服务器端

  1. java -jar lts.jar -c lts.ini

客户端

  1. java -jar ltc.jar -c ltc.ini

0x03 配置文件

服务器端完整配置参考

  1. [basic]
  2. # 线程数,值为-1时不限制线程数量
  3. boss_threads = -1
  4. worker_threads = -1
  5. # 绑定IP地址
  6. bind_addr = 0.0.0.0
  7. # 绑定端口号
  8. bind_port = 5080
  9. # 验证Token
  10. auth_token = tk123456
  11. # TCP隧道允许使用的端口
  12. allow_ports = 10000,10001,10002-50000
  13. # tunnel by ssl
  14. # ssl绑定端口号,为空时不启用http服务
  15. ssl_bind_port = 5443
  16. # ssl jks证书文件,加载失败时会默认使用程序内建的证书
  17. ssl_jks = lts.jks
  18. ssl_key_password = ltspass
  19. ssl_store_password = ltspass
  20. # Http和Https共用Registry
  21. http_https_share_registry = true
  22. # tunnel by http
  23. # http服务绑定端口,为空时不启用http服务
  24. http_port = 8080
  25. # tunnel by https
  26. # https服务绑定端口,为空时不启用https服务
  27. https_port = 8443
  28. # https jks证书文件,加载失败时会默认使用程序内建的证书
  29. https_jks = lts.jks
  30. https_key_password = ltspass
  31. https_store_password = ltspass
  32. # 静态文件,启用了http或https服务时有效
  33. # 路径列表
  34. plugin_sf_paths = /var/www/html,/usr/shard/nginx/html
  35. # 需要数量静态文件的host列表
  36. plugin_sf_hosts = static1.yourdomain.com,static2.yourdomain.com
  37. # Http Rpc绑定端口,为空时不启用Http Rpc
  38. http_rpc_port = 5081
  39. # Http Rpc登录用户,没有配置时不需要登录
  40. http_rpc_username = guest
  41. http_rpc_password = guest
  42. # 日志
  43. # 日志等级由低到高 ALL, TRACE, DEBUG, INFO, WARN, ERROR, OFF
  44. log_level = INFO
  45. # 日志文件,为空时不保存日志文件
  46. log_file = ./logs/lts.log
  47. # 保持的日志文件数量
  48. log_count = 3
  49. # 单个日志文件大小,支持KB、MB、GB单位
  50. log_size = 1MB

客户端完整配置参考

  1. [basic]
  2. # 线程数,值为-1时不限制线程数量
  3. worker_threads = -1
  4. # 服务器地址
  5. server_addr = 127.0.0.1
  6. # 服务器端口
  7. server_port = 5080
  8. # 验证Token需要与服务器一致
  9. auth_token = tk123456
  10. # ssl jks证书文件,当隧道列表中有使用了ssl时生效,加载失败时会默认使用程序内建的证书
  11. ssl_server_port = 5443
  12. ssl_jks = ltc.jks
  13. ssl_store_password = ltcpass
  14. # Http Rpc绑定端口,为空时不启用Http Rpc
  15. http_rpc_port = 5082
  16. # Http Rpc登录用户,没有配置时不需要登录
  17. http_rpc_username = guest
  18. http_rpc_password = guest
  19. # 日志
  20. # 日志等级由低到高 ALL, TRACE, DEBUG, INFO, WARN, ERROR, OFF
  21. log_level = INFO
  22. # 日志文件,为空时不保存日志文件
  23. log_file = ./logs/lts.log
  24. # 保持的日志文件数量
  25. log_count = 3
  26. # 单个日志文件大小,支持KB、MB、GB单位
  27. log_size = 1MB
  28. # 隧道列表
  29. # 命名空间相同的隧道会被覆盖掉
  30. [tcp]
  31. # 隧道类型,支持tcp,http,https
  32. type = tcp
  33. # 是否使用ssl连接,true|false
  34. ssl = true
  35. # 本地地址
  36. local_addr = 192.168.1.1
  37. # 本地端口
  38. local_port = 80
  39. # 隧道服务器端口,端口号设置成0时,为随机端口
  40. remote_port = 10080
  41. [tcp-random]
  42. type = tcp
  43. ssl = true
  44. local_addr = 192.168.1.1
  45. local_port = 80
  46. remote_port = 0
  47. [http]
  48. # 隧道类型,支持tcp,http,https
  49. type = http
  50. # 是否使用ssl连接,true|false
  51. ssl = true
  52. # 本地地址
  53. local_addr = 192.168.1.1
  54. # 本地端口
  55. local_port = 80
  56. # 自定义域名,需要域名DNS设置指向服务器地址
  57. host = t1.tunnel.lo
  58. # 代理请求头设置,其中$remote_addr为魔法变量,最终会替换成用户的真实IP
  59. pxy_header_set_X-Real-IP = $remote_addr
  60. # 代理请求头新增
  61. pxy_header_add_X-User-Agent = LightTunnel
  62. # 登录验证信息,没有配置时不需要登录
  63. auth_realm = .
  64. auth_username = guest
  65. auth_password = guest
  66. [https]
  67. # 隧道类型,支持tcp,http,https
  68. type = https
  69. # 是否使用ssl连接,true|false
  70. ssl = true
  71. # 本地地址
  72. local_addr = 192.168.1.1
  73. # 本地端口
  74. local_port = 80
  75. # 自定义域名,需要域名DNS设置指向服务器地址
  76. host = t1.tunnel.lo
  77. # 代理请求头设置,其中$remote_addr为魔法变量,最终会替换成用户的真实IP
  78. pxy_header_set_X-Real-IP = $remote_addr
  79. # 代理请求头新增
  80. pxy_header_add_X-User-Agent = LightTunnel
  81. # 登录验证信息,没有配置时不需要登录
  82. auth_realm = .
  83. auth_username = guest
  84. auth_password = guest

0x04 自定义SSL证书生成

生成服务端证书

  1. keytool -genkey \
  2. -alias ltsalias \
  3. -keysize 2048 \
  4. -validity 3650 \
  5. -keyalg RSA \
  6. -dname "CN=LTS" \
  7. -keypass ltspass \
  8. -storepass ltspass \
  9. -keystore lts.jks
  10. keytool -importkeystore \
  11. -srckeystore lts.jks \
  12. -destkeystore lts.jks \
  13. -deststoretype pkcs12
  14. keytool -export \
  15. -alias ltsalias \
  16. -keystore lts.jks \
  17. -storepass ltspass \
  18. -file lts.cer

生成客户端证书

  1. keytool -genkey \
  2. -alias ltcalias \
  3. -keysize 2048 \
  4. -validity 3650 \
  5. -keyalg RSA \
  6. -dname "CN=LTC" \
  7. -keypass ltcpass \
  8. -storepass ltcpass \
  9. -keystore ltc.jks
  10. keytool -importkeystore \
  11. -srckeystore ltc.jks \
  12. -destkeystore ltc.jks \
  13. -deststoretype pkcs12
  14. keytool -import -trustcacerts \
  15. -alias ttsalias \
  16. -file lts.cer \
  17. -storepass ltcpass \
  18. -keystore ltc.jks