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


13

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

Поки я намагався:

Додавання маршруту -.0.0.0 gw homeportal dev tun0
маршрут add -net 0.0.0.0 tun0
маршрут add -net 0.0.0.0 gw 128.122.252.77 dev tun0
маршрут add -net 0.0.0.0 gw 128.122.252.77 dev eth0
iptables -A НАПЕРЕД -o tun0 -j ПРИЙМАНО
iptables -A Вперед, -i tun0 -j ПРИЙМАНО
iptables -t nat -A РОЗМІСТАННЯ -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 посилання на область дії 
91.230.41.0/24 dev tun0 посилання на область дії 
128.122.0.0/16 dev tun0 посилання на область дії 
128.122.252.68 через 192.168.1.254 dev eth0 src 192.168.1.32 
128.122.253.46 dev tun0 посилання на область дії 
128.122.253.79 dev tun0 посилання на область дії 
172.16.0.0/12 dev tun0 область посилання 
192.168.0.0/16 dev tun0 посилання на область дії 
192.168.1.0/24 dev eth0 proto ядро ​​області зв’язку src 192.168.1.32 метрика 1 
193.175.54.0/24 dev tun0 посилання на область дії 
193.205.158.0/25 dev tun0 посилання на область дії 
193.206.104.0/24 dev tun0 посилання на область дії 
195.113.94.0/24 dev tun0 область посилання 
203.126.200.0/24 dev tun0 область посилання 
203.174.165.128/25 dev tun0 посилання на область дії 
212.219.93.0/24 dev tun0 посилання на область застосування 
216.165.0.0/17 dev tun0 область посилання

Більше інформації-

Я успішно маршрутизував довільний трафік через цей 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, до речі.
користувач1686

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 tun0зчитування 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
user1686
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.