SOCK5 用哪些种服务端好?

SOCK5 用哪些种服务端好?,第1张

sock5代理服务器-SOCKS5篇 (2008-07-05 07:41) 分类: Proxy 1.安装SOCKS5 # tar -zxvf socks5-v1.0r11.tar.gz # cd socks5-v1.0r11 # patch -p0 <socks-trans-v1.3-patch # ./configure --with-threads # make # make install 2.配置SOCKS5 # cd examples # cp socks5.conf.singlehomed /etc/socks5.conf # vi /etc/socks5.conf ======+======+======+======+======+====== permit u - - - - - set SOCKS5_BINDINFC 192.168.0.8:1080 auth - - u set SOCKS5_NOIDENT set SOCKS5_TIMEOUT 15 set SOCKS5_V4SUPPORT set SOCKS5_MAXCHILD 25 ======+======+======+======+======+====== 3.SOCKS5用户认证 # vi /etc/socks5.passwd ======+======+======+======+======+====== userA passwdA userB passwdB userC passwdC ======+======+======+======+======+====== 4.测试与运行SOCKS5 测试SOCKS5 # socks5 -f -s XXXXX: Socks5 starting at Mon Jun 21 01:23:45 2002 in normal mode 显示上面的信息表示服务配置没有问题。 启动SOCKS5 # touch /var/log/socks5 # socks5 -t -s 2>>/var/log/socks5 停止SOCKS5 # stopsocks -KILL 重新加载配置文件 # stopsocks -HUP 附录->高级配置: 1.使用非默认端口:比如为8888: # socks5 -b 8888 -t -s 2>>/var/log/socks5 相应的关服务命令为: # stopsocks -p 8888 –KILL 如果想限制只是某个IP段(192.168.0.0/255.255.255.0)可以访问,可以改成 permit - - 192.168.0. - - - 或者只允许某个IP(192.168.0.10)可以访问使用,可以改成 permit - - 192.168.0.10 - - - 2.使用自建的密码文件,比如/etc/my.passwd。这时,只要修改/etc/socks5.conf文件,在其中新加一条项数: set SOCKS5_PWDFILE /etc/my.passwd 3.指定SOCKS v5绑定的ip地址和监听的端口。如果不指定绑定的IP将使用0.0.0.0 set SOCKS5_BINDINFC 192.168.0.8:1080 4.忽略ident请求。当客户机没有运行identd时,使用SOCKS5_NOIDENT将降低超时值 set SOCKS5_NOIDENT 5.指定连接停顿最长时间(分钟),超过最大值后,socks5断开连接 set SOCKS5_TIMEOUT 15 6.让SOCKS V4 协议的请求,默认不接受 set SOCKS5_V4SUPPORT 7.指定同时存在的最大子进程数,Socks5预设为64 set SOCKS5_MAXCHILD 25 socks5.conf中permit后面的6个“-”的含义是 permit auth cmd src-host dest-host src-port dest-port [user-list] 附录,socks5 server配置文件(只要定制好自己的配置方式后,将条目写到/etc/socks5.conf中即可。有人用cp example目录下的文件方法来生成配 置文件,个人不提倡这样,反正我也出现过错,自己按格式来保证不出错) socks5.conf通常由以下几个方面的内容构成: -ban host:定义拒绝服务的客户列表 -authentication:定义Socks5服务器使用的用户认证方法 -interface:定义Socks5服务器绑定的ip地址和服务端口 -variables and flags:定义Socks5服务器运行的环境 -proxies:定义客户可以通过Socks5服务器访问的地址列表以及Socks5服务器访问这些地址的方法 -access control:定义Socks5服务器接受或拒绝客户连接的规则 下面我们分别来讲述这些条目对应的语法: ban host 语法:ban source-host source-port 说明:Socks5服务器将拒绝接受来自source-host:source-port的客户连接。 authentication 语法:auth source-host source-port auth-methods 说明:对于来自source-host:source-port的客户连接,Socks5服务器将使用 auth-methods所定义的用户认证方法。对于没有定义认证方法的客户将使用任何可以使用的认证方法。 interface 语法:interface hostpatern portpattern interface-address 说明:来自source-host:source-port的客户连接由interface-address处理;目的地址为source-host:source-port的客户连接由Socks5 代理服务器从 interface-address发出连接请求。 variables 语法:set variable value 说明:定义Socks5运行参数,Socks5有以下一些常用的运行参数: SOCKS5_BINDINTFC hostort hostort 指定socks5运行的主机和端口号,用于代替缺省的端口。忽略时,socks5用0.0.0.0作为主机值。 SOCKS5_CONFFILE filename Filename 指定配置文件。在许多系统中,缺省是/etc/socks5.conf。在运行socks5之前,设置这个变量。如果有多个socks5 daemon运行,为每个daemon使用不同的配置文件。 SOCKS5_DEMAND_IDENT 当客户没有响应ident 请求时,认证失败。使用SOCKS5_DEMAND_IDENT确认每个连接有一个关联的用户名。 SOCKS_ENCRYPT 如果可能的话,请求下一个socks5进程加密数据。SOCKS5_ENCRYPT 仅仅在编译socks5时包括了GSS-API认证时,才有意义。 SOCKS5_FORCE_ENCRYPT 当认证方式支持加密时,强迫客户加密数据。 SOCKS5_IDENTFILE filename Filename指定存储ident信息的文件名。在许多系统中,缺省是/tmp/socks5.ident。当有多个socks5 daemon运行时,SOCKS5_IDENTFILE非常有用。 SOCKS5_MAXCHILD val val指定同时存在的最大子进程数。Socks5预设为64。可以降低预设置。不能超过64。Socks5运行在线程模式时,忽略此参数。当运行在oneshot或inet d模式时,此参数不发生作用。 SOCKS_NOIDENT 忽略ident请求。当客户机没有运行identd时,使用SOCKS5_NOIDENT将降低超时值。 SOCKS_NOINTCHK 请求下一个socks5进程执行没有完整检查的代理请求。只有在编译时加入GSS-API认证时,SOCKS5_NOINTCHK才发生作用。 SOCKS_NONETMASKCHECK 指示daemon忽略检查主机的子网掩码。缺省时,daemon检查掩码,如果在同一子网时,在检查配置文件之前,直接连接。 SOCKS5_REVERSEMAP 总是试图影射地址到主机名。缺省时,socks5只有当主机名或域名在配置文件中使用时才影射。设置后,log文件将纪录主机名,这将降低性能。 SOCKS5_SERVICENAME 总是影射端口号到服务名。缺省时,socks5只有当服务名在配置文件中使用时才影射。设置后,log文件将纪录服务名,这将降低性能。 SOCKS5_PASSWD [password] 当socks5 daemon连接到其它socks服务器时,如果采用Username/Password 认证,用它来指定密码。 SOCKS5_PIDFILE filename 指定存储socks5进程ID的文件名。Socks5缺省存贮PID在/tmp/socks5.pid。你可以用—bindintfc参数或设置SOCKS5_BINDINTFC环境变量运行socks5在 不同于缺省端口的其它端口。当运行在不同于缺省端口的其它端口时,socks5存贮PID在/tmp/socks5.pid-port。 SOCKS5_PWDFILE filename 指定密码文件。在许多系统中,缺省是/etc/socks5.passwd。 SOCKS5_TIMEOUT minutes 指定连接停顿最长时间。超过最大值后,socks5断开连接。忽略此值时,缺省是15。 SOCKS5_UDPPORTRANGE port1-port2 指定一个Socks5用来发送UDP包的UDP端口范围。 SOCKS5_USER [user id] 当socks5 daemon连接到其它socks server时,如果采用Username/Password认证,用此变量指定用户名。 SOCKS5_V4SUPPORT 缺省时,socks5只接受SOCKS5协议(rfc 1928)的请求。设此变量后,socks5将接受SOCKS V4 协议的请求。 proxies 语法:proxy-type dest-host dest-port proxy-list 说明:当客户请求的目的为dest-host:dest-port时,Socks5将使用proxy-list中的代理服务器请求数据。 access control 语法:permit auth cmd src-host dest-host src-port dest-port [user-list] deny auth cmd src-host dest-host src-port dest-port [user-list] 说明:通过这两条语句所定义的规则来进行客户访问控制。 我们再对以上语法作进一步的解释: host的表示方法: -:表示任意主机 n1.:表示n1.0.0.0/255.0.0.0 n1.n2.:表示n1.n2.0.0/255.255.0.0 n1.n2.n3.:表示n1.n2.n3.0/255.255.255.0 .domain.name:表示主机名以.domain.name结尾的主机 some.domain.name:表示主机名为some.domain.name的主机 port的表示方法 -:表示任意端口 service name:用/etc/service中定义的服务名来表示,如telnet port number:直接指定数字端口,如80 [port_start,port_end]:指定一个端口范围,如[1024,6000]表示从端口1024到6000,(1024,6000)表示从端口1025到5999 auth的值 n:无用户认证 u:使用username/password用户认证方法 k:使用Kerberos用户认证方法 -:使用任何可用的用户认证方法 cmd的值 -:任何命令 c:connect b:bind u:UDP p:ping t:traceroute user的值 -:任何用户 proxy的值 socks5: Socks 5 socks4: SOCKS 版本4 noproxy:不使用代理而直接连接 server的值 host: 指定服务器的hostname,使用缺省服务端口 hostort:指定服务器的hostname和该服务的监听端口#!/bin/bash RETVAL=0 prog="socks5" start(){ #FILE=/tmp/socks5.pid-1080 #if [ $FILE ] /usr/local/bin/socks5 -t -s 2>/var/log/socks5 RETVAL=$? return $RETVAL } stop(){ echo -n -e $"Stopping $prog: \t[ OK ]\n" /usr/local/bin/stopsocks -KILL RETVAL=$? return $RETVAL } reload(){ echo -n -e $"Reloading configuration:\t[ OK ]\n" PID=`cat /tmp/socks5.pid-1080` kill -HUP -$PID RETVAL=$? return $RETVAL } restart(){ stop start } # See how we were called. case "$1" in start) start stop) stop status) status $prog restart) restart reload) reload *) echo $"Usage: $0 {start|stop|status|restart|reload}" RETVAL=1 esac

麻烦采纳,谢谢!

一般使用ingress都是代理http流量,但是有些场景希望代理tcp流量,例如:不想占用过多的公网IP。

开源的ingress对tcp支持不是很好,主要原因在于 k8s的Ingress没有给tcp留下插入点 ,可以通过ingress定义 kubectl explain ingress.spec.rules 证实。

ingress http代理简单来说,暴露一个http服务,根据host和path转发用户请求到真正的svc(用户请求带有host)。tpc代理就是暴露一堆端口号,不同的端口对应不同的后端svc。

官网 暴露TCP服务 章节,介绍可以通过 --tcp-services-configmap 暴露tcp服务,具体怎么使用没有实践之前一直不是很理解。

通过chart安装包可以获取nginx-ingress-controller deployment启动配置。

deploy脚本示例

tcp的相关配置通过configmap存储,需要注意data属性,controller会解析它。

登陆controller的Pod,直接查看nginx.conf,在最后一行,可以看到nginx代理配置。直接通过 curl localhost:8080 ,可以正常访问服务。

nginx.conf示例

整体架构可以参考

https://blog.csdn.net/shida_csdn/article/details/84032019

NGINXController有个channel,所有更新事件通过watch传到这个channel;同时channel通过queue绑定NGINXController的syncIngress,用于处理变更事件。

有关watch的初始化在store.go中实现,当key的名称为tpcconfigmap时,会触发更新。

internal/ingress/controller/store/store.go

1)在tcp configmap手动新增配置,ingress contorller svc会不会动态改变?

更多文章见: http://huiwq1990.github.io/

HP-Socket是国人开发的一套高性能的TCP/UDP/HTTP网络通信框架,包含了服务端、客户端以及Agent组件,可用于各种不同应用场景的通信系统,并且提供了C/C++、C#、Delphi、E、Java、Python等编程语言接口。 HP-Socket 对通信层完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。

为了让使用者能方便快速地学习和使用 HP-Socket,迅速掌握框架的设计思 想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、PACK 模型示例、性能测试示例以及其它编程语言示例)。HP-Socket 目前支持 Windows 和 Linux 平台。

以下来自官网提供的文档:

应用程序可以根据不同的容量要求、通信规模和资源状况等现实场景调整 HP-Socket 的 各项性能参数(如:工作线程的数量、缓存池的大小、发送模式和接收模式等),优化资源 配置,在满足应用需求的同时不必过度浪费资源。

提供官方文档的目录截图,由于文档非常详细,就不一一介绍了

下面是一张官方提供的demo项目结构,除了C/C++,还提供了C#、Delphi、E,详细的内容都在github的仓库中,感兴趣的可以去看看。

HP-Socket凭借着通用性、易用性、高性能、伸缩性可以应用到各种场景,而且官方提供了大量的Demo可供学习,以及非常详细的PDF文档,除了支持主流的编程语言,还支持E(易语言)。如果你有更好的推荐或者建议欢迎到评论区留言分享!


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/435169.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-28
下一篇2023-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存