繁体   English   中英

发送数据包时如何设置iptables标记?

[英]How to set iptables mark when sending a packet?

Linux的iptable和iproute允许我们标记数据包并稍后匹配标记(fwmark),从而为配置路由和防火墙提供了极大的灵活性。

通过普通套接字接口或通过特定的linux系统调用从C程序发送数据包时,是否有办法设置这些标记?

我在socket(7)手册页中找到了SO_MARK套接字选项:

  SO_MARK (since Linux 2.6.25) Set the mark for each packet sent through this socket (similar to the netfilter MARK target but socket-based). Changing the mark can be used for mark-based routing without netfilter or for packet filtering. Setting this option requires the CAP_NET_ADMIN capability. 

我最初要求的不是每个数据包都适合我的目的。 您可以使用setsockopt()

int fwmark;
//fwmark = <some value>;
if(-1 == setsockopt(sockfd, SOL_SOCKET, SO_MARK, &fwmark, sizeof fwmark)) {
    perror("failed setting mark for socket packets");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM