如何只允许来自本地主机的TCP连接
How to allow TCP connections from local host only
我希望能够仅从本地主机(从127.0.0.1
和my_local_ip
)获得特定端口上的请求;
我试了如下:
int localhost = (127 << 24) + 1; // 127.0.0.1
sock_address.sin_addr.s_addr = htonl(localhost);
这让我只与127.0.0.1
连接,而不是从实际的本地ip。我也试过:
char hostName[128] = "";
struct hostent *pHost = 0;
gethostname(hostName, sizeof(hostName));
pHost = gethostbyname(hostName);
memcpy(&sock_address.sin_addr, pHost->h_addr_list[0], pHost->h_length);
我不能连接到127.0.0.1
,我可以连接到本地ip,但远程请求也被回答
我做错了什么?还有别的办法吗?
谢谢!
从您的应用程序中,您只能设置端口将绑定到哪些接口。在第一种情况下,您将它绑定到环回接口(lo
, IP地址127.0.0.1
),这意味着只有您可以连接到它,因为只有您自己的主机才能到达该接口。如果您将端口绑定到外部接口,例如IP地址为10.1.2.3
的eth0
,如果没有防火墙阻止连接请求,外部主机可能能够连接到该端口。
做你想做的唯一的方法是通过设置包过滤器(防火墙)你的本地机器拒绝/丢弃连接请求(SYN包)到特定的端口来自IP地址不被识别为你自己的。在这种情况下,远程主机会认为您的TCP端口已关闭或阻塞,这取决于您如何设置过滤器。
嗯…您也可以接受来自任何接口的任何连接,如果远程主机不是您自己的IP地址之一,则立即关闭它,但出于某种原因,我猜这是您真正想要的。
相关文章:
- 通过套接字[TCP]传输数据 如何在C / C ++中打包多个整数并使用send() recv()传输数据
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- 是否可以用"iostream"包装现有的TCP/OOpenSSL会话
- Cuda C++:设备上的Malloc类,并用来自主机的数据填充它
- EvtExportLogneneneba API正在将远程计算机的事件日志保存到远程PC本身.如何将其保存到主机
- 我可以与 python 服务器而不是 c++ 客户端建立 tcp/ip 套接字吗?
- 提升 Asio TCP 服务器 处理多个客户端
- 通过TCP的PvP通信问题
- 如何停止 CLR 主机?
- C++ boost::asio::ip::tcp::acceptor 有时不接受连接器?
- 如何强制 Thrift 仅接受来自本地主机的连接
- AWS IoT 开发工具包:通过 TCP 端口 443 使用 MQTT
- 计算出有多少客户端可以连接到我正在使用的一些tcp服务器代码
- 库达如何将字符**从内核复制到主机
- Poco::Net::FTPClientSession 在 open() 方法上挂起 129 秒,如果 ftp 主机不存
- 通过单独的 tcp 流建立 http 连接
- 如何使用 Boost tcp::iostream 指定方案、主机和端口
- 如何在一台本地计算机/主机上对简单的 TCP 客户端/服务器进行单元测试
- 如何只允许来自本地主机的TCP连接
- C/ c++ Posix tcp/ip网络客户端,只连接到本地主机