首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  FreeBSD

简单写了个 TCP 代理,可以看看(freebsd 上可用)

  •  
  •   liamxd · 2017-02-04 13:54:19 +08:00 · 1297 次点击
    这是一个创建于 470 天前的主题,其中的信息可能已经有所发展或是发生改变。

    因为前几天公司的登录服务器遭到了 DDOS 攻击。今天抽空写了一个 TCP 代理的功能,计划放到业务服务器前面,分散业务入口。

    因为功能简单,而且后期考虑定制一些防护和统计功能,所以没有使用 nginx 的 tcp proxy 。或者其他成熟的代理方法。

    https://github.com/miwoow/tcpproxyforbsd

    刚完成,只是在本机上使用 nc 测试了一下,基本可用。后期会持续优化。

    因为使用了 freebsd 的 kqueue 。所以需要在 freebsd 上运行。

    后端服务器得到客户端真实 IP 地址的方法是,代理服务器一旦和后台服务器建立连接,马上发给后台服务器一个 32 位整数。这个 32 位整数就是客户端真实 IP 地址的网络字节序。

    所以,后台服务器对于每个连接过来的 tcp 客户端,需要先接收一个 32 位的整数取得客户端真实 IP 地址。

    第 1 条附言  ·  2017-02-07 13:29:40 +08:00
    添加了对 Linux 的支持。

    Linux 下使用 epoll 来做多路复用。
    2 回复  |  直到 2017-02-04 22:22:43 +08:00
        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 内核?
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   鸣谢   ·   2798 人在线   最高记录 3541   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 19ms · UTC 01:31 · PVG 09:31 · LAX 18:31 · JFK 21:31
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1