【问题标题】:Enable incoming connections from specified IP-address only仅启用来自指定 IP 地址的传入连接
【发布时间】:2011-06-02 13:00:35
【问题描述】:

我有一个在特定 IP 端口上打开了侦听套接字的服务器应用程序。 如何允许套接字仅启用来自一个指定 IP 地址的传入连接?

【问题讨论】:

    标签: c++ c linux sockets


    【解决方案1】:

    您必须使用某些防火墙软件来限制对该端口的传入请求,或者关闭您不想服务的已接受连接(基于accept 返回的套接字地址)。

    可能有一些库可以为您执行此操作,但套接字 API 无法自动执行此操作。

    【讨论】:

      【解决方案2】:

      当您接受连接时,您可以在接受后检查 sockaddr,看看它是否来自正确的地址。如果没有,您立即关闭接受返回的连接套接字。

      【讨论】:

      • 我的意思是只接受来自指定IP地址的对等主机的连接!
      • @andrey:我知道,我误读了你的问题。我已经改变了答案。
      • @hackworks:是的,但无论如何,重点是没有实际意义的。我回答错了问题。
      • Win32 API 有一个很好的方法来在接受中注册一个函数。根据函数返回的内容,accept 成功或失败。参考链接:msdn.microsoft.com/en-us/library/ms741513(v=vs.85).aspx
      【解决方案3】:

      你必须用accept()来接受连接,如果你不想要它就关闭它(如果你的协议支持的话,可能会发送一个错误响应)。这对于大多数应用程序来说已经足够了。

      【讨论】:

        【解决方案4】:

        试试:libauth,这是一种健壮的访问控制方式http://linux.die.net/man/3/libauth

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-06-28
          • 1970-01-01
          • 2011-08-27
          • 1970-01-01
          • 2014-08-23
          • 2010-11-17
          • 1970-01-01
          相关资源
          最近更新 更多