Habilitando o “Internet-Route” através do ppp0

0

Em primeiro lugar, não estou familiarizado com a maioria dos termos do Linux, por isso peço desculpas antecipadamente.

Eu tenho o Debian 8.0.0-64 em execução no meu servidor, que tem eth1 como interface com o gateway padrão. eth0 está apontando para a rede interna.

root@server:/home/user# ifconfig
eth0      Link encap:Ethernet  HWaddr 06:46:7e:88:72:d7  
          inet addr:10.168.118.205  Bcast:10.168.118.255  Mask:255.255.255.192
          inet6 addr: fe80::446:7eff:fe88:72d7/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:161 errors:0 dropped:0 overruns:0 frame:0
          TX packets:203 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:15215 (14.8 KiB)  TX bytes:79027 (77.1 KiB)

eth1      Link encap:Ethernet  HWaddr 06:70:65:5f:e9:89  
          inet addr:167.41.133.218  Bcast:167.41.133.223  Mask:255.255.255.240
          inet6 addr: fe80::470:65ff:fe5f:e989/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:697 errors:0 dropped:0 overruns:0 frame:0
          TX packets:282 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:46420 (45.3 KiB)  TX bytes:33486 (32.7 KiB)

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:706 errors:0 dropped:0 overruns:0 frame:0
          TX packets:706 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:86847 (84.8 KiB)  TX bytes:86847 (84.8 KiB)

Eu configurei uma VPN (TotalVPN) usando as seguintes instruções: link

Com pon amsterdam , posso realmente abrir um túnel:

root@server:/home/user# pon amsterdam

root@server:/home/user# ifconfig
ppp0      Link encap:Point-to-Point Protocol  
          inet addr:10.126.0.29  P-t-P:10.126.0.1  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1496  Metric:1
          RX packets:6 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3 
          RX bytes:60 (60.0 B)  TX bytes:66 (66.0 B)

Até aí tudo bem, agora eu adoraria poder fazer ping, por exemplo, google.com ( ping -I ppp0 google.com ) pelo túnel, sem perder a possibilidade de usar eth1 como minha interface padrão ( ping google.com ). Como posso configurar um route ou o que for necessário, para que o tráfego (para a internet) possa estar passando pelo túnel, se solicitado especificamente, ou seja, definindo a interface ppp0 a ser usada.

Aqui estão algumas informações (o nome da conexão VPN é amsterdam ):

root@server:/home/user# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         167.41.133.209  0.0.0.0         UG    0      0        0 eth1
10.0.0.0        10.168.118.193  255.0.0.0       UG    0      0        0 eth0
10.168.118.192  0.0.0.0         255.255.255.192 U     0      0        0 eth0
161.26.0.0      10.168.118.193  255.255.0.0     UG    0      0        0 eth0
167.41.133.208  0.0.0.0         255.255.255.240 U     0      0        0 eth1

root@server:/home/user# pon amsterdam

root@server:/home/user# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0           0.0.0.0         UG    0      0        0 eth1
10.0.0.0        10.168.118.193  255.0.0.0       UG    0      0        0 eth0
10.126.0.1      0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
10.168.118.192  0.0.0.0         255.255.255.192 U     0      0        0 eth0
45.32.239.20    167.41.133.209  255.255.255.255 UGH   0      0        0 eth1
161.26.0.0      10.168.118.193  255.255.0.0     UG    0      0        0 eth0
167.41.133.208  0.0.0.0         255.255.255.240 U     0      0        0 eth1

root@server:/home/user# poff amsterdam

root@server:/home/user# route -n

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         167.41.133.209  0.0.0.0         UG    0      0        0 eth1
10.0.0.0        10.168.118.193  255.0.0.0       UG    0      0        0 eth0
10.168.118.192  0.0.0.0         255.255.255.192 U     0      0        0 eth0
45.32.239.20    167.41.133.209  255.255.255.255 UGH   0      0        0 eth1
161.26.0.0      10.168.118.193  255.255.0.0     UG    0      0        0 eth0
167.41.133.208  0.0.0.0         255.255.255.240 U     0      0        0 eth1

