Re: [問題] NAT的實作

看板LinuxDev作者 (rawpacket)時間14年前 (2011/12/20 01:22), 編輯推噓3(306)
留言9則, 4人參與, 最新討論串2/2 (看更多)
※ 引述《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

12/20 17:42, , 1F
我希望能寫出一個獨立的server程式可以run
12/20 17:42, 1F

12/20 17:43, , 2F
現在問題是gateway都設好了 但是B ping A時抓得到ICMP
12/20 17:43, 2F

12/20 17:44, , 3F
想用B存取網路時A就抓不到 是要抓到後改header沒錯吧?
12/20 17:44, 3F

12/20 22:57, , 4F
NAT是一定要改header的,然後記住你改之前的ip/port和目
12/20 22:57, 4F

12/20 22:58, , 5F
的地的ip/port,之後再改回來
12/20 22:58, 5F

12/21 23:10, , 6F
明明就有netfilter可以用 為啥要硬來?
12/21 23:10, 6F

12/21 23:31, , 7F
因為這是要求啊......
12/21 23:31, 7F
兩邊 wireshark 開起來聽封包發生什麼事情了. 另外, 先用 nc (netcat) 去送 udp 封包, nc 可以一筆一筆送 可以很容易看到 packet 狀況. ※ 編輯: rawpacket 來自: 140.113.22.92 (12/22 17:24)

12/23 07:27, , 8F
寫一個kernel module並掛起來
12/23 07:27, 8F

12/23 07:28, , 9F
內容是在hook point 觀察封包,滿足條件就把檔頭改掉
12/23 07:28, 9F
文章代碼(AID): #1ExtBjPs (LinuxDev)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1ExtBjPs (LinuxDev)