代码之家  ›  专栏  ›  技术社区  ›  Barun

使用原始套接字的自定义响应[重复]

c#
  •  0
  • Barun  · 技术社区  · 15 年前

    目前我正在做一个设计和实现防火墙的项目。一切正常。这里我过滤通过TCP端口的所有数据包。但是如果一个页面被阻塞,我需要发送一个自定义页面。比如“你的页面被管理员阻止了”。我不知道怎么做。我能用吗 raw sockets ?如果是,请告诉我,怎么做?但正如我所知,在Windowsxpsp2及更高版本上,原始套接字不适用于发送,还有其他解决方案吗?

    编辑:我用C++来为一个IP地址过滤器创建一个DLL。然后我把它导入到我的C++程序中。IP地址阻塞正常。但当浏览器找不到页面时,我的客户需要自定义消息。

    0 回复  |  直到 15 年前
        1
  •  0
  •   Peter Mortensen Pieter Jan Bonestroo    15 年前

    如果您有选择地允许访问某些网页,那么实际上您就像一个代理。如果你想用一个错误页面来响应客户,你就需要表现得更像一个错误页面。

    发出HTTP请求的浏览器将期望在其打开的同一连接上得到响应。为了返回一个“被阻止”的页面,您需要确定连接是否在您不希望用户去的某个地方,如果没有,则返回一个有效的HTTP响应(即使该响应是一个HTTP错误,如“403被禁止”或更适合于代理的某个错误)。 在同一个连接上 .

    如果你在连接被打开之前就阻塞了,例如:阻塞对某些IP地址的访问,那么你就有点被卡住了。你能做的最多的就是 ICMP 显示主机不可用的消息。如果可以,您至少需要接受连接,接受传入的请求,并用错误消息答复。再少一点,浏览器通常也不知道该怎么做。

        2
  •  0
  •   Ken D    15 年前

    嘿,既然你在低层工作

    您不能通过修改HTTP头来重定向请求吗?