Маршрутизация всего трафика через VPN в Ubuntu Linux


13

После многих часов поиска и устранения неисправностей, поиска потенциальных решений на этом и других сайтах, и я смирился, чтобы попросить совета у моих игроков. Я работаю над маршрутизацией всего сетевого трафика на экземпляре Ubuntu через Cisco VPN в университете. Используя встроенный сетевой менеджер или vpnc, я могу успешно установить соединение с VPN и успешно маршрутизировать трафик на любой университетский IP через VPN. Однако, помимо этих конкретных диапазонов IP-адресов, я не могу придумать какой-либо маршрут, который успешно сопоставит весь сетевой трафик через VPN.

До сих пор я пытался:

добавление маршрута -net 0.0.0.0 gw homeportal dev tun0
добавление маршрута -net 0.0.0.0 tun0
добавление маршрута -net 0.0.0.0 gw 128.122.252.77 dev tun0
route add -net 0.0.0.0 gw 128.122.252.77 dev eth0
iptables -A FORWARD -o tun0 -j ПРИНЯТЬ
iptables -A FORWARD -i tun0 -j ПРИНЯТЬ
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

И многие другие глупые, неэффективные вещи, которые я не могу вспомнить достаточно хорошо, чтобы транскрибировать точно.

Кроме того, я пробовал маршрутизировать меньшие диапазоны IP-адресов и конкретные IP-адреса, но безрезультатно. Я не совсем уверен, что происходит не так, как следствия, которые я смог наблюдать, это сбои разрешения имен и сбои маршрутизации трафика через VPN. Что я здесь не так делаю?

Редактировать-

Вот вывод ip route showпосле запуска VPN-соединения с VPNC:

по умолчанию через 192.168.1.254 dev eth0 proto static 
10.0.0.0/8 dev tun0 scope link 
91.230.41.0/24 dev tun0 scope link 
128.122.0.0/16 dev tun0 scope link 
128.122.252.68 через 192.168.1.254 dev eth0 src 192.168.1.32 
128.122.253.46 dev tun0 scope link 
128.122.253.79 dev tun0 scope link 
172.16.0.0/12 dev tun0 scope link 
192.168.0.0/16 dev tun0 scope link 
192.168.1.0/24 dev eth0 прото ядро ​​ссылка на канал src 192.168.1.32 метрика 1 
193.175.54.0/24 dev tun0 scope link 
193.205.158.0/25 dev tun0 scope link 
193.206.104.0/24 dev tun0 scope link 
195.113.94.0/24 dev tun0 scope link 
203.126.200.0/24 dev tun0 scope link 
203.174.165.128/25 dev tun0 scope link 
212.219.93.0/24 dev tun0 scope link 
216.165.0.0/17 dev tun0 scope link

Дополнительная информация-

Я успешно перенаправил произвольный трафик через этот VPN в MS Windows через клиент Cisco AnyConnect с конфигурацией по умолчанию. Вот как выглядит таблица маршрутизации, когда работает клиент AnyConnect (это другой компьютер за тем же маршрутизатором на 192.168.1.254).

