パケットをリダイレクトしてコンテンツをディスクに保存する

パケットをリダイレクトしてコンテンツをディスクに保存する

rinetdそのように接続を再ルーティングし、クライアントとサーバーのメッセージを保存したいと思います。

そのようなツールがありますか?私はDebianを使用しています。

答え1

rinetd 背景

rinetd.confこの記事を見つけて、タイトルの簡単なサンプルファイルを確認してください。Rinetd – あるIPアドレスとポートから別のIPアドレスとポートへのTCP接続のリダイレクト:

# 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を使用したパケットの記録

netfilterのユーザースペースロギングデーモンを使用すると、追加のulogdルール/スイッチを追加して、次の記事に従ってパケットロギングを取得できます。カーネルからパケットを取り出す。ディストリビューションのパッケージ管理を使用してインストールして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

その後、ログファイルを使用して保存されたファイルを表示できますtcpdumpulogd/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必要に応じて上記の規則を変更する必要があります。

関連情報