因为前几天公司的登录服务器遭到了 DDOS 攻击。今天抽空写了一个 TCP 代理的功能,计划放到业务服务器前面,分散业务入口。
因为功能简单,而且后期考虑定制一些防护和统计功能,所以没有使用 nginx 的 tcp proxy 。或者其他成熟的代理方法。
https://github.com/miwoow/tcpproxyforbsd
刚完成,只是在本机上使用 nc 测试了一下,基本可用。后期会持续优化。
因为使用了 freebsd 的 kqueue 。所以需要在 freebsd 上运行。
后端服务器得到客户端真实 IP 地址的方法是,代理服务器一旦和后台服务器建立连接,马上发给后台服务器一个 32 位整数。这个 32 位整数就是客户端真实 IP 地址的网络字节序。
所以,后台服务器对于每个连接过来的 tcp 客户端,需要先接收一个 32 位的整数取得客户端真实 IP 地址。
1
snnn 2017-02-04 20:16:31 +08:00 via Android
很赞!
|
2
jyf007 2017-02-04 22:22:43 +08:00 via Android
我提一个 BBR 怎么加入 BSD 内核?
|