Como rotear o tráfego de um usuário específico através de uma VPN no Linux

1

Estou tentando ajustar minha configuração para poder rotear todo o tráfego de uma das minhas contas de usuário por meio de uma conexão VPN. Até agora eu não consegui alcançar isso.

SO: Fedora27

Quando conectado à VPN por meio da GUI do gerenciador de rede (todo o tráfego passa pela VPN, a VPN funciona). $ ip route:

default via 10.5.0.1 dev tun0 proto static metric 50 
default via 192.168.0.1 dev enp0s3 proto static metric 100 
192.168.0.0/24 dev enp0s3 proto kernel scope link src 192.168.0.15 metric 100 
10.5.0.0/16 dev tun0 proto kernel scope link src 10.5.1.112 metric 50 
$VPNIP via 192.168.0.1 dev enp0s3 proto static metric 100

Passos que tomei (note que substituiu o IP da VPN por $ VPNIP para este post):

  1. Crie uma segunda conta de usuário $ user2 (UID 1001)

  2. Crie a segunda tabela de roteamento:

    echo 100 vpn >> /etc/iproute2/rt_tables

  3. Defina a tabela de roteamento padrão para não encaminhar todo o tráfego por meio da VPN:

    nmcli connection modify VPN ipv4.never-default true

  4. Defina iptables para marcar pacotes de $ user2:

    * nat
    : PREROUTING ACCEPT [0: 0]
    : INPUT ACCEPT [0: 0]
    : SAÍDA ACEITAR [3: 180]
    : POSTROUTING ACCEPT [3: 180]
    -A POSTROUTING -m mark --mark 0xb -j MASQUERADE
    COMPROMETE

    * mangle
    : PREROUTING ACCEPT [903: 366886]
    : INPUT ACCEPT [903: 366886]
    : FORNECER ACEITAR [0: 0]
    : SAÍDA ACEITA [872: 617897]
    : POSTROUTING ACCEPT [872: 617897]
    -A OUTPUT -m proprietário --uid-owner 1001 -j MARK --set-xmark 0xb / 0xffffffff
    COMPROMETE

    * filter
    : INPUT DROP [0: 0]
    : FORWARD DROP [0: 0]
    : GOTA DE SAÍDA [0: 0]
    # allow lo
    -A INPUT -i lo -j ACCEPT
    -A OUTPUT -o lo -j ACCEPT
    # allow established
    -A INPUT -m state --state ESTABELECIDO -j ACCEPT
    # allow vpn
    -A OUTPUT -m proprietário --uid-owner 0 -d $ VPNIP -p tcp --dport 443 -j ACCEPT
    # allow vpn dns
    -A OUTPUT -o tun0 -m proprietário --uid-owner 0 -d 10.5.0.1 -p udp --dport 53 -j ACCEPT
    -A OUTPUT -o tun0 -m proprietário --uid-owner 1001 10.5.0.1 -p udp --dport 53 -j ACCEPT
    # allow vpn http
    -A OUTPUT -o tun0 -m proprietário --uid-owner 1001 -p tcp --dport 80 -j ACCEPT
    -A OUTPUT -o tun0 -m proprietário --uid-owner 1001 -p tcp --dport 443 -j ACCEPT
    # allow ssh
    -A ENTRADA -i enp0s3 -p tcp --dport 22 -j ACEITAR
    -A OUTPUT -o enp0s3 -p tcp --sport 22 -j ACEITAR
    COMPROMETE

  5. Adicione a regra ip para definir os pacotes marcados para rotear pela tabela 100:

    ip rule add fwmark 11 table 100

  6. Copie todas as linhas da rota padrão de trabalho para a tabela 100:

    ip route add default via 10.5.0.1 dev tun0 proto static metric 50 table 100 ip route add default via 192.168.0.1 dev enp0s3 proto static metric 100 table 100 ip route add 192.168.0.0/24 dev enp0s3 proto kernel scope link src 192.168.0.15 metric 100 table 100 ip route add 10.5.0.0/16 dev tun0 proto kernel scope link src 10.5.1.112 metric 50 table 100 ip route add $VPNIP via 192.168.0.1 dev enp0s3 proto static metric 100 table 100

Problemas: Não funciona, e as rotas não parecem persistir, qualquer ajuda muito apreciada!

    
por Matt 29.01.2018 / 20:17

0 respostas