如果我将套接字侦听器绑定到远程 IP,我仍然可以从本地主机连接到套接字吗?
If I bind a socket listener to a remote IP, can I still connect to the socket from localhost?
通常情况下,使用中配置的 IPC 仅限于 localhost
(127.0.01
),但出现了用户要求 IPC 连接从远程 IP 额外工作的情况。
如果在对 bind(2) 的调用中,我使用远程 IP 地址填充相关结构,我是否仍然能够让其他本地进程连接到该端口(从本地主机)?
我不确定这是否与 How to bind a socket to multiple interfaces
相同
您不要使用远程 IP 地址呼叫bind
。那不会像你认为的那样。
相反,您需要绑定到 INADDR_ANY,然后丢弃任何不是来自允许的 IP 地址的传入连接。
一个更好的方法是也有一个防火墙规则 (iptables),它会阻止不是来自批准的远程 IP 列表的到您的侦听端口的传入连接。
当您 accept 连接时,检查从该调用返回的远程地址。如果不是来自 127.0.0.1 或允许的远程 IP 地址,请关闭套接字。
理想情况下,您还拥有类似 SSL 的安全验证、身份验证令牌验证或 IP 地址以外的其他东西来验证连接到您的节点的真实性。
通常情况下,使用中配置的 IPC 仅限于 localhost
(127.0.01
),但出现了用户要求 IPC 连接从远程 IP 额外工作的情况。
如果在对 bind(2) 的调用中,我使用远程 IP 地址填充相关结构,我是否仍然能够让其他本地进程连接到该端口(从本地主机)?
我不确定这是否与 How to bind a socket to multiple interfaces
相同您不要使用远程 IP 地址呼叫bind
。那不会像你认为的那样。
相反,您需要绑定到 INADDR_ANY,然后丢弃任何不是来自允许的 IP 地址的传入连接。
一个更好的方法是也有一个防火墙规则 (iptables),它会阻止不是来自批准的远程 IP 列表的到您的侦听端口的传入连接。
当您 accept 连接时,检查从该调用返回的远程地址。如果不是来自 127.0.0.1 或允许的远程 IP 地址,请关闭套接字。
理想情况下,您还拥有类似 SSL 的安全验证、身份验证令牌验证或 IP 地址以外的其他东西来验证连接到您的节点的真实性。