Rota tudo através de IP público, exceto SSH na porta 22 através de VPN aberta

2

É possível rotear um serviço VH [Ubuntu] SSH através de uma conexão VPN aberta, mas permitir que TODOS os outros dados saiam através do endereço público? Que tipo de mágica iptables precisa ser feita para conseguir isso?

Dados SSH → passam pela VPN ABERTA TODOS os outros dados → passam pelo Público

este é o meu ifconfig detalhes antes de conectar a vpn

eth0      Link encap:Ethernet  HWaddr 52:54:00:32:2a:e6
          inet addr:18x.144.31.77  Bcast:185.144.31.255  Mask:255.255.254.0
          inet6 addr: 2a03:a0e0:bad:bad::574/128 Scope:Global
          inet6 addr: 2a03:a0e0:bad:bad::573/128 Scope:Global
          inet6 addr: 2a03:a0e0:bad:bad::572/128 Scope:Global
          inet6 addr: 2a03:a0e0:bad:bad::571/128 Scope:Global
          inet6 addr: 2a03:a0e0:bad:bad::570/64 Scope:Global
          inet6 addr: fe80::5054:ff:fe32:2ae6/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:73928 errors:0 dropped:1 overruns:0 frame:0
          TX packets:723 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:4508581 (4.5 MB)  TX bytes:95511 (95.5 KB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:25 errors:0 dropped:0 overruns:0 frame:0
          TX packets:25 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:2520 (2.5 KB)  TX bytes:2520 (2.5 KB)

depois de se conectar a vpn

eth0      Link encap:Ethernet  HWaddr 52:54:00:32:2a:e6
          inet addr:185.144.31.77  Bcast:185.144.31.255  Mask:255.255.254.0
          inet6 addr: 2a03:a0e0:bad:bad::574/128 Scope:Global
          inet6 addr: 2a03:a0e0:bad:bad::573/128 Scope:Global
          inet6 addr: 2a03:a0e0:bad:bad::572/128 Scope:Global
          inet6 addr: 2a03:a0e0:bad:bad::571/128 Scope:Global
          inet6 addr: 2a03:a0e0:bad:bad::570/64 Scope:Global
          inet6 addr: fe80::5054:ff:fe32:2ae6/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3749 errors:0 dropped:0 overruns:0 frame:0
          TX packets:381 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:282634 (282.6 KB)  TX bytes:60862 (60.8 KB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.8.2.62  P-t-P:10.8.2.61  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:65 errors:0 dropped:0 overruns:0 frame:0
          TX packets:62 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:7025 (7.0 KB)  TX bytes:16197 (16.1 KB)
    
por Obada Diab 19.02.2017 / 00:35

1 resposta

1

Alternativa para iptables: use namespaces de rede. Como root, faça algo como

ip addr show dev tun0
ip netns add vpnssh
ip link set tun0 netns vpnssh
ip netns exec vpnssh su -c 'xterm &' user_name

em que tun0 é a interface de rede do seu ponto de extremidade do OpenVPN e user_name do usuário que executa ssh . Observe os endereços inet (vamos chamá-lo de vpn_local_ip ) e peer ( vpn_peer_ip ) para tun0 .

Agora você tem um xterm em que todos os subprocessos apenas "veem" tun0 (verifique com ip link ), mas, infelizmente, movendo-o, defina-o. Então, nessa janela, use sudo para

ip link set tun0 up
ip addr add vpn_local_ip peer vpn_peer_ip dev tun0
ip route del default
ip route add default via vpn_local_ip dev tun0

Agora você pode executar ssh nesta janela e usará a conexão OpenVPN. Script tudo conforme necessário (use ip netns exec vpnssh ... para a segunda parte).

    
por 19.02.2017 / 09:31