首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用netlink添加/更新iptables?

使用netlink添加/更新iptables?
EN

Stack Overflow用户
提问于 2015-12-03 07:05:28
回答 1查看 1.4K关注 0票数 0

我想写一个程序来添加/更新linux路由表中的路由。为此,我使用struct rtmsg更新数据并将其发送到作为NETLINK_ROUTE打开的fd。

代码语言:javascript
复制
179    struct {
180 struct nlmsghdr     n;
181 struct rtmsg        r;
182 char                buf[RTA_BUF_SIZE];
183    } req;
184    int  v4_addr;
185    int  if_idx;
186
187    memset(&req, 0, sizeof(req));
188
189    req.n.nlmsg_len = NLMSG_LENGTH(sizeof(struct rtmsg));
190    req.n.nlmsg_flags = NLM_F_REQUEST | flags;
191    req.n.nlmsg_type = cmd;
192    req.r.rtm_family = AF_INET;
193    req.r.rtm_table = RT_TABLE_MAIN;
194    req.r.rtm_protocol = RTPROT_BOOT;
195    req.r.rtm_scope = RT_SCOPE_LINK;
196    req.r.rtm_type = RTN_UNICAST;
...

fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE);

除此之外,我还希望扩展该程序来操作iptables。看起来使用NETLINK_NFLOG协议的套接字应该可以解决我的问题,但是我如何发送数据呢?

代码语言:javascript
复制
   fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_NFLOG);

e.x。我需要在nat表中添加SNAT规则,如何使用netlink执行此操作?如何传递NF情况下的数据?

EN

回答 1

Stack Overflow用户

发布于 2015-12-03 17:42:11

无法通过netlink协议管理iptables规则。netlink协议可用于管理队列或NFLOG处理程序等。

要管理iptables规则,应该使用guess what- setsockopt()。有关详细信息,请参阅iptables源代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34054806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档