作者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