歡迎您光臨本站 註冊首頁

ToughProxy V1.0.0.1 發布,面向運營的代理伺服器軟體

←手機掃碼閱讀     admin @ 2019-06-24 , reply:0

ToughProxy 開源代理伺服器首個版本 V1.0.0.1 發布了。 ToughProxy 是一個代理伺服器, 目標是提供一個綜合性的代理服務軟體,支持 socks5,socks4, http, https代理協議, 針對 Socks5 提供完善的認證機制,以及提供流量控制策略,訪問控制策略等。

碼雲項目地址:https://gitee.com/jamiesun/ToughProxy

基礎功能清單

  • Socks5 代理(支持UDP穿透)
  • Socks4 代理
  • Http代理(未完成)
  • Https代理(未完成)
  • Socks5 Radius 認證, 支持下發限速擴展
  • Socks5 資料庫認證
  • 認證用戶管理,批量創建用戶支持,用戶組支持
  • 全局限速和單個連接限速
  • 連接數控制
  • 源地址,目標地址,域名訪問控制
  • 實時連接會話查詢,實時流量統計
  • 連接日誌存檔查詢,可自定義保存天數
  • Http APi 提供

快速開始

注意, linux 下提供了快捷安裝腳本,請參考安裝包內的 linux-installer.md

系統環境依賴

  • 操作系統:支持跨平台部署 (Linux,Windows,MacOS等)
  • java 版本: 1.8或更高
  • 資料庫伺服器:MySQL/MariaDB

資料庫初始化

資料庫的安裝配置請自行完成,首先確保你的資料庫伺服器已經運行

運行創建資料庫腳本以及創建專用用戶


create database toughproxy DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL ON toughproxy.* TO proxyuser@'127.0.0.1' IDENTIFIED BY 'proxypwd' WITH GRANT OPTION;FLUSH PRIVILEGES;

創建資料庫表


USE `toughproxy`;
-- 表 toughproxy.ts_acl 結構
CREATE TABLE IF NOT EXISTS `ts_acl` (
`id` bigint(20) unsigned NOT NULL,
`priority` int(10) unsigned NOT NULL DEFAULT '0',
`status` int(10) unsigned NOT NULL DEFAULT '1',
`hits` int(10) unsigned NOT NULL DEFAULT '0',
`policy` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`src` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`target` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`domain` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- 表 toughproxy.ts_config 結構
CREATE TABLE IF NOT EXISTS `ts_config` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`type` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL,
`name` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL,
`value` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`remark` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- 表 toughproxy.ts_group 結構
CREATE TABLE IF NOT EXISTS `ts_group` (
`id` bigint(20) unsigned DEFAULT NULL,
`name` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`status` int(10) unsigned NOT NULL DEFAULT '1',
`up_limit` int(10) unsigned DEFAULT NULL,
`down_limit` int(10) unsigned DEFAULT NULL,
`max_session` int(10) unsigned DEFAULT NULL,
`remark` varchar(512) COLLATE utf8mb4_unicode_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- 表 toughproxy.ts_user 結構
CREATE TABLE IF NOT EXISTS `ts_user` (
`id` bigint(20) unsigned DEFAULT NULL,
`group_id` bigint(20) unsigned DEFAULT NULL,
`group_policy` int(10) unsigned DEFAULT NULL,
`realname` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`username` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`password` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`mobile` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`email` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`status` int(10) unsigned DEFAULT NULL,
`up_limit` int(10) unsigned DEFAULT NULL,
`down_limit` int(10) unsigned DEFAULT NULL,
`max_session` int(10) unsigned DEFAULT NULL,
`create_time` timestamp NULL DEFAULT NULL,
`update_time` timestamp NULL DEFAULT NULL,
`expire_time` timestamp NULL DEFAULT NULL,
`remark` varchar(512) COLLATE utf8mb4_unicode_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

運行主程序


java -jar -Xms256M -Xmx1024M /opt/toughproxy-latest.jar --spring.profiles.active=prod

注意 jar 文件(toughproxy-latest.jar)的路徑

Linux systemd 服務配置

/opt/application-prod.properties


# web訪問埠
server.port = 1823

# 日誌配置,可選 logback-prod.xml 或 logback-dev.xml, 日誌目錄為 /var/toughproxy/logs
logging.config=classpath:logback-prod.xml
# 資料庫配置
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/toughproxy?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8
&allowMultiQueries
=true
spring.datasource.username=proxyuser
spring.datasource.password=proxypwd
spring.datasource.max-active=120
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
/usr/lib/systemd/system/toughproxy.service
[Unit]
Description=toughproxy
After=syslog.target
[Service]
WorkingDirectory=/opt
User=root
LimitNOFILE=65535
LimitNPROC=65535
Type=simple
ExecStart=/usr/bin/java -server -jar -Xms256M -Xmx1024M /opt/toughproxy-latest.jar --spring.profiles.active=prod
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target

如果了解 spring systemd和配置原理,可以根據自己的實際需要進行修改

通過以下指令啟動服務


systemctl enable toughproxy
systemctl start toughproxy

[admin ]

來源:OsChina
連結:https://www.oschina.net/news/107695/toughproxy-1-0-0-1-released
ToughProxy V1.0.0.1 發布,面向運營的代理伺服器軟體已經有411次圍觀

http://coctec.com/news/all/show-post-208020.html