我想像那样重新路由连接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 记录数据包
使用ulogd
netfilter 的用户空间日志守护进程,您可以添加其他规则/开关来根据标题为以下的文章获取数据包日志记录:将数据包从内核中拉出。假设您已使用发行版包管理来安装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
根据需要更改上述规则。