如何在内核里面实现这么一条iptables规则

我写了一个nf_conntrack_xxx.c的模块挂载在NF_IP_PRE_ROUTING钩子上面,我想在这个文件中实现下面的一条iptables规则:
iptables -t -A PREROUTING -p udp -d 183.16.185.13 --dport 6112 -j DNAT -- to 192.168.1.2:6112
其中183.16.185.13是外网的地址,192.168.1.2是内网的地址。

还请高手指教,或者给一些参考例子,谢了。

作者: firvalor   发布时间: 2011-03-11

iptables 规则是用户态进行配置的。
这个命令完全可以在用户态配置。
不知道这条规则和你的模块有什么关系

作者: Godbach   发布时间: 2011-03-11

因为下这条规则的时候已经晚了,我必须在包第一次来的时候就让这条规则生效。而要设置这条规则那我必须从这个包去判断目的ip地址。如果我判断了得到目的IP地址,然后再传给上层去下这条规则,那么在其下这个规则的时候,时间上这个包已经过不去了。 所以我必须在这个包第一次来的时候就去改变其目的地址。

版主,能给个例子吗?

作者: firvalor   发布时间: 2011-03-11

那可以让你的模块优先级低于 NAT 啊。
你这个模块是干啥用的,为什么需要 NAT 配合?

作者: Godbach   发布时间: 2011-03-11



QUOTE:
而要设置这条规则那我必须从这个包去判断目的ip地址。


iptables 的规则中是可以判断目的IP 的啊

作者: Godbach   发布时间: 2011-03-11

可以参考nat模块的实现,只不过规则自己写在模块里,优先级可以低于nat模块,这样这部分数据包由你自己的模块处理。

或者可以写一个match,然后在nat表里面加规则,推荐这种做法。

作者: bekars   发布时间: 2011-03-11