が、私はこのような何かを表示するルータのソフトウェアを開発する必要があります(注:この記事は、ネットワークプログラミングをするために関連している):DHCPパケットからクライアントデータを取り出す方法は?
私はWiresharkのDHCPパケットの通過を捕獲し、観察し、それはすべての詳細が含まれていることをI表示する必要があります。私はdhcpdumpとtcpdumpのツールと同じことを確認し
:データは次のようになります。私が興味を持っています出力の
[email protected]:$ sudo dhcpdump -i wlp6s0
一部は次のとおりです。
TIME: 2016-06-23 12:20:50.976
IP: 10.42.0.1 (b0:c0:90:69:72:57) > 10.42.0.99 (fc:64:ba:1b:40:e5)
OP: 2 (BOOTPREPLY)
HTYPE: 1 (Ethernet)
HLEN: 6
HOPS: 0
XID: e277d896
SECS: 0
FLAGS: 0
CIADDR: 0.0.0.0
YIADDR: 10.42.0.99
SIADDR: 10.42.0.1
GIADDR: 0.0.0.0
CHADDR: fc:64:ba:1b:40:e5:00:00:00:00:00:00:00:00:00:00
SNAME: .
FNAME: .
OPTION: 53 ( 1) DHCP message type 5 (DHCPACK)
OPTION: 54 ( 4) Server identifier 10.42.0.1
OPTION: 51 ( 4) IP address leasetime 3600 (60m)
OPTION: 58 ( 4) T1 1800 (30m)
OPTION: 59 ( 4) T2 3150 (52m30s)
OPTION: 1 ( 4) Subnet mask 255.255.255.0
OPTION: 28 ( 4) Broadcast address 10.42.0.255
OPTION: 6 ( 4) DNS server 10.42.0.1
OPTION: 3 ( 4) Routers 10.42.0.1
---------------------------------------------------------------------------
しかし、これらのツールを使用せず(これらのツールは、ルータボードに追加することはできません)、MACアドレスなどのクライアントデータを抽出する方法、IPアドレス、およびdhcpパケットからの他の情報(またはそれらのツールが情報をどのように抽出したか)をプログラムで(Cで可能な場合)?それによって
socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL))
を使用すると、すべてのETHパケットを見ることができると同じに処理されます:あなたのDHCPサーバーを使用すると、タイプのソケットを使用することができ、必要な情報を得るためにいかなる手段を提供していないと仮定すると、
ルータはLinuxで動作していますか?ルータ全体にdhcp/DNS/NAT機能を書き込む必要がありますか、またはdhcpパケットを監視するだけですか? –
はい。Linuxを実行しているルータ。そして、はい、パケットを監視する必要があります。最初から開発する必要はありません。そして、私はなぜこの質問が下落したのか分からない。 –
@nayabbashasayed 1つの理由は、ちょっと混乱しているかもしれない。なぜあなたはパケットを監視する必要があると思いますか?あなたが行っている情報は、実行中のソフトウェアに応じて、他の方法でも利用できます。たとえば、dhcpサーバーのマニュアルを参照してください。 – unwind