Перенаправлення мережевого трафіку на vpn


1

У мене є маршрутизатор сервера ubuntu. Тепер я хотів би прокласти весь трафік з підмережі 1 (192.168.1.0) через vpn-з'єднання. Це працює лише тоді, коли я дозволяю серверу vpn відштовхувати маршрути до мого маршрутизатора, але тепер subnet2 (192.168.2.0) і трафік, що надходить від самого маршрутизатора, також тунельований через vpn.

Хто-небудь може сказати мені, як встановити маршрути так, щоб тільки трафік з subnet1 переходив у з'єднання vpn, а трафік з subnet2 та з самого сервера прямував до Інтернету?

Таблиця маршрутизації без vpn:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         31.19.38.254    0.0.0.0         UG    0      0        0 eth0
31.19.38.0      0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.128 U     0      0        0 p1p1
192.168.2.0     0.0.0.0         255.255.255.128 U     0      0        0 p1p2

з увімкненим протоколом шлюзу vpn

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.9.0.41       128.0.0.0       UG    0      0        0 tun0
0.0.0.0         31.19.38.254    0.0.0.0         UG    0      0        0 eth0
10.9.0.1        10.9.0.41       255.255.255.255 UGH   0      0        0 tun0
10.9.0.41       0.0.0.0         255.255.255.255 UH    0      0        0 tun0
31.19.38.0      0.0.0.0         255.255.255.0   U     0      0        0 eth0
128.0.0.0       10.9.0.41       128.0.0.0       UG    0      0        0 tun0
192.168.1.0     0.0.0.0         255.255.255.128 U     0      0        0 p1p1
192.168.2.0     0.0.0.0         255.255.255.128 U     0      0        0 p1p2
209.95.51.97    31.19.38.254    255.255.255.255 UGH   0      0        0 eth0

Інтерфейси:

eth0      Link encap:Ethernet  HWaddr d0:50:99:26:c9:62  
          inet addr:31.19.38.94  Bcast:31.19.38.255  Mask:255.255.255.0
          inet6 addr: fe80::d250:99ff:fe26:c962/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

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

p1p1      Link encap:Ethernet  HWaddr 00:15:17:94:4c:16  
          inet addr:192.168.1.1  Bcast:192.168.1.127  Mask:255.255.255.128
          inet6 addr: fe80::215:17ff:fe94:4c16/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

p1p2      Link encap:Ethernet  HWaddr 00:15:17:94:4c:17  
          inet addr:192.168.2.1  Bcast:192.168.2.127  Mask:255.255.255.128
          inet6 addr: fe80::215:17ff:fe94:4c17/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.9.0.54  P-t-P:10.9.0.53  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1

Яка підмережа підключена до Інтернету?
Рамхаунд

на даний момент 192.168.0.0/16 пересилається до eth0.
Стефан

Отже, VPN є у вашій інтрамережі чи Інтернеті?
Рамхаунд

Починай тут. lartc.org/howto/lartc.rpdb.multiple-links.html потім здійснюйте пошук навколо, в основному вам потрібні дві таблиці маршрутизації, одна перенаправлена, а одна ні, і вам потрібні правила, щоб змусити мережі використовувати ту чи іншу.
Зоредаче

Дякую, що сайт дуже допоміг. Тож у моєму випадку я б дозволю стандартній таблиці маршрутизації такою, якою вона є, і лише видалити правило для subnet1 і додати цю до нової таблиці? Де мені додати правило про те, що трафік vpn проходить через eth0? Вибачте, що задали стільки питань. Ніколи раніше не доводилося працювати з таблицями маршрутизації.
Стефан

Відповіді:


1

Zoredache поставив вас на правильний шлях. Деталі відповіді такі:

  1. Залиште VPN таким, яким він є, це встановить таблицю маршрутизації за замовчуванням, яку називають main;

  2. Тепер ми встановлюємо другу таблицю маршрутизації для пакетів, які не повинні проходити через VPN. Ми називаємо нову таблицю маршрутизації novpn(я не згоден)

    echo 200 novpn >> /etc/iproute2/rt_tables
    ip route add 31.19.38.0/24 dev eth0 src YourIP table novpn
    ip route add default via 31.19.38.254 table novpn
    ip route add 192.168.1.0/24 dev p1p1 table novpn
    ip route add 192.168.2.0/24 dev p1p2 table novpn
    

    У вищесказаному YourIP- IP-адреса вашого eth0інтерфейсу.

  3. Тепер ми встановлюємо правила для розрізнення того, що відбувається через VPN, а що ні:

    ip rule add from 192.168.1.0/24 table main
    ip rule add from 192.168.2.0/24 table novpn
    

    Не забудьте використовувати ключове правило,

    iptables -t nat -A POSTROUTING -j MASQUERADE
    

    і щоб дозволити переадресацію ipv4, і ви закінчили.


Це нарешті спрацювало. Дякую. У мене просто проблема з трафіком із сервера. Sub1 використовує vpn і підмережу 2, як слід, але трафік з сервера також використовує з'єднання vpn. Я спробував додати ip правило add з 127.0.0.1/1 таблиці novpn, але тоді subnet1 не використовує vpn.
Стефан

Це неправильне правило, pls видаліть його. Ви повинні використовувати замість цього ip rule add from YourIP table novpn. де, знову ж таки, YourIPIP-адреса eth0інтерфейсу.
MariusMatutiae

Я додав правило, але нічого не змінилося.
Стефан

@Stefan Для цього нового правила слід додати більш високий пріоритет (= нижче число !!!), ніж правило для всієї мережі, 192.168.1.0/24. Прочитайте тут superuser.com/questions/359923/…
MariusMatutiae
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.