Sockets 在虚拟化IP上运行的UNIX TCP套接字的正确文件路径是什么?

Sockets 在虚拟化IP上运行的UNIX TCP套接字的正确文件路径是什么?,sockets,unix,tcp,telnet,Sockets,Unix,Tcp,Telnet,我正在尝试为多个ip地址虚拟化telnet服务器。同时仍然能够与相同的远程服务器通信 在虚拟化IP上运行的UNIX TCP套接字的正确文件路径是什么?或者有没有一种方法可以在本地连接并忽略路由表 我已将IP的环回虚拟化如下: lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384 options=3<RXCSUM,TXCSUM> inet6 ::1 prefixlen 128 inet

我正在尝试为多个ip地址虚拟化telnet服务器。同时仍然能够与相同的远程服务器通信

在虚拟化IP上运行的UNIX TCP套接字的正确文件路径是什么?或者有没有一种方法可以在本地连接并忽略路由表

我已将IP的环回虚拟化如下:

 lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
    options=3<RXCSUM,TXCSUM>
    inet6 ::1 prefixlen 128 
    inet 127.0.0.1 netmask 0xff000000 
    inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 
    inet 10.10.0.24 netmask 0xff000000  
    inet 192.168.10.2 netmask 0xffffff00 
    inet 192.168.10.3 netmask 0xffffff00 
    inet 192.168.10.4 netmask 0xffffff00  
    nd6 options=1<PERFORMNUD>
我可以确认服务器正在侦听并绑定到正确的套接字

sudo lsof -i -n | \grep 'telnet'
Python    69212           root    6u  IPv4 0x7002eb6c7a9b50e1      0t0    TCP 192.168.10.4:telnet (LISTEN)
Python    69212           root    7u  IPv4 0x7002eb6c7db219b1      0t0    TCP 192.168.10.3:telnet (LISTEN)
Python    69212           root    8u  IPv4 0x7002eb6c4f254b51      0t0    TCP 192.168.10.2:telnet (LISTEN)
我尝试了几种不同的方式连接到本地服务器。并且已经移除了本地服务器,因此我可以证明我正在本地连接

telnet -u /dev/tcp/192.168.10.5/23
    Trying /dev/tcp/192.168.10.5/23...
    /dev/tcp/192.168.10.5/23: No such file or directory

socat -v READLINE UNIX-CONNECT:/dev/tcp/192.168.10.5/23
    2015/01/27 11:32:39 socat[92588] E connect(6, LEN=26 AF=1 "/dev/tcp/192.168.10.5/23", 26): No such file or directory

你把事情搞混了

UNIX套接字是一回事:它们使用文件系统中的对象,这些对象具有路径并可以用路径寻址

TCP/IP套接字是另一回事。你可以对它们做同样的处理,但你处理它们的方式不同

有了telnet,你就可以了

telnet -u 192.168.10.5
而对于socat,它就像

socat -v READLINE TCP:192.168.10.5:23

/dev/tcp只是由shell组成的东西;它实际上并不存在。

socat版本很有魅力。当我运行telnet-u 192.168.10.5时,我返回192.168.10.5:不支持ai_系列。在更详细地查看文档时,我需要AF_UNIX地址。我现在很好奇,有没有办法从ip和端口获取AF_UNIX地址?我想我希望这就是在/dev/tcp/hostname的封面下发生的事情/port@Luke同样,TCP/IP连接没有AF_UNIX地址。这些是完全不同的名称空间。我不知道为什么它不适用于telnet…顺便说一句,-u在您的telnet版本上做什么?BSD风格强制telnet仅使用AF_UNIX地址。不过我解决了这个问题,我使用了相对路径./path to socket,而不是完全限定的socket路径$pwd/path_to_socket。不是100%确定为什么这很重要,但它现在与telnet-u合作
socat -v READLINE TCP:192.168.10.5:23