LINUX.ORG.RU
ФорумAdmin

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

 


0

1

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

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

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

Вот сейчас какая таблица получилась

netstat -n -r
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0         10.8.100.9      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.0      10.8.100.9      255.255.255.0   UG        0 0          0 tun0
10.8.100.9      0.0.0.0         255.255.255.255 UH        0 0          0 tun0
10.93.255.254   0.0.0.0         255.255.255.255 UH        0 0          0 ppp0
128.0.0.0       10.8.100.9      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


При этом интерфейс p5p2 192.168.2.0 работает, а интерфейс p4p1 192.168.1.0 заблокировался. Что не так?
Andrei_IW
() автор топика
Ответ на: комментарий от Andrei_IW

Подскажите каким способом, как написать ip route add что бы

192.168.1.0/24 шлюз был dev tun0
192.168.2.0/24 шлюз был dev pppoe

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

Пишу так

ip route add 192.168.1.0/24 via tun0
Ошибка
Error: an inet address is expected rather than "tun0"

route add 192.168.1.0/24 via 10.8.100.9
Ошибка
RTNETLINK answers: File exists

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

Пробую иначе, без /24

ip route add 192.168.1.0 via 10.8.100.9
Ошибка
RTNETLINK answers: File exists

Но я не сдаюсь, пробую разные варианты

ip route add default 192.168.1.0/24 via dev tun0
Ошибка
Error: either "to" is duplicate, or "192.168.1.0/24" is a garbage.

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

Мда, может кто подскажет, как правильно прописать маршрут, что бы

192.168.1.0/24 шлюз был dev tun0
192.168.2.0/24 шлюз был dev pppoe

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

с большей метрикой - никогда не должен идти. Проблему представлял кеш таблицы маршрутизации (до ядер 3.6) который нужно было чистить.

Пример

root@gw2:~# ip ro add 10.2.0.0/24 via 10.1.0.2 metric 2
root@gw2:~# ip ro add 10.2.0.0/24 via 10.0.0.2 metric 3
root@gw2:~# ip ro
default via 10.150.100.1 dev eth1  metric 1 
10.0.0.0/24 dev eth0  proto kernel  scope link  src 10.0.0.253 
10.1.0.0/24 dev dummy0  proto kernel  scope link  src 10.1.0.1 
10.2.0.0/24 via 10.1.0.2 dev dummy0  metric 2 
10.2.0.0/24 via 10.0.0.2 dev eth0  metric 3 
10.150.100.0/25 dev eth1  proto kernel  scope link  src 10.150.100.7 
127.0.0.0/8 dev lo  scope link 
root@gw2:~# ip ro get 10.2.0.2
10.2.0.2 via 10.1.0.2 dev dummy0  src 10.1.0.1 
    cache 
root@gw2:~# ip ro add 10.2.0.0/24 via 10.1.0.2 dev dummy0 metric 4
root@gw2:~# ip ro del 10.2.0.0/24 via 10.1.0.2 dev dummy0 metric 2
root@gw2:~# ip ro
default via 10.150.100.1 dev eth1  metric 1 
10.0.0.0/24 dev eth0  proto kernel  scope link  src 10.0.0.253 
10.1.0.0/24 dev dummy0  proto kernel  scope link  src 10.1.0.1 
10.2.0.0/24 via 10.0.0.2 dev eth0  metric 3 
10.2.0.0/24 via 10.1.0.2 dev dummy0  metric 4 
10.150.100.0/25 dev eth1  proto kernel  scope link  src 10.150.100.7 
127.0.0.0/8 dev lo  scope link 
root@gw2:~# ip ro get 10.2.0.2
10.2.0.2 via 10.0.0.2 dev eth0  src 10.0.0.253 
    cache 

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

default это маршрут 0.0.0.0/0

Что ты хочешь сделать командой «ip route add default 192.168.1.0/24 via dev tun0» не понятно.

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

гм - via говорит, что есть адрес шлюза.

dev - говорит, что через устройство.

если маршрут через интерфейс типа p2p, то «via» лишнее:

ip ro add 192.168.1.0/24 dev tun0

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

Удалил два маршрута по умолчанию от OpenVPN и от PPPoE, вот что получилось

root@server2:~# netstat -n -r
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags MSS Window irtt Iface
10.8.100.0      10.8.100.5      255.255.255.0   UG        0 0          0 tun0
10.8.100.5      0.0.0.0         255.255.255.255 UH        0 0          0 tun0
10.93.255.254   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

теперь хочу что бы подсеть 192.168.1.0/24 ходила через шлюз tun0. Делаю так

ip ro add 192.168.1.0/24 dev tun0
Ошибка
RTNETLINK answers: File exists

А теперь на что Linux ругается? Чего он не может понять?

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

дык уже есть такой «192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 p4p1»

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

Удалил два маршрута по умолчанию от OpenVPN и от PPPoE, вот что получилось

Обманывать — плохо!

128.0.0.0       10.8.100.5      128.0.0.0       UG        0 0          0 tun0
Пушкин удалять будет ?

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

Ага, спасибо, прихлопнул я и этот маршрут. Вот что получилось

root@server2:~# netstat -n -r
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags MSS Window irtt Iface
10.8.100.0      10.8.100.5      255.255.255.0   UG        0 0          0 tun0
10.8.100.5      0.0.0.0         255.255.255.255 UH        0 0          0 tun0
10.93.255.254   0.0.0.0         255.255.255.255 UH        0 0          0 ppp0
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

И опять ошибка

root@server2:~# ip route flush cache
root@server2:~# ip route add 192.168.1.0/24 dev tun0
RTNETLINK answers: File exists

Блин как же объяснить Линуксу, что подсеть 192.168.1.0/24 пускать через tun0?

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

«ip route flush cache» очистка кеша, а не таблицы маршрутизации!

ip ro del 192.168.1.0/24
ip ro add 192.168.1.0/24 dev tun0

или

ip ro change 192.168.1.0/24 dev tun0

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

Отписываюсь что получилось. Сделал я ip ro del 192.168.1.0/24 и удалился в таблице последний 192,168,1,0.

root@server2:~# netstat -n -r
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags MSS Window irtt Iface
10.8.100.0      10.8.100.5      255.255.255.0   UG        0 0          0 tun0
10.8.100.5      0.0.0.0         255.255.255.255 UH        0 0          0 tun0
10.93.255.254   0.0.0.0         255.255.255.255 UH        0 0          0 ppp0
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

После этого ip 192.168.1.1 перестал из сети пинговаться.

Далее я сделал ip ro add 192.168.1.0/24 dev tun0, команда прошла без ошибок.

root@server2:~# netstat -n -r
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags MSS Window irtt Iface
10.8.100.0      10.8.100.5      255.255.255.0   UG        0 0          0 tun0
10.8.100.5      0.0.0.0         255.255.255.255 UH        0 0          0 tun0
10.93.255.254   0.0.0.0         255.255.255.255 UH        0 0          0 ppp0
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 tun0
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
Пинги 192.168.1.1 из сети так и не пошли. Проверил ping 8.8.8.8 не идёт. Интернет не работает. далее делаю
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o tun0 -j MASQUERADE

Интернет не раздаётся.

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

То есть сейчас получается интернета нет как на сервере, так и он не раздаётся. Не понятно где засада, ведь сейчас чётко указано что бы подсеть 192,168,1,0.24 лезла через tun0. Что она не лезет? Что мешает?

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

И не понятно почему 192.168.1.1 перестал из сети вообще пинговаться. Маршрут то есть, интерфейс поднят. Блин что не так?

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

Ага, удалил маршрут

ip ro del 192.168.1.0/24
и добавил
ip ro add 192.168.1.0/24 dev p4p1

После этого пинг 192.168.1.1 из сети вернулся. Теперь вообще стало не понятно. Как сделать так, что бы подсеть 192.168.1.0/24 имела шлюз tun0 но при этом оставалась устройством p4p1.

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

Наглухо затыкается интерфейс 192.168.1.0/24

Вообще не пойму, что не так, почему не получается?

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

Попробовал сделать так

ip rule add from 192.168.1.0/24 table 1
ip route add default dev tun0 table 1

И так интерфейс 192.168.1.0/24 повисает наглухо. Спасает перезагрузка.

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

Не понимаю почему команда ip route add 192.168.1.0/24 via 10.8.100.5 не как не хочет срабатывать. Всё время выдаёт ошибку. Но почему?

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

Попробовал с удалёнными маршрутами добавить так

ip route add default via 10.93.255.254 (Это шлюз от PPPoE)
ip route add 192.168.1.0/24 via 10.8.100.5
И не добавляется, снова ошибка.

Как же мне добавить маршрут подсети 192.168.1.0/24 на шлюз 10.8.100.5?

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

Пробую такую команду

route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.8.100.5 tun0

Снова разрывается связь с 192.168.1.0/24 . Господи, что же не так?

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

При этом правиле

route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.8.100.5 tun0
Когда рвётся связь по локалке с 192.168.1.0 таблица получается такая
root@server2:~# netstat -n -r
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0         0.0.0.0         0.0.0.0         U         0 0          0 ppp0
10.8.100.0      10.8.100.5      255.255.255.0   UG        0 0          0 tun0
10.8.100.5      0.0.0.0         255.255.255.255 UH        0 0          0 tun0
10.93.255.254   0.0.0.0         255.255.255.255 UH        0 0          0 ppp0
192.168.1.0     10.8.100.5      255.255.255.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

