Tráfego de roteamento para usuário específico para interface específica

5

Eu tenho uma caixa do Linux com estas interfaces:

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  P-t-P:10.170.1.5  Mask:255.255.255.255

eth0 é minha conencessão de internet e tun0 é obviamente uma VPN. Agora quero encaminhar todo o tráfego gerado por um usuário específico para a VPN. Como esse é o meu primeiro problema de roteamento real, eu pesquisei muito e leiai: Roteamento baseado no usuário , Base de roteamento na porta , VPN básica rotas e partes do LARC . Até agora eu fiquei intrigado:

# 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

O problema é que, de acordo com tcpdump , o SNAT funciona, mas as respostas não são roteadas de volta ao processo corretamente, mesmo que pareçam ter o endereço de origem correto. Eu habilitei ip_forwarding com echo 1 > /proc/sys/net/ipv4/ip_forward . O que mais eu estou sentindo falta?

EDITADO:

A configuração de sysctl -w net.ipv4.conf.tap0.rp_filter=2 permite que o usuário se conecte à Internet, mas, de acordo com wget http://wtfismyip.com/text , o endereço IP não é a VPN, mas meu endereço normal.

obrigado 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)
    
por steved 16.02.2015 / 16:26

0 respostas