如何保护TCP连接 – nodejs?
我有以下sample code
在tcp server
var server = net.createServer(); server.on('connection', function (socket) { if(restrictedIP == sock.remoteAddress){ //How to close the particular connection safely without //affecting other connections } socket.on('data', function(data) { console.log(data); }); socket.on('close', function(data) { console.log('client disconnected'); }); }); server.listen(3000, '127.0.0.1');
注意:我有一个检查来validation客户端/服务器ip(第三行)。
问题:
-
这个逻辑听起来不错,可以validation客户端/服务器。
-
主要的是,如何从受限的IP地址closures特定的连接(第四行 – 评论)
场景:
我有两个服务器,一个是客户端服务器,它是express / http服务器,可以命名为server1-express
,另外一个是命名为server2-tcp
tcp服务器。
-
server1-express
服务器将使用tcp与server2-tcp
进行通信。 -
server2-tcp
应该只允许这个特定的server1-express
服务器,它不应该允许连接任何其他的ip, -
使用socket.destroy()会使
server2-tcp
崩溃。 -
使用socket.end()将强制我们
write
服务器。
如何只允许特定的ip
和拒绝所有其他的ip
访问?
任何帮助或build议将不胜感激
这取决于你的意思是“authentication”,但显然一个IP地址可以被多个人使用(例如在路由器后面)。 所以,如果这是一个问题,你将不得不拿出自己的协议或重新使用现有的协议(可能是一个更好的主意,使用一个已经“战斗testing”)。 一个更“复杂”的例子是使用TLS ,它是内置在节点中的, 并且通过证书/密钥给你encryption和authentication,同时还给你一个原始套接字。
只要终止连接,您可以通过调用套接字上的.end()
或.destroy()
来强制终止套接字。