Таблица маршрутов IPv4
================================================== =========================
Активные маршруты:
Метрика интерфейса сетевого шлюза сети назначения
          0.0.0.0 0.0.0.0 192.168.1.254 192.168.1.13 30
         10.0.0.0 255.0.0.0 192.168.128.1 192.168.128.197 2
      91.230.41.0 255.255.255.0 192.168.128.1 192.168.128.197 2
        127.0.0.0 255.0.0.0 On-link 127.0.0.1 306
        127.0.0.1 255.255.255.255 On-link 127.0.0.1 306
  127.255.255.255 255.255.255.255 On-link 127.0.0.1 306
      128.122.0.0 255.255.0.0 192.168.128.1 192.168.128.197 2
   128.122.252.68 255.255.255.255 192.168.1.254 192.168.1.13 31
       172.16.0.0 255.240.0.0 192.168.128.1 192.168.128.197 2
      192.168.0.0 255.255.0.0 192.168.128.1 192.168.128.197 2
      192.168.1.0 255.255.255.0 On-link 192.168.1.13 286
     192.168.1.13 255.255.255.255 On-link 192.168.1.13 286
    192.168.1.254 255.255.255.255 On-link 192.168.1.13 31
    192.168.1.255 255.255.255.255 On-link 192.168.1.13 286
     192.168.31.0 255.255.255.0 On-link 192.168.31.1 276
     192.168.31.1 255.255.255.255 On-link 192.168.31.1 276
   192.168.31.255 255.255.255.255 On-link 192.168.31.1 276
    192.168.128.0 255.255.255.0 On-link 192.168.128.197 257
  192.168.128.197 255.255.255.255 On-link 192.168.128.197 257
  192.168.128.255 255.255.255.255 On-link 192.168.128.197 257
    192.168.203.0 255.255.255.0 On-link 192.168.203.1 276
    192.168.203.1 255.255.255.255 On-link 192.168.203.1 276
  192.168.203.255 255.255.255.255 On-link 192.168.203.1 276
     193.175.54.0 255.255.255.0 192.168.128.1 192.168.128.197 2
    193.205.158.0 255.255.255.128 192.168.128.1 192.168.128.197 2
    193.206.104.0 255.255.255.0 192.168.128.1 192.168.128.197 2
     195.113.94.0 255.255.255.0 192.168.128.1 192.168.128.197 2
    203.126.200.0 255.255.255.0 192.168.128.1 192.168.128.197 2
  203.174.165.128 255.255.255.128 192.168.128.1 192.168.128.197 2
     212.219.93.0 255.255.255.0 192.168.128.1 192.168.128.197 2
      216.165.0.0 255.255.128.0 192.168.128.1 192.168.128.197 2
        224.0.0.0 240.0.0.0 On-link 127.0.0.1 306
        224.0.0.0 240.0.0.0 On-link 192.168.1.13 286
        224.0.0.0 240.0.0.0 On-link 192.168.203.1 276
        224.0.0.0 240.0.0.0 On-link 192.168.31.1 276
        224.0.0.0 240.0.0.0 On-link 192.168.128.197 10000
  255.255.255.255 255.255.255.255 On-link 127.0.0.1 306
  255.255.255.255 255.255.255.255 On-link 192.168.1.13 286
  255.255.255.255 255.255.255.255 On-link 192.168.203.1 276
  255.255.255.255 255.255.255.255 On-link 192.168.31.1 276
  255.255.255.255 255.255.255.255 On-link 192.168.128.197 10000
================================================== =========================

Я предполагаю, что будет ясно, что сетевая маршрутизация является для меня совершенно новой, поэтому я был бы признателен за достаточно высокий уровень детализации в ответах.
deftfyodor

1
Было бы полезно, если бы вы могли указать, используете ли вы какой-либо клиент (anyconnect?), И если вы можете опубликовать свою таблицу маршрутизации, спасибо.
MariusMatutiae

Сделайте это, используя ip route, кстати.
user1686

2
Да, пожалуйста, не используйте устаревшие команды маршрутизации: используйте ip route show для таблицы маршрутизации. Устаревшие команды скрывают некоторые сложности, которые возможны и полезны также с VPN, не говоря уже о VLAN, ...
MariusMatutiae

@grawity, @MariusMatutiae - Конечно, я редактировал вопрос с помощью вывода команды. Спасибо за упоминание ip routeкоманды, я не сталкивался с ней раньше.
deftfyodor

Ответы:


3

Ваша локальная сеть - 192.168.1.0/24, как показано этой строкой в ​​вашей таблице маршрутизации:

 192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.32  metric 1

Ваша сеть VPN 10.0.0.0/8, как показано этой строкой:

 10.0.0.0/8 dev tun0  scope link 

В настоящее время ваш маршрутизатор по умолчанию:

 default via 192.168.1.254 dev eth0  proto static 

это, конечно, то, что вы не хотите, потому что он принадлежит вашей локальной сети: таким образом, все ваши вещи маршрутизируются через ваш локальный шлюз, как будто VPN не существует.

 You do have however, the all-important statement

 128.122.252.68 via 192.168.1.254 dev eth0  src 192.168.1.32  

какой маршрут к вашему VPN-провайдеру.

РЕДАКТИРОВАТЬ:

Я не понял, что таблица маршрутизации - это просто таблица, полученная из вашего VPN, без вашего вмешательства. Это может указывать (косвенно), что ваш поставщик услуг желает пересылать только трафик, явно разрешенный в вашей таблице, через интерфейс tun0, и, возможно, предпринял дальнейшие шаги для блокирования всего другого трафика, и в этом случае ваши усилия будут тщетными.

Однако, если ваш провайдер готов перенаправить весь ваш трафик, вам нужно сделать следующее.

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

1) Когда компьютер подключен к VPN, попробуйте следующую команду:

   sudo dhclient -v tun0

Если все идет хорошо, вы должны увидеть ответ, содержащий следующую строку:

 DHCPOFFER of a.b.c.d from x.y.w.z

xywz - это IP-адрес локального шлюза. Возможно, вам придется отключить VPN после этого теста и, возможно, даже перезагрузить компьютер, потому что мы только что испортили таблицу маршрутизации.

2) В качестве альтернативы вы можете попробовать перейти на один из разрешенных сайтов (те, которые отображаются в вашей таблице маршрутизации как проходящие через интерфейс tun0 ), а затем выполнить команду:

  ip neigh show

Вы должны получить список устройств, с которыми связались по протоколу ARP, с MAC и IP-адресом; скорее всего, вы получите либо ноль, либо один ответ. Если вы получили один ответ, то это ваш маршрутизатор.

3) Если вы не получили такой ответ, вы можете попробовать с

  sudo nmap -sn 10.0.0.0/8

(что будет очень медленно). Ваш шлюз будет одним из перечисленных, скорее всего, с адресом, оканчивающимся на .1 или .254, если таковой существует.

4) Используйте команду tcpdump:

  sudo tcpdump -n -i tun0

и увидеть IP-адреса, выбрасываемые командой.

Если вы также не получили правильного ответа на этот тест, это означает, что кто-то действительно затянул винты в своей сети.

Но давайте будем оптимистичны и предположим, что теперь у вас есть кандидатский IP-адрес xwyz для удаленного маршрутизатора. Вам нужно будет удалить шлюз по умолчанию (как sudo!):

  ip route del default via 192.168.1.254

добавить новый:

  ip route add default via x.w.y.z 

и попробуйте ориентироваться.

Позвольте мне повторить: поскольку ваш провайдер разрешил трафик только на несколько выбранных IP-адресов через свою VPN, возможно, он принял дополнительные меры (= брандмауэр), чтобы не дать умному пользователю принудительно использовать общий трафик через свою VPN. В этом случае вы ничего не можете сделать. Но если он этого не сделал, вышеуказанные шаги должны помочь вам найти решение.


Спасибо за очень тщательно продуманный ответ, однако во втором тайме я испытываю небольшую икоту. вывод ip addr show dev tun0reads 10: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1412 qdisc pfifo_fast state UNKNOWN group default qlen 500 link/none inet 192.168.128.193/24 brd 192.168.128.255 scope global tun0 valid_lft forever preferred_lft foreverбез адреса однорангового узла, который будет наблюдаться. Кроме того, таблица маршрутизации, которую я разместил ранее, не была изменена мной вообще - она ​​была полностью сгенерирована клиентом vpn.
deftfyodor

@deftfyodor Пожалуйста, смотрите мои изменения.
MariusMatutiae

Используя команду tcpdump, я действительно смог распознать шлюз и направить на него трафик по умолчанию. К сожалению, он все еще работает только для специально подготовленных диапазонов IP-адресов. Я, конечно, склонен полагать, что есть некоторые дополнительные меры безопасности на месте - однако у меня нет никаких проблем с маршрутизацией произвольного трафика через ту же VPN в MS Windows с использованием клиента AnyConnect - так что наверняка должно быть что-то еще.
deftfyodor

@deftfyodor Можете ли вы проверить, отличается ли ваша таблица маршрутизации в Windos от таблицы Linux?
MariusMatutiae

В целом это похоже, хотя есть некоторые элементы, которые отличаются, в частности, 0.0.0.0 настроен на маршрутизацию через мой сетевой маршрутизатор в качестве шлюза, удерживая шлюз VPN в качестве интерфейса. Я отредактировал вопрос, чтобы показать таблицу маршрутизации Windows.
deftfyodor

3

Во всех ваших routeкомандах отсутствуют маски сетей, поэтому они соответствуют только конкретному 0.0.0.0адресу, а не всему интернету. Так замените 0.0.0.0с 0.0.0.0/0в первой команде вы пытались:

ip route add -net 0.0.0.0/0 gw homeportal dev tun0

Может быть одно предупреждение, которое я не уверен, что ваш VPN-клиент решает сам: конечную точку туннеля нужно исключить из маршрутизации через VPN, она должна быть направлена ​​через ваш eth0интерфейс. Поэтому, если добавление этого маршрута по умолчанию нарушает вашу VPN, добавьте конкретный маршрут для вашей конечной точки VPN:

ip route add <ENDPOINT>/32 dev eth0


2
Я думаю, что второй должен быть ip route, нет? Кроме того , в то время как это всегда хорошая идея , чтобы добавить сетевые маски, то кажется , что routeпредполагает / 0 при добавлении 0.0.0.0
user1686
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.