ct action in tc(8) Linux ct action in tc(8) (NAME) tc-ct - (tc) (SYNOPSIS) tc ... action ct commit [ force ] [ zone ZONE ] [ mark MASKED_MARK ] [ label MASKED_LABEL ] [ nat NAT_SPEC ] tc ... action ct [ nat ] [ zone ZONE ] tc ... action ct clear (DESCRIPTION) ct tc (conntrack) (netfilter) . ( ) : conntrack (commit) (mark) (label) NAT / . conntrack (mark/label) NAT . . (OPTIONS) zone ZONE (zone) conntrack conntrack . mark MASKED_MARK (mark) ( commit ). label MASKED_LABEL (label) ( commit ). nat NAT_SPEC NAT_SPEC := {src|dst} addr addr1[-addr2] [port port1[-port2]] / nat ( commit ). src/dst nat (src) (dst). addr1/addr2 - IPv4/IPv6 port1/port2 - nat nat . clear conntrack (mark/label) ( ). force conntrack ( commit ). (EXAMPLES) NAT conntrack conntrack mark : # qdisc (ingress) eth0 eth1 $ tc qdisc add dev eth0 ingress $ tc qdisc add dev eth1 ingress # eth0 src nat + mark $ tc filter add dev eth0 ingress prio 1 chain 0 proto ip flower ip_proto tcp ct_state -trk \ action ct zone 2 pipe action goto chain 2 $ tc filter add dev eth0 ingress prio 1 chain 2 proto ip flower ct_state +trk+new \ action ct zone 2 commit mark 0xbb nat src addr 5.5.5.7 pipe action mirred egress redirect dev eth1 $ tc filter add dev eth0 ingress prio 1 chain 2 proto ip flower ct_zone 2 ct_mark 0xbb ct_state +trk+est \ action ct nat pipe action mirred egress redirect dev eth1 # eth1 NAT ( dst nat) $ tc filter add dev eth1 ingress prio 1 chain 0 proto ip flower ip_proto tcp ct_state -trk \ action ct zone 2 pipe action goto chain 1 $ tc filter add dev eth1 ingress prio 1 chain 1 proto ip flower ct_zone 2 ct_mark 0xbb ct_state +trk+est \ action ct nat pipe action mirred egress redirect dev eth0 (SEE ALSO) tc(8), tc-flower(8), tc-mirred(8) (AUTHORS) Paul Blakey Marcelo Ricardo Leitner Yossi Kuperman iproute2 14 May 2020 ct action in tc(8)