freedom1b2830, OUTPUT в таблице filter сработает уже после маршрутизации и никак на неё не повлияет. Нужно менять в таблице mangle. Я уж не говорю о том, что wlp0s21f0u2 это не интерфейс VPN.
Вот рыба того, что можно сделать:
iptables -t mangle -A OUTPUT -m owner --uid-owner 1021 -j MARK --set-mark 2
echo 100 vpn >> /etc/iproute2/rt_tables
ip route add default dev tun123 table vpn
ip rule add fwmark 2 p 100 lookup vpn
curl переходит на использование ipv6 (не работает,нет подключения у меня)
а для ipv4 ЖДЕТ:
Failed to connect to 49.12.234.183 port 80 after 128892 ms: Время ожидания соединения истекло
[root@archlinux ~]# ip route
0.0.0.0/1 via 10.211.1.22 dev tun0
default via 192.168.0.1 dev wlp2s0 proto dhcp metric 600
10.211.1.22 dev tun0 proto kernel scope link src 10.211.1.21
112.69.5.123 via 192.168.0.1 dev wlp2s0
128.0.0.0/1 via 10.211.1.22 dev tun0
192.168.0.0/24 dev wlp2s0 proto kernel scope link src 192.168.0.108 metric 600
[root@archlinux ~]# ip rule
0: from all lookup local
100: from all fwmark 0x2 lookup vpn
32766: from all lookup main
32767: from all lookup default
freedom1b2830, я поэкспериментировал и понял, что трафик завернулся в нужный интерфейс, но в нём он уходит с неправильным IP другого интерфейса. Решение - сделать SNAT