0

我正在 Linux 中进行套接字编程。有个问题。我们怎么可能允许特定的 IP 地址连接到我们的服务器

例如:

  • 允许 10.0.0.1
  • 拒绝 10.0.0.1

我专门谈论这行代码,我们将INADDR_ANY填充到我们的sockaddr_in 结构中

serv_addr.sin_addr.s_addr = INADDR_ANY;

其余代码仅供参考:

struct sockaddr_in serv_addr;


serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = INADDR_ANY; // Here's my question!!
serv_addr.sin_port = htons(portno);
4

1 回答 1

1

它被称为防火墙。在 linux 上,您使用iptables(8).

如果您想在您的应用程序中执行此操作,则无法根据对等方的地址有选择地监听(您只能根据您的地址有选择地监听,并且如果您在具有“弱端系统模型”的 Linux 上)检查您是否理解这意味着什么!---侦听特定地址可能不会完全达到您的预期,并且不是丢弃来自不受信任接口的数据包的安全方法。)。

相反,监听 INADDR_ANY,然后调用getpeername(2)接受的 fd,验证它,如果它与应用程序的过滤器不匹配,则关闭连接。

于 2013-06-04T17:10:13.533 回答