root@server:/home/user# 

Obrigado por qualquer ajuda, se precisar de mais alguma informação, não hesite em perguntar!

UPDATE

Então eu encontrei duas soluções, que funcionaram na primeira visualização, mas realmente não funcionam (e eu não sei por que).

  1. Adicionando route add default metric 10 gw $PPP_REMOTE $PPP_IFNAME no script ativo ou
  2. adicione defaultroute à configuração pptp

Em ambos os casos, chamar curl --interface ppp0 ifconfig.co as root funciona e retorna o ip da vpn, mas não consigo executar o comando como qualquer outro usuário não raiz. O comando curl --interface eth1 ifconfig.co funciona bem como root ou usuário normal.

    
por Philipp 12.10.2016 / 04:21

2 respostas

0

Para alcançar o que eu queria alcançar, tive que fazer o seguinte:

Passo 1: Instale o Programa Cliente PPTP para o Projeto Debian

Etapa 2: configurar a conexão PPTP

Etapa 3: testando a conexão

Etapa 4: Adicionando a rota

Etapa 5: verificação final

Nas primeiras três etapas, segui principalmente o link . Depois de fazer isso, encontrei este ótimo artigo ( link ), que explica como adicionar dois gateways padrão . A idéia principal por trás da segunda abordagem de gateway é criar uma Segunda Tabela de Roteamento em /etc/iproute2/rt_tables (no meu caso eu a nomeei ppp ). Depois disso, as rotas são adicionadas a essa nova tabela e as regras são definidas:

ip route add 10.10.0.0/24 dev eth1 src 10.10.0.10 table ppp
ip route add default via 10.10.0.1 dev eth1 table ppp

ip rule add from 10.10.0.10/32 table ppp
ip rule add to 10.10.0.10/32 table ppp

Após o teste, adicionei os scripts, para que as rotas sejam adicionadas e excluídas sempre que a conexão VPN for estabelecida, ou seja,

script ip-up

#!/bin/sh

if [ "$PPP_IPPARAM" = "amsterdam" ] ; then

  /sbin/ip route add $PPP_LOCAL/24 dev $PPP_IFACE src $PPP_LOCAL table ppp
  /sbin/ip route add default via $PPP_REMOTE dev $PPP_IFACE table ppp

  /sbin/ip rule add from $PPP_LOCAL/32 table ppp
  /sbin/ip rule add to $PPP_LOCAL/32 table ppp
fi

script ip-down

#!/bin/sh

if [ "$PPP_IPPARAM" = "amsterdam" ] ; then

  /sbin/ip route del $PPP_LOCAL/24 dev $PPP_IFACE src $PPP_LOCAL table ppp
  /sbin/ip route del default via $PPP_REMOTE dev $PPP_IFACE table ppp

  /sbin/ip rule del from $PPP_LOCAL/32 table ppp
  /sbin/ip rule del to $PPP_LOCAL/32 table ppp
fi

Isso funciona perfeitamente e eu posso escolher o segundo gateway sempre que necessário.

    
por 15.11.2016 / 20:41
0

Você pode usar route ou o mais recente ip route para configurar rotas:

ip route

mostra as rotas existentes e

ip route del default via 167.41.133.218
ip route add default via 10.126.0.29

substitui a rota padrão por eth1 por uma rota acima de ppp0

O "se especificamente solicitado" é um problema - você define rotas por endereço de destino, não por programa. Portanto, se você souber quais endereços deseja contatar via ppp0 , poderá definir esses endereços como rotas não padrão.

Como alternativa, você pode usar namespaces de rede para que alguns programas sejam usados uma configuração de rede diferente, mas isso não é tão fácil de configurar e tem algumas armadilhas (por exemplo, diferentes resolv.conf são necessários).

    
por 12.10.2016 / 07:34

Tags