Назад | Перейти на главную страницу

Маршрутизация всех данных через VPN-туннель с помощью ppp

Я пытаюсь создать VPN-туннель, который пересылает все данные с локального компьютера на VPN-сервер. Я использую для этого ppp-2.4.5 со следующей конфигурацией:

pty "pptp <VPNServer> --nolaunchpppd"
name <my login name>
remotename PPTP
usepeerdns
require-mppe-128
file /etc/ppp/options.pptp
persist
maxfail 0
holdoff 5

У меня есть скрипт в if-up.d со следующим содержанием:

route del default eth0
route add default dev ppp0

Перед запуском VPN-туннеля моя маршрутизация выглядит так:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    2      0        0 eth0
127.0.0.0       127.0.0.1       255.0.0.0       UG    0      0        0 lo
192.168.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0

После запуска туннеля (через pon) это выглядит так:

 Kernel IP routing table
 Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
 0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 ppp0
 12.34.56.1      0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
 127.0.0.0       127.0.0.1       255.0.0.0       UG    0      0        0 lo
 192.168.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0

Теперь проблема в том, что туннель VPN кажется замкнутым сам в себе. Если я запустил ifconfig через несколько секунд без трафика:

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 192.168.0.10  netmask 255.255.0.0  broadcast 192.168.255.255
    ether 00:01:2e:2f:ff:35  txqueuelen 1000  (Ethernet)
    RX packets 39931  bytes 6784614 (6.4 MiB)
    RX errors 0  dropped 90  overruns 0  frame 0
    TX packets 34980  bytes 7633181 (7.2 MiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    device interrupt 20  memory 0xfbdc0000-fbde0000  

ppp0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1496
    inet 12.34.56.78  netmask 255.255.255.255  destination 12.34.56.1
    ppp  txqueuelen 3  (Point-to-Point Protocol)
    RX packets 7  bytes 94 (94.0 B)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 782863  bytes 349257986 (333.0 MiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

В нем говорится, что уже было отправлено более 300 МБ, ppp0 находится в сети всего несколько секунд, и соединение все равно не работает.

Может ли кто-нибудь помочь мне исправить таблицу маршрутизации, чтобы трафик от ppp0 не отправлялся снова через ppp0, а вместо этого шел на удаленный сервер?

Обновить

Я наконец решил это, создав следующий маршрут:

   route add -host <VPNServer> gw 192.168.0.1
   route add -net default gw 12.34.56.1

поэтому единственное, что было не так, я перепутал конечную точку VPN-соединения с IP-адресом самого VPN-сервера.

Просто с точки зрения сети вам все равно понадобится выход из eth0 для определенного IP-адреса для VPN-сервера (его внешний IP-адрес).

Вы можете добавить для этого маршрут в сценарий запуска или сценарий if-up. Не имеет значения, существует ли он, если маршрут по умолчанию уже существует, выходя из eth0.

Все остальные данные должны затем передаваться через ppp0 (который затем выводится через eth0 ..)