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

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

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

    因为前几天公司的登录服务器遭到了 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
    snnn
        1
    snnn  
       2017-02-04 20:16:31 +08:00 via Android
    很赞!
    jyf007
        2
    jyf007  
       2017-02-04 22:22:43 +08:00 via Android
    我提一个 BBR 怎么加入 BSD 内核?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3207 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 11:59 · PVG 19:59 · LAX 04:59 · JFK 07:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.