Входящий пакет не доставляется в сокет

У меня есть приложение vpn, которое подключается к серверу vpn с помощью tcp-сокета. Я отметил пакеты сокетов tcp с помощью setsockopt и SO_MARK . Я могу успешно ping 10.0.0.1 ping vpn gateway ping 10.0.0.1 .
Затем я пытаюсь маршрутизировать весь трафик через vpn. Я создаю другую таблицу и добавляю шлюз по умолчанию с ip route add default via 10.0.0.1 dev tun0 table 200 и ip rule add lookup 200 .
Но тогда собственные пакеты vpn начинают проходить через vpn. Я запускаю ip rule add fwmark 1234 lookup main а собственные пакеты vpn исключаются из vpn. Я могу видеть их с помощью tcpdump, проходящих через eth0 и vpn серверы, отвечающие им. Но входящие пакеты не доставляются в tcp-сокет. Кажется, что ядро ​​их бросает. Зачем?

Linux и Unix - лучшая ОС в мире.