作者rawpacket (rawpacket)
看板LinuxDev
標題Re: [問題] NAT的實作
時間Tue Dec 20 01:22:50 2011
※ 引述《fasthall (Xen)》之銘言:
: 我原本打算用pcap寫的sniffer放在A跑
: 去觀察B想存取對外網路時的封包
: 但是這樣好像抓不到
: 原本打算的做法是抓到之後可以modify封包來源轉丟出去
: (好像還要存起來他實際來源的虛擬IP 但不清楚要存在哪)
: 我想B應該不用特地實作只要A跑server程式就好?
: 因為外面買的NAT分享器好像都是直接插線就能用
: 想請問我這樣的想法有沒有錯
: 該從哪裡繼續動手......謝謝
如果你只是要實作 NAT, 那就直接在
file linux/net/core/dev.c
netif_rx() 和 netif_receive_skb() 內下手最快.
直接用 module 掛個 hook function 在那邊, 進來的封包隨便你凌虐~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.22.92
1F:推 fasthall:我希望能寫出一個獨立的server程式可以run 12/20 17:42
2F:→ fasthall:現在問題是gateway都設好了 但是B ping A時抓得到ICMP 12/20 17:43
3F:→ fasthall:想用B存取網路時A就抓不到 是要抓到後改header沒錯吧? 12/20 17:44
4F:推 cobrasgo:NAT是一定要改header的,然後記住你改之前的ip/port和目 12/20 22:57
5F:→ cobrasgo:的地的ip/port,之後再改回來 12/20 22:58
6F:→ final01:明明就有netfilter可以用 為啥要硬來? 12/21 23:10
7F:推 fasthall:因為這是要求啊...... 12/21 23:31
兩邊 wireshark 開起來聽封包發生什麼事情了.
另外, 先用 nc (netcat) 去送 udp 封包, nc 可以一筆一筆送
可以很容易看到 packet 狀況.
※ 編輯: rawpacket 來自: 140.113.22.92 (12/22 17:24)
8F:→ kevinmark:寫一個kernel module並掛起來 12/23 07:27
9F:→ kevinmark:內容是在hook point 觀察封包,滿足條件就把檔頭改掉 12/23 07:28