自动检索我当前所有连接的外部 ip 地址

automated retrieval of the external ip address of all of my current connections

我正在尝试制作一个程序,自动列出从路由器外部到我的计算机的所有连接。该脚本的最终目标是我希望能够获得我连接的每个 server/website 的外部 IP 地址的干净列表。我也试图用它来了解更多关于网络、网站和服务器如何工作的方式,所以对于我在术语和常识上犯的任何错误,我深表歉意!

我的 tcpdump bash 脚本:

while :
do
# get myip and assign it to a variable
myip="$(ifconfig wlp2s0 | grep -E -o -m 1 "inet................" | grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)")"


# tcpdump on my ip for all packets going to or from my ip address. the ipaddress of the packets is placed in IP Address.txt
sudo tcpdump -c 1 -nn host "$myip" | grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" >> IPaddress.txt


done

我认为 tcpdump 将是解决此问题的工具,但我承认我不知道 tcpdump 是如何工作的。这个脚本是一个 bash 文件,我是 运行 到 ubuntu。我将如何使用 tcpdump 收集我连接到的每个网站的 IP 地址?我阅读了 tcpdump 文档并相信它可以帮助我实现我的目标,但是如果有更好的工具,我很乐意听到它!目前,此代码仅显示内部 IP 地址。 ;(

我更倾向于使用 ssnetstat

ss --all --ipv4 

将显示所有 IPv4 连接。

同样适用于 IPv6 当然;如果需要,您可以添加许多参数之一以获得更详细的信息,例如 --processes--extended--info.

还有一些参数可以控制输出格式,使其更适合解析:

ss --all --ipv4 --processes --no-header --oneline

建议遵循 ss 命令。 了解 ss 命令 here.