重定向数据包并将内容保存到磁盘

重定向数据包并将内容保存到磁盘

我想像那样重新路由连接rinetd,但保存客户端和服务器消息。

有这样的工具吗?我正在使用Debian。

答案1

rinetd 的背景

查看rinetd.conf我在本文中找到的一个简单的示例文件,标题为:Rinetd – 将 TCP 连接从一个 IP 地址和端口重定向到另一个 IP 地址和端口:

# bindadress bindport connectaddress connectport
192.168.2.1 80 192.168.2.3 80
192.168.2.1 443 192.168.2.3 443

使用 iptables 重定向

类似的事情可以通过使用这样的规则来实现iptables

$ sudo iptables -t nat -A PREROUTING -p tcp --dport 80 \
    -j DNAT --to-destination 192.168.2.3:80
$ sudo iptables -t nat -A POSTROUTING -p tcp --dport 25 -j MASQUERADE

上面的代码会将本地主机 (192.168.2.1) 上的端口 80 重定向到远程主机 (192.168.2.3)。这些规则基于我在这篇文章中找到的内容,标题为:iptables 提示和技巧 - 端口重定向

使用 ulogd 记录数据包

使用ulogdnetfilter 的用户空间日志守护进程,您可以添加其他规则/开关来根据标题为以下的文章获取数据包日志记录:将数据包从内核中拉出。假设您已使用发行版包管理来安装ulogd并启动它:

$ sudo service ulogd start 

该文章中的示例将ping数据包记录到地址 99.99.99.99:

$ ping -c 5 99.99.99.99
$ sudo iptables -I OUTPUT -d 99.99.99.99 -j ULOG --ulog-nlgroup 1 \
    --ulog-cprange 100

然后使用tcpdump您可以查看ulogd文件中保存的日志文件/var/log/ulogd.pcap

$ sudo tcpdump -r /var/log/ulogd.pcap -qtnp
172.27.1.66 > 99.99.99.99: icmp: echo request (DF)
172.27.1.66 > 99.99.99.99: icmp: echo request (DF)
172.27.1.66 > 99.99.99.99: icmp: echo request (DF)
172.27.1.66 > 99.99.99.99: icmp: echo request (DF)
172.27.1.66 > 99.99.99.99: icmp: echo request (DF)

你可以像这样观看直播:

$ tail -f /var/log/ulogd.pcap | tcpdump -r - -qtnp

要查看您的数据包,您需要iptables根据需要更改上述规则。

相关内容