Маршрутизация трафика для конкретного пользователя для конкретного интерфейса

У меня есть ящик Linux с этими интерфейсами:

eth0 Link encap:Ethernet HWaddr 14:da:e9:ef:75:7d inet addr:176.9.85.182 Bcast:176.9.85.191 Mask:255.255.255.224 tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:10.170.1.6 PtP:10.170.1.5 Mask:255.255.255.255 

eth0 – это мое интернет-соединение и tun0 очевидно, VPN. Теперь я хочу направлять весь трафик, генерируемый конкретным пользователем, через VPN. Поскольку это моя первая проблема с маршрутизацией, которую я решаю, я много искал и читал: Маршрутизация на основе пользователя , база маршрутизации на порту , основные маршруты VPN и части LARC . До сих пор я озадачивал это вместе:

 # Mark all traffic from user iptables -t mangle -A OUTPUT -o eth0 -m owner --uid-owner 1002 -j MARK --set-mark 10 # Translate source address to VPN address iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE # And just to be sure allow forwarding on tun0 -P FORWARD ACCEPT -A FORWARD -o tun0 -j ACCEPT -A FORWARD -i tun0 -j ACCEPT -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT # Route based on mark ip rule add fwmark 10 priority 1000 table 10 # Route ip route add default via 10.170.1.5 tun0 table 10 ip rule from 10.170.1.6/32 priority 1200 table 10 ip rule to 10.170.1.5/32 priority 1200 table 10 

Проблема заключается в том, что в соответствии с tcpdump работает SNAT , но ответы a не перенаправлены обратно в процесс правильно, хотя они, похоже, имеют правильный адрес источника. Я включил ip_forwarding с помощью echo 1 > /proc/sys/net/ipv4/ip_forward . Что еще мне не хватает?

Редакция:

Установка sysctl -w net.ipv4.conf.tap0.rp_filter=2 позволяет пользователю подключаться к Интернету, но, согласно wget http://wtfismyip.com/text IP-адрес не является VPN, а моим обычным общедоступным адресом.

спасибо, steved

 15:22:17.713602 IP 10.170.1.6.42225 > google-public-dns-a.google.com.domain: 63046+ A? wtfismyip.com. (31) 15:22:17.713623 IP 10.170.1.6.42225 > google-public-dns-a.google.com.domain: 35494+ AAAA? wtfismyip.com. (31) 15:22:17.747989 IP google-public-dns-a.google.com.domain > 10.170.1.6.42225: 63046 1/0/0 A 54.200.182.206 (47) 15:22:17.854532 IP google-public-dns-a.google.com.domain > 10.170.1.6.42225: 35494 1/0/0 AAAA 2001:470:e8f8:1::1 (59) 

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