LINUX.ORG.RU
решено ФорумAdmin

Помогите настроить маршрутизацию

 ,


1

2

Имеется vpn туннель между домашним компьютером и удаленным сервером. Настраивал по инструкции http://wiki.debian.org/OpenVPN. Сервер пингуется с локальной машины, локальная машина пингуется с сервера. Но доступ к интернету идет в обход туннеля. Не получается самостоятельно правильно настроить маршруты. Надеюсь на помощь лоровцев

route -n локальной машины

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.9.8.1        0.0.0.0         255.255.255.255 UH    0      0        0 tun0
192.168.0.0     0.0.0.0         255.255.252.0   U     1      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth0

А вот эту часть Пушкин делать будет? :-)

# ip route add VPNSERVER_IP via LOCALGATEWAY_IP dev eth0  proto static
# ip route change default via 10.9.8.5 dev tun0  proto static   //client tun0 10.9.8.5
sergv ()
Ответ на: комментарий от sergv

Делал, но увы, не помогло. Точнее сказать интернет вообще на клиенте упал, пока не поменял шлюз на 192.168.0.1

VPNSERVER_IP - это внешний статический ип сервера или 10.9.8.1 ? LOCALGATEWAY_IP - в моем случае 192.168.0.1 ? :D

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

Задча-то какая?

Поменять дефолт маршрут на туннель. И при этом не уронить маршрут до IP второго конца.

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

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

root@deb:/etc/openvpn# ip route add xxx.xxx.xxx.xxx via 192.168.0.1 dev eth0  proto static
root@deb:/etc/openvpn# ip route change default via 10.9.8.2 dev tun0  proto static
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
xxx.xxx.xxx.xxx  192.168.0.1    255.255.255.255 UGH   0      0        0 eth0
10.9.8.1        0.0.0.0         255.255.255.255 UH    0      0        0 tun0
192.168.0.0    0.0.0.0         255.255.252.0   U     1      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
0.0.0.0         10.9.8.2        0.0.0.0         UG    0      0        0 tun0
root@deb:/etc/openvpn# ping ya.ru
ping: unknown host ya.ru

ifconfig tun0 клиента

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.8.2  P-t-P:10.9.8.1  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:6 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:504 (504.0 B)  TX bytes:504 (504.0 B)

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

Добавить эту строку в конфиг openvpn на сервере, я вас правильно понял? Извиняюсь за нубские вопросы, просто я только начал знакомиться с linux.

VsemDobra ()
Ответ на: комментарий от sergv
root@deb:/etc/openvpn# ip route add xxx.xxx.xxx.xxx via 192.168.0.1 dev eth0  proto static
root@deb:/etc/openvpn# ip route change default via 10.9.8.1 dev tun0 proto static
root@deb:/etc/openvpn# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
xxx.xxx.xxx.xxx  192.168.0.1    255.255.255.255 UGH   0      0        0 eth0
10.9.8.1        0.0.0.0         255.255.255.255 UH    0      0        0 tun0
192.168.0.0    0.0.0.0         255.255.252.0   U     1      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
0.0.0.0         10.9.8.1        0.0.0.0         UG    0      0        0 tun0
root@deb:/etc/openvpn# ping ya.ru
ping: unknown host ya.ru
root@deb:/etc/openvpn# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_req=1 ttl=48 time=54.4 ms
64 bytes from 8.8.8.8: icmp_req=2 ttl=48 time=54.1 ms
64 bytes from 8.8.8.8: icmp_req=3 ttl=48 time=53.6 ms
64 bytes from 8.8.8.8: icmp_req=4 ttl=48 time=53.3 ms
64 bytes from 8.8.8.8: icmp_req=5 ttl=48 time=52.6 ms

Так уже намного лучше))) А как теперь днс сменить?

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

А как теперь днс сменить?

/etc/resolv.conf в общем случае.

Есть правда масса свистоперделок, которые его «автоматизируют». По ним я не спец - врать не буду.

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

ох, велосипедисты

Ага, мы такие ;-)))

Зато устройство понятнее будет.

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

использование костылей вместо нативных функций софта - это плохой симптом

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

Нашел. Сервер стоит в дц со своим днс сервером. Клиент по dhcp от провайдера получает. Мне нужно днс, которые прописаны в конфиге на сервере, прописать на клиентской машине?

Что-то я не совсем понимаю. Прочитал несколько десятков статей и тем о настройке openvpn за последние несколько дней, но про настройку днс в них ни слова не говорилось :(

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

Вот, блин, о том и речь...

Делать надо универсально - поднимаем опенвипиэном (или другим ip-ip клиентом) тоннель. Потом на клиенте добавляем руками или скриптом только нужные маршруты, правим днс если надо.

Может и костыльно, но не зависим от типа клиента. И не используем оффтопик.

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

Подскажите пожалуйста как настроить днс? Выше я писал, что добавил

push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"
в конфиг сервера, но проблема с днс этим не решилась.

Заранее благодарен

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

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

ну юзай костыли дальше.

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

Там по большей части различные скрипты для автоматизации запуска и останова днс, использующие push «dhcp-option DNS x.x.x.x» Я пробовал push «dhcp-option DNS 8.8.8.8» и несколько других днс серверов, но результатов это не дало.

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

чеж ты лентяй то такой. openvpn-howto все описано. в /etc/openvpn/ есть скрипт, который правит resolv.conf

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

Фильтры пакетные, кривая трансляция на терминации тоннеля?

Вообще, это критично - ходить через сервер в Интернет?

Если нет, то не надо выдумывать себе головняка!

При старте:

# ip route add 1.2.3.4 via 192.168.0.1 dev eth0  proto static
# ip route add 1.2.3.0/24 via 10.9.8.1 dev tun0 proto static

При стопе маршруты удаляем.

И продолжаем пользоваться своим интернетом и DNS. А через тоннель ходим ТОЛЬКО в сеть 1.2.3.0/24.

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

Я пробовал push «dhcp-option DNS 8.8.8.8» и несколько других днс серверов, но результатов это не дало.

и не даст, потому что на линукс клиентах надо использовать скрипт, правящий resolv.conf, и после дисконнекта возвращающий resolv.conf в исходное состояние.

ты притворяешься или на самом деле настолько далекий?

at least in Debian Etch, a similar script is included in the OpenVPN package.

http://www.phocean.net/2006/12/07/openvpn-and-dns-on-a-linux-client.html

скажи хотя бы, какой у тебя дистрибутив на клиенте, и посмотри в составе openvpn пакета этот скрипт

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

Вообще, это критично - ходить через сервер в Интернет?

если он решает эту задачу, то видимо да.

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

еще раз НАСТОЙЧИВО рекомендую прочитать документацию по openvpn и не городить костылей.

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

Я же писал, что только начинаю в линуксе разбираться. Можно считать, что далекий. До этого на хр через гуевый клиент опенвпн все прекрасно работало. Но обратно я не вернусь, очень мне линукс понравился, хотя и не все получается с первого раза настроить. И да, для меня весьма важно поднять рабочий туннель.

Debian 6.0.5

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

Большущее спасибо всем за оказанную помощь. Предстоит еще во многом разобраться, но основная задача была благополучно решена. Удачи всем вам )

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