我只想在我的 C 程序中使用 iptables 命令
我正在设计一个简单的c代码来根据需要调用iptables命令。 我只想使用我的 C 代码删除来自特定 IP 地址的数据包。 这就是为什么我必须根据给定的输入使用 iptables 命令。 是否可以使用c代码调用该命令? 如果是的话怎么办??? 提前致谢..
i m designing a simple c code to call the iptables command according to the need.
i just want to drop the packets from a particular ipaddress using my c code.
thats why i have to use the iptables command according to input given.
is it possible to call the command using c code?
if it is then how???
thanks in advance..
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
假设您的程序以 root 身份运行,只需使用 fork() 和 exec(),并将 iptables 命令传递给 exec()。像编辑这样的东西
:我从其他人那里看到 system() 是比 fork/exec 更好的方法。
听起来 Neha 不确定如何使用 sprintf 来格式化命令,以便它包含存储在其他变量中的 IP 地址。我认为它应该如下所示:
请注意,这将是一个安全漏洞,除非您有代码来验证 host_to_block 包含 IP 地址而不是其他 shell 命令。如果字符串的来源尚不知道是否有效,您可能需要使用以下问题作为参考:
如何验证 IP 地址
Assuming that your program is running as root, just use fork() and exec(), and pass the iptables command to exec(). Something like
Edit: I see from other people that system() is a better way than fork/exec.
It sounds like Neha is not sure how to use sprintf to format the command so that it contains an IP address which is stored in some other variable. I think it should look like this:
Note that this will be a security vulnerability unless you have code to verify that host_to_block contains an IP address and not some other shell command. You may want to use the following question for reference if the source of the string is not already known to be valid:
how to validate an ip address
可以在不使用 system() 或 exec*() 系列命令的情况下完成此操作,但是我确信您也有兴趣实际完成您的项目:)
但是,如果您只需要 iptables 中的非常基本的功能您的程序,或者需要精确的错误处理,您可以获取 iptables 包的源代码。
高级警告:研究 iptables ioctl 挂钩和相应的 netfilter 模块已知是一项费力的任务。
It is possible to do this without using the system() or exec*() family of commands, however I'm sure that you are also interested in actually completing your project :)
If, however you only need very rudimentary functionality from iptables within your program, or need precision error handling, you can obtain the source to the
iptables
package.Advanced warning: studying the iptables ioctl hooks and the corresponding netfilter modules is known to be a mind liquefying task.