LINUX.ORG.RU
ФорумAdmin

Ubuntu Server как сделать и клиент OpenVPN и интернет?

 


0

1

Здравствуйте!

Тут пробовал и так и так, не получается не как. Есть Ubuntu server на котором 3 сетевые карты.

1) Интернет (PPPoE)
2) Нужен что бы выходил местный интернет PPPoE
3) Нужен что бы выходил интернет через Францию (клиент OpenVPN)

вот вывод ifconfig

lo        Link encap:Локальная петля (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:2 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:176 (176.0 B)  TX bytes:176 (176.0 B)

p4p1      Link encap:Ethernet  HWaddr 50:e5:49:1a:30:87  
          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

p5p1      Link encap:Ethernet  HWaddr 84:c9:b2:7d:93:29  
          inet6 addr: fe80::86c9:b2ff:fe7d:9329/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:216 errors:0 dropped:0 overruns:0 frame:0
          TX packets:753 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:28928 (28.9 KB)  TX bytes:76070 (76.0 KB)

p5p2      Link encap:Ethernet  HWaddr c4:6e:1f:04:3d:90  
          inet addr:192.168.2.1  Bcast:192.168.2.255  Mask:255.255.255.0
          inet6 addr: fe80::c66e:1fff:fe04:3d90/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:881 errors:0 dropped:0 overruns:0 frame:0
          TX packets:288 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:77361 (77.3 KB)  TX bytes:30623 (30.6 KB)

ppp0      Link encap:Протокол PPP (Point-to-Point Protocol)  
          inet addr:88.87.81.179  P-t-P:10.93.255.126  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1492  Metric:1
          RX packets:203 errors:0 dropped:0 overruns:0 frame:0
          TX packets:734 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3 
          RX bytes:23497 (23.4 KB)  TX bytes:58883 (58.8 KB)

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.8.100.6  P-t-P:10.8.100.5  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:1 errors:0 dropped:0 overruns:0 frame:0
          TX packets:29 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:70 (70.0 B)  TX bytes:1986 (1.9 KB)

Andrei_IW
() автор топика

Каким образом решается откуда выходить?

at ★★
()
Ответ на: комментарий от Andrei_IW

Что бы после подключения pppoe заработало корректно подключение по OpenVPN в клиенте OpenVPN добавлен маршрут

ip ro add x.x.103.152 dev ppp0

где x.x.103.152 - это ip адрес OpenVPN сервера.

Andrei_IW
() автор топика
Ответ на: комментарий от Andrei_IW

А дальше я хочу раздавать интернет так:

Местный интернет
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o ppp0 -j MASQUERADE

и

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o tun0 -j MASQUERADE

Andrei_IW
() автор топика
Ответ на: комментарий от Andrei_IW

И вот что получается, что когда поднят OpenVPN то раздаётся интернет который идёт через Французкий OpenVPN. Местный интернет не раздаётся.

А когда отключаю OpenVPN то местный интернет начинает работать, а интернет через OpenVPN не работает.

Andrei_IW
() автор топика
Ответ на: комментарий от Andrei_IW

А вообще это возможно? Ну что бы одновременно через одну сетевую карту раздавать местный интернет, а через другую сетевую карту раздавать интернет который идёт через OpenVPN?

Andrei_IW
() автор топика
Ответ на: комментарий от Andrei_IW

LARTC HOWTO.

Это так книжка называется.

Вкратце. Нужен список подсетей местного интернета, его маршрутизируешь в один шлюз. Всё остальное в другой(VPN). И все счастливы.

shell-script ★★★★★
()
Ответ на: комментарий от Andrei_IW

Есть одно важно правило - после подъема туннеля нужно не допустить изменения маршрута по которому ходят пакеты самого туннеля.

Т.е. если после подъема туннеля ты просто добавишь default route через сам туннель, то туннель умрет.

Чтоб избежать такой проблемы нужно в явном виде добавить маршрут до удаленной стороны туннеля. Такой маршрут не перекроют более общие маршруты.

openvpn хорош как раз тем, что он умеет добавлять такой маршрут (со стороны сервера «push route remote_host 255.255.255.255 net_gateway»).

vel ★★★★★
()
Ответ на: комментарий от Deleted

скорее всего нет. А вот с настройкой роутинга придется помучиться.

Про iptables тоже нужно не забыть. Через какой-то из тунелей придется натить.

vel ★★★★★
()
Ответ на: комментарий от vel

Как я понял, ему надо, чтобы клиенты с первой локалки (на первой сетевухе) пользовались одним интернетом, а со второй локалки (на второй сетевухе) - другим. Не представляю, как тут можно обойтись без policy routing.

Deleted
()

Как-то так:

ip ro add default via 10.93.255.126 dev ppp0 table 1111
ip ro add default via 10.8.100.5 dev tun0 table 2222
ip ru add from 192.168.2.0/24 lookup 1111
ip ru add from 192.168.1.0/24 lookup 2222
192.168.2.0/24 - через PPPoE, 192.168.1.0/24 - через VPN

ну и не забыть правила маскарадинга добавить

ZhuKoV
()
Ответ на: комментарий от ZhuKoV

А если учесть, что default изначально через ppp0, то хватит и такого:

ip ro add default via 10.8.100.5 dev tun0 table 1111
ip ru add from 192.168.1.0/24 lookup 1111

ZhuKoV
()
Ответ на: комментарий от Andrei_IW

И как быть с маршрутом

ip ro add x.x.103.152 dev ppp0
Без него OpenVPN не раздаёт интернет Франции. Я уже сейчас не помню почему, но там что то связано с тем, что когда поднимается PPPoE он как-то нарушает маршруты OpenVPN.

Andrei_IW
() автор топика
Ответ на: комментарий от Andrei_IW

Добавил правила

ip ro add default via 10.93.255.126 dev ppp0 table 1111
ip ro add default via 10.8.100.5 dev tun0 table 2222
ip ru add from 192.168.2.0/24 lookup 1111
ip ru add from 192.168.1.0/24 lookup 2222
Не успел добавить правила Маскарадинга, два интерфейса p4p1(192.168.1.1) и p5p2(192.168.2.1) сразу перестали работать. Эти интерфейсы перестали пинговаться из двух сетей. Пришлось подходить непосредственно к серверу и перезагружать машину.

Andrei_IW
() автор топика
Ответ на: комментарий от Andrei_IW

При добавлении строк

ip ro add default via 10.8.100.5 dev tun0 table 1111
ip ru add from 192.168.1.0/24 lookup 1111
перестаёт отвечать на все запросы интерфейс p4p1(192.168.1.1) и уже не помогло то, что я прописал маскарадинг. Всё равно, интерфейс как будто умер.

Andrei_IW
() автор топика
Ответ на: комментарий от Andrei_IW

Не понятно, почему после прописания

ip ro add default via 10.8.100.5 dev tun0 table 1111
ip ru add from 192.168.1.0/24 lookup 1111

перестаёт работать интерфейс? Как будто намертво зависает.

Andrei_IW
() автор топика
Ответ на: комментарий от Andrei_IW

Вот вывод команды ip route list

0.0.0.0/1 via 10.8.100.5 dev tun0 
default dev ppp0  scope link 
10.8.100.0/24 via 10.8.100.5 dev tun0 
10.8.100.5 dev tun0  proto kernel  scope link  src 10.8.100.6 
10.93.255.126 dev ppp0  proto kernel  scope link  src 88.87.81.179 
128.0.0.0/1 via 10.8.100.5 dev tun0 
192.168.1.0/24 dev p4p1  proto kernel  scope link  src 192.168.1.1 
192.168.2.0/24 dev p5p2  proto kernel  scope link  src 192.168.2.1 
213.133.103.152 dev ppp0  scope link 
Получается что у меня весь трафик идёт через OpenVPN. Может сначала удалить маршрут от OpenVPN?

Andrei_IW
() автор топика
Ответ на: комментарий от Andrei_IW

Или покажу иначе netstat -n -r

Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0         10.8.100.5      128.0.0.0       UG        0 0          0 tun0
0.0.0.0         0.0.0.0         0.0.0.0         U         0 0          0 ppp0
10.8.100.5      0.0.0.0         255.255.255.255 UH        0 0          0 tun0
10.93.255.126   0.0.0.0         255.255.255.255 UH        0 0          0 ppp0
128.0.0.0       10.8.100.5      128.0.0.0       UG        0 0          0 tun0
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 p4p1
192.168.2.0     0.0.0.0         255.255.255.0   U         0 0          0 p5p2
213.133.103.152 0.0.0.0         255.255.255.255 UH        0 0          0 ppp0

Для начала, как я думаю надо удалить самый первый маршрут. делаю так

route del -net 0.0.0.0 netmask 255.255.255.255 gw 10.8.100.5 dev tun0
А мне в ответ SIOCDELRT: Нет такого процесса. О как. Но в таблице то он есть. Что не так?

Andrei_IW
() автор топика
Ответ на: комментарий от Andrei_IW

не используй route! Эта старинная православная поделка сейчас уже не акуальна. «ip ro del 0.0.0.0/1» - удалит первый маршрут.

тому кто придумал конструкцию 0.0.0.0/1 + 128.0.0.0/1 вместо default нужно в голову вбить гвоздь! Для решения этой проблемы есть метрики маршрутов.

Проблему тебе создает строка «default dev ppp0 scope link» — она в main лишняя.

У тебя должны быть правила

from all lookup local
from all lookup main
from all fwmark 0x1 lookup 101
from all lookup 100

В таблицу 100 вписываем dgw через pppoe. это замечательно делается в скрипте /etc/ppp/ip-up и не забыть про nodefaultroute в конфиге pppoe

В таблицу 101 вписываем dgw через openvpn. там тоже есть возможность выполнить скрипт после подъема туннеля. Как запретить openvpn добавлять маршруты 0.0.0.0/1 & 128.0.0.0/1 - не знаю, но думаю, что это не проблема.

Важно, чтобы в таблице main не было dgw вообще!

В iptables/mangle маркируешь пакеты которые должны ходить через openvpn

В iptables/nat SNAT/MASQUERADE для всего что уходит через туннель и pppoe с адресам источника отличным от адреса интерфейса.

Для старых ядер (до 3.6?) желательно после добавления маршрутов делать «ip ro flush table cache»

vel ★★★★★
()
Ответ на: комментарий от vel

Подскажите, я просто тут не очень селён, куда вписать

from all lookup local
from all lookup main
from all fwmark 0x1 lookup 101
from all lookup 100

Пока хочу вручную сделать что бы всё заработало, потом уже буду думать как автоматизировать.

Andrei_IW
() автор топика
Ответ на: комментарий от Andrei_IW

Как я понял, что эта таблица маршрутизации

from all lookup local
from all lookup main
from all fwmark 0x1 lookup 101
from all lookup 100

Его получается надо вписывать в файл /etc/iproute2/rt_tables? Верно?

Andrei_IW
() автор топика
Ответ на: комментарий от Andrei_IW
ip ru add pref 100 unicast table main
ip ru add pref 120 fwmark 7 lookup 101
ip ru add pref 140 lookup 100

/etc/iproute2/rt_tables это таблица имен для таблиц маршрутизации. Для работы она не нужна.

а толку от этого удаления половины маршрутов?

vel ★★★★★
()
Последнее исправление: vel (всего исправлений: 1)
Ответ на: комментарий от vel

Хорошо, делаю так. Включаю сервер, он сам подключается к pppoe и поднимает OpenVPN. Весь трафик уходит на OpenVPN. Далее я делаю так. В консоле ввожу следующие команды по очереди

ip ru add pref 100 unicast table main
ip ru add pref 120 fwmark 7 lookup 101
ip ru add pref 140 lookup 100

После я делаю команду

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o tun0 -j MASQUERADE
На интерфейсе p4p1 192.168.1.0 интернета нету. Перезапускаю службу OpenVPN, Интернет от VPN пошёл в сеть. Ага, хорошо.

Andrei_IW
() автор топика
Ответ на: комментарий от Andrei_IW

Продолжаю, делаю

iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o ppp0 -j MASQUERADE
Проверяю интерфейс p5p2 192.168.2.0 интернета нету. Удаляю лишний маршрут
route del -net 0.0.0.0 netmask 128.0.0.0 gw 10.8.100.5 dev tun0
Месный интернет на p5p2 192.168.2.0 пошёл. И тут же пропал Интернет OpenVPN на интерфейсе p4p1 192.168.1.0. Что не так?

Andrei_IW
() автор топика
Ответ на: комментарий от Andrei_IW

Ещё не понятно, почему при командах

ip ro add default via 10.8.100.5 dev tun0 table 1111
ip ru add from 192.168.1.0/24 lookup 1111
Интерфейс p4p1 192.168.1.0 повисает? Ведь по сути, что мы делаем, первой строчкой мы создаём таблицу с именем 1111 и кладём в эту таблицу маршрут ip ro add default via 10.8.100.5 по умолчанию. А дальше для 192,168,1,0 мы указываем смотреть на сделанную нами таблицу.

Собственно почему же тогда перестаёт откликаться интерфейс p4p1 192.168.1.0?

Andrei_IW
() автор топика
Ответ на: комментарий от Andrei_IW

И ещё я не как не могу понять эти строки

from all lookup local
from all lookup main
from all fwmark 0x1 lookup 101
from all lookup 100
Как их интерпретировать? Что это за строки?

Andrei_IW
() автор топика
Ответ на: комментарий от Andrei_IW

Блин не когда не думал, что будет так сложно сделать маршрутизацию. А нет какого нибудь инструмента, утилиты, которой можно было бы указать к примеру:

Берём интернет от OpenVPN и раздаём его на серевую карту 1.
Берём интернет от PPPoE и раздаём её на сетевую карту 2.
Andrei_IW
() автор топика
Ответ на: комментарий от vel

тому кто придумал конструкцию 0.0.0.0/1 + 128.0.0.0/1 вместо default нужно в голову вбить гвоздь! Для решения этой проблемы есть метрики маршрутов.

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

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

Deleted
()
Ответ на: комментарий от Deleted

Попробую упрошённо описать что я хочу сделать. Есть сервер, у него 3 сетевые карты

Сетевая карта 1 - Интернет по PPPoE и OpenVPN
Сетевая карта 2 - нужна раздача интернета OpenVPN
Сетевая карта 3 - нужна раздача интернета PPPoE

Подскажите как это можно сделать?

Andrei_IW
() автор топика
Ответ на: комментарий от Deleted

Ага, прочитал, так же прочитал статью http://www.k-max.name/linux/princip-raboty-routing-policy-database/ там более подробно написано. Но пока у меня каша в голове. Помогите разобраться.

Как я понял, что бы управлять маршрутами, создаются правела, которые обращаются к таблицам. То есть мне сначала надо сделать свою или свои таблицы. В этих таблицах нужно будет прописать маршруты. Подскажите как сделать две таблицы, пусть назовём их openvpn а другую pppoe.

Andrei_IW
() автор топика
Ответ на: комментарий от Andrei_IW

Выше человек писал пример, который не работает. Но из него можно что то взять. К примеру, вот если сделать так, будет правильно?

ip ro add default via 10.8.100.5 dev tun0 table openvpn

Здесь название таблицы OpenVPN, c указанием что шлюз по умолчанию 10.8.100.5 на интерфейсе tun0

ip ro add default via 10.93.255.126 dev ppp0 table pppoe

Всё верно?

Andrei_IW
() автор топика
Ответ на: комментарий от Andrei_IW

Но проблема в том, что шлюз по моим наблюдениям как на OpenVPN, так и на PPPoE не постоянен, он меняется. Тогда как правельнее написать маршруты?

И за одно, подскажите как можно будет удалить мною созданные таблички?

Andrei_IW
() автор топика
Ответ на: комментарий от Andrei_IW

Специально создавать таблицы не надо - в качестве имени таблицы можно использовать число от 1 до 252. Если хочется работать с именами, то в файл /etc/iproute2/rt_tables надо дописать строчку вида

<число> <имя таблицы>
Теперь к таблице можно обращаться по числу и имени.

Deleted
()
Ответ на: комментарий от Deleted

Ага, хочу создать две таблицы с маршрутами, делаю так

ip ro add default via 10.8.100.9 dev tun0 table 1
и
ip ro add default via 10.93.255.254 dev ppp0 table 2
Всё прошло без ошибок. Однако они в файле /etc/iproute2/rt_tables не появились. Вот этот файл
#
# reserved values
#
255	local
254	main
253	default
0	unspec
#
# local
#
#1	inr.ruhep

Тогда вопрос, а добавились ли таблицы? И если добавились то куда? Почему они не добавились в файл /etc/iproute2/rt_tables?

Andrei_IW
() автор топика
Ответ на: комментарий от Andrei_IW

Тогда вопрос, а добавились ли таблицы? И если добавились то куда? Почему они не добавились в файл /etc/iproute2/rt_tables?

Таблицы были _изначально_. В /etc/iproute2/rt_tables нужно писать только если хочешь дать таблице какое-то имя для своего удобства, ни для чего более этот файл не нужен. Посмотреть маршруты в таблице 1 можно командой

ip route show table 1
Deleted
()
Ответ на: комментарий от Andrei_IW

Странно в источниках пишут, что по умолчанию при создании маршрута в Linux, если не задано имя таблицы, то используется таблица с ID 254 (main). И вот открываю я на просмотр эту таблицу ip route list table main и вот что вижу

0.0.0.0/1 via 10.8.100.9 dev tun0 
default dev ppp0  scope link 
10.8.100.0/24 via 10.8.100.9 dev tun0 
10.8.100.9 dev tun0  proto kernel  scope link  src 10.8.100.10 
10.93.255.254 dev ppp0  proto kernel  scope link  src 88.87.81.179 
128.0.0.0/1 via 10.8.100.9 dev tun0 
192.168.1.0/24 dev p4p1  proto kernel  scope link  src 192.168.1.1 
192.168.2.0/24 dev p5p2  proto kernel  scope link  src 192.168.2.1 
213.133.103.152 dev ppp0  scope link 
Своих добавленных маршрутов не вижу. Подскажите где искать созданные мной маршруты? А может они совсем не создались?

Andrei_IW
() автор топика
Ответ на: комментарий от Andrei_IW

Да верно, команда

ip route show table 1
сработало, показав мою таблицу. Ага. А список созданных мной таблиц как то можно вывести? И важный вопрос, а как теперь удалить какую нибудь таблицу, к примеру таблицу 2?

Andrei_IW
() автор топика
Ответ на: комментарий от Andrei_IW

Еще раз, ты не создавал никаких таблиц. Они существовали _изначально_, в них только были добавлены маршруты.

Deleted
()
Ответ на: комментарий от Andrei_IW

Я нашёл команду для вывода всех таблиц

ip route show table all
Ну вот интересно, а как можно будет удалить ненужную таблицу? Ну или набранную неверно по ошибке? И остаются ли созданные мной таблицы после перезагрузки?

Andrei_IW
() автор топика
Ответ на: комментарий от Deleted

А как же тогда команда

ip route show table all
она мне выдала результат, весь писать не буду, но верхние строчки напишу
root@server2:~# ip route show table unspec
default via 10.8.100.9 dev tun0  table 1 
default via 10.93.255.254 dev ppp0  table 2 
0.0.0.0/1 via 10.8.100.9 dev tun0 
default dev ppp0  scope link 
10.8.100.0/24 via 10.8.100.9 dev tun0 
Как видно, первые две строки, в них указано что таблица 1 и таблица 2. Или таблица 1 и таблица 2 это просто два маршрута указанные в одной таблице main?

Andrei_IW
() автор топика
Ответ на: комментарий от Andrei_IW

А как же тогда команда...

Я не понял, что заставляет тебя считать, что что-то было иначе, чем я написал выше

Deleted
()
Ответ на: комментарий от Andrei_IW

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

ip ro add default via 10.8.100.9 dev tun0 table 1
ip ro add default via 10.93.255.254 dev ppp0 table 2

теперь настала очередь правила. Подскажите как его правильнее написать?

Andrei_IW
() автор топика
Ответ на: комментарий от Andrei_IW

А вот теперь самое не понятное. Опять блокируется сетевой интерфейс. Вот как мне предложили сделать

ip ru add from 192.168.1.0/24 lookup 1
а вот как я делал
ip rule add from 192.168.1.0/24 table 1

и так и так блокируется интерфейс p4p1 192.168.1.0 . Подскажите где ошибка?

Andrei_IW
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.