用户名: 密码: 忘记密码? 注册
收藏此问题 发表新评论

如何在内核里面实现这么一条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 10:08:00
iptables 规则是用户态进行配置的。
这个命令完全可以在用户态配置。
不知道这条规则和你的模块有什么关系
昵称: Godbach  时间: 2011-03-11 10:17:00
因为下这条规则的时候已经晚了,我必须在包第一次来的时候就让这条规则生效。而要设置这条规则那我必须从这个包去判断目的ip地址。如果我判断了得到目的IP地址,然后再传给上层去下这条规则,那么在其下这个规则的时候,时间上这个包已经过不去了。 所以我必须在这个包第一次来的时候就去改变其目的地址。

版主,能给个例子吗?
昵称: firvalor  时间: 2011-03-11 10:43:00
那可以让你的模块优先级低于 NAT 啊。
你这个模块是干啥用的,为什么需要 NAT 配合?
昵称: Godbach  时间: 2011-03-11 10:59:00


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


iptables 的规则中是可以判断目的IP 的啊
昵称: Godbach  时间: 2011-03-11 10:59:00
可以参考nat模块的实现,只不过规则自己写在模块里,优先级可以低于nat模块,这样这部分数据包由你自己的模块处理。

或者可以写一个match,然后在nat表里面加规则,推荐这种做法。
昵称: bekars  时间: 2011-03-11 11:29:00
发表评论
昵称:
内容:
验证: