Как установить метку iptables при отправке пакета? - PullRequest
0 голосов
/ 07 декабря 2018

Linux iptable и iproute позволяет нам отмечать пакеты и сопоставлять их позже (fwmark), что обеспечивает большую гибкость в настройке маршрутов и брандмауэров.

Есть ли способ установить эти отметки при отправке пакета изпрограмма на C, либо через обычный интерфейс сокетов, либо через системные вызовы linux?

1 Ответ

0 голосов
/ 07 декабря 2018

Я нашел параметр сокета SO_MARK в справочной странице socket (7):

   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");
}
...