仅启用来自指定 IP 地址的传入连接
Posted
技术标签:
【中文标题】仅启用来自指定 IP 地址的传入连接【英文标题】:Enable incoming connections from specified IP-address only 【发布时间】:2011-06-02 13:00:35 【问题描述】:我有一个在特定 IP 端口上打开了侦听套接字的服务器应用程序。 如何允许套接字仅启用来自一个指定 IP 地址的传入连接?
【问题讨论】:
【参考方案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
【讨论】:
以上是关于仅启用来自指定 IP 地址的传入连接的主要内容,如果未能解决你的问题,请参考以下文章
怎么解决:无法启动INTERNET连接共享。一个已经用IP地址配置的LAN连接需要自动IP地址
Oracle JDBC 连接被拒绝(仅来自 jdbc 代码)