【发布时间】:2021-11-11 19:22:21
【问题描述】:
通常,使用中配置的 IPC 仅限于 localhost (127.0.01),但出现了用户需要 IPC 连接才能从远程 IP 额外工作的情况。
如果在对 bind(2) 的调用中,我使用远程 IP 地址填充相关结构,我是否仍然可以让其他本地进程连接到该端口(从本地主机)?
【问题讨论】:
通常,使用中配置的 IPC 仅限于 localhost (127.0.01),但出现了用户需要 IPC 连接才能从远程 IP 额外工作的情况。
如果在对 bind(2) 的调用中,我使用远程 IP 地址填充相关结构,我是否仍然可以让其他本地进程连接到该端口(从本地主机)?
【问题讨论】:
您不要使用远程 IP 地址呼叫bind。那不会做你认为它会做的事情。
相反,您需要绑定到 INADDR_ANY,然后断开任何不是来自允许的 IP 地址的传入连接。
一个更好的方法是也有一个防火墙规则 (iptables),它将阻止传入的连接到您的侦听端口,这些连接不在已批准的远程 IP 列表中。
当您accept 连接时,请检查从该调用返回的远程地址。如果套接字不是来自 127.0.0.1 或允许的远程 IP 地址,则关闭套接字。
理想情况下,您还可以使用类似 SSL 的安全验证、身份验证令牌验证或 IP 地址以外的其他方式来验证连接到您的节点的真实性。
【讨论】: