| This matches if an open TCP/UDP socket can be found by doing a socket lookup on the | |
| packet. It matches if there is an established or non\-zero bound listening | |
| socket (possibly with a non\-local address). The lookup is performed using | |
| the \fBpacket\fP tuple of TCP/UDP packets, or the original TCP/UDP header | |
| \fBembedded\fP in an ICMP/ICPMv6 error packet. | |
| .TP | |
| \fB\-\-transparent\fP | |
| Ignore non-transparent sockets. | |
| .TP | |
| \fB\-\-nowildcard\fP | |
| Do not ignore sockets bound to 'any' address. | |
| The socket match won't accept zero\-bound listeners by default, since | |
| then local services could intercept traffic that would otherwise be forwarded. | |
| This option therefore has security implications when used to match traffic being | |
| forwarded to redirect such packets to local machine with policy routing. | |
| When using the socket match to implement fully transparent | |
| proxies bound to non\-local addresses it is recommended to use the \-\-transparent | |
| option instead. | |
| .PP | |
| Example (assuming packets with mark 1 are delivered locally): | |
| .IP | |
| \-t mangle \-A PREROUTING \-m socket \-\-transparent \-j MARK \-\-set\-mark 1 | |
| .TP | |
| \fB\-\-restore\-skmark\fP | |
| Set the packet mark to the matching socket's mark. Can be combined with the | |
| \fB\-\-transparent\fP and \fB\-\-nowildcard\fP options to restrict the sockets | |
| to be matched when restoring the packet mark. | |
| .PP | |
| Example: An application opens 2 transparent (\fBIP_TRANSPARENT\fP) sockets and | |
| sets a mark on them with \fBSO_MARK\fP socket option. We can filter matching packets: | |
| .IP | |
| \-t mangle \-I PREROUTING \-m socket \-\-transparent \-\-restore-skmark \-j action | |
| .IP | |
| \-t mangle \-A action \-m mark \-\-mark 10 \-j action2 | |
| .IP | |
| \-t mangle \-A action \-m mark \-\-mark 11 \-j action3 |