В ней хорошо видно две записи

192.168.1.0     10.8.100.5      255.255.255.0   UG        0 0          0 tun0
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 p4p1

И почему первая запись с tun0 рвёт соеденение по локалке с 192,168,1,0.24?

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

Она же эта запись

192.168.1.0     10.8.100.5      255.255.255.0   UG        0 0          0 tun0


по идее должна сделать сети 192.168.1.0 маршрут по умолчанию tun0, по идее же так. А как маршрут по умолчанию заставляет рвать соединения по локалке?

Подскажите где я делаю не так?
Andrei_IW
() автор топика
Ответ на: комментарий от Andrei_IW

То что тебе предложил Zhukov на первая страница не работаеть?

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

Ура!!! Часть работы заработало. Расскажу что как делал. Перезагрузил сервер, и после этого удалил все лишние маршруты, оставив так:

root@server2:~# netstat -n -r
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags MSS Window irtt Iface
10.8.100.0      10.8.100.9      255.255.255.0   UG        0 0          0 tun0
10.8.100.9      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
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

далее ввожу строки

ip route add default via 10.8.100.5 dev tun0 table 1111
ip rule add from 192.168.1.0/24 lookup 1111
И тут же интерфейс 192.168.1.0/24 разрывается с локальной сеткой. Пинги на 192.168.1.1 прекращаются. Захожу на сервер с другой локалки 192.168.2.1 и ввожу следующею строку
ip rule add from 192.168.1.1 lookup main
И вуаля, сеть 192.168.1.0/24 заработала. Пинги из локалки пошли. Далее делаю так
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o tun0 -j MASQUERADE
И вуаля, всё что с tun0 началось раздаваться на локалку 192.168.1.0/24.

Теперь осталось сделать то-же самое только что бы с PPPoE начало раздаваться на сеть 192.168.2.0/24. Как сделаю, отпишусь.

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

Да, всё заработало. Ура!!! Теперь всё работает как надо. OpenVPN уходит на 192.168.1.0 а PPPoE уходит на 192.168.2.0.

Но теперь появился другой нюанс. А нюанс в том, что при каждом подключении PPPoE у него меняется шлюз. То он 10.93.255.254, то 10.93.255.126 и та далее. Та же картина и с OpenVPN, там так же меняется шлюз.

Можно ли ка кто строку

ip route add default via 10.8.100.5 dev tun0 table 1111
преобразовать, что бы шлюз был постоянно актуальный?

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

А то хотелось бы написать скрипт, который бы удалял лишние маршруты и добавлял нужные.

И если с удалением лишних маршрутов всё понятно, они постоянные и не меняются, то для добавления новых маршрутов нужно знать актуальные шлюзы PPPoE и OpenVPN. А вот тут уже загвоздка.

Нужно или как то скриптом узнавать маршруты PPPoE и OpenVPN или как то правило

ip route add default via 10.8.100.5 dev tun0 table 1111
как то поменять.

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

Всё сделал. Кому будет интересно выкладываю готовый скрипт, назвал его route.sh

#!/bin/bash

# Узнаю актуальные маршруты
gw_vpn=`ip -o -4 a l tun0 | cut -d " " -f 9 | cut -d / -f 1`
gw_pppoe=`ip -o -4 a l ppp0 | cut -d " " -f 9 | cut -d / -f 1`


# Удаляем маршруты по умолчанию, присвоенные OpenVPN
route del -net 0.0.0.0 netmask 128.0.0.0 gw $gw_vpn dev tun0
route del -net 128.0.0.0 netmask 128.0.0.0 gw $gw_vpn dev tun0

# Добавляем нужный маршрут в таблицу и роль для маршрута OpenVPN
ip route add default via $gw_vpn dev tun0 table 1111
ip rule add from 192.168.1.0/24 lookup 1111
ip rule add from 192.168.1.1 lookup main

# Добавляем нужный маршрут в таблицу и роль для маршрута PPPoE
ip route add default via $gw_pppoe dev ppp0 table 2222
ip rule add from 192.168.2.0/24 lookup 2222
ip rule add from 192.168.2.1 lookup main
Andrei_IW
() автор топика
Ответ на: комментарий от Andrei_IW

Ну а теперь остаётся раздать готовый трафик. Начну с раздачи OpenVPN

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

А теперь раздам интернет от PPPoE

iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o ppp0 -j MASQUERADE

Вот и всё. Всем большое спасибо за поддержку!

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