套接字绑定时通知我,就像inotify对文件一样

时间:2013-07-22 18:46:31

标签: linux sockets gdb

我有兴趣了解何时SSH进入我的boxen以创建反向隧道。目前我正在使用一个大黑客 - 仅lsof只有几行脚本。因此,我的目标是查看套接字何时调用bind(),并且理想情况下,获取它所绑定的端口(它在本地监听,因为它是一个反向隧道)和我要连接的远程主机。我的lsof黑客基本上没问题,除了我没有得到即时通知,而是相当...... hacky:)

这对文件来说很容易;一旦文件做任何事情,inotify可以在Linux中告诉我。当然,其他操作系统也有类似的功能。

我正在考虑简单地拖尾SSHD日志并解析输出,但我的小“隧道监视器”守护程序需要能够在任何时间点找出隧道的状态,即使它还没有SSHD一直在运行。

我有一个非常邪恶的黑客,我一直在考虑。这是一个在/usr/sbin/sshd上调用GDB的脚本,然后在bind上设置断点。然后用选项-d -p <listening port>运行它 - 为这些隧道运行单独的SSHD就可以了。然后它等待该断点被击中,并使用GDB的输入来获取远程主机的IP地址和SSH正在侦听的本地IP。再一次,这是文本解析并打开其他一些问题。

有没有“好”的方法来做到这一点?

1 个答案:

答案 0 :(得分:1)

我会使用SystemTap来解决这个问题。您可以使用它来探测内核,以查看系统上的任何进程何时完成绑定。 http://sourceware.org/systemtap/