Маршрутизация через VPN соединение
Есть 2 подсети — 192.168.83.0/24 и 192.168.173.0/24. Хост 192.168.83.1 выполняет роль маршрутизатора Хост 192.168.173.1 является роутером, доступа к нему нет, есть доступ к хосту 192.168.173.4. Есть VPN туннель между 192.168.83.1 (10.0.10.1) и 192.168.173.4 (10.0.10.60). Как настроить марштрутизацию таким образом, чтобы из подсети 192.168.83.0/24 была видна подсеть 192.168.173.0/24? Сейчас виден только 192.168.173.4. Везде стоит Debian 6 и 8 версии. Как таковых статей на конкретно эту тему я не нашел. Решил параллельно с поиском запостить вопрос на форум.
Добавьте маршрут для 192.168.173.0/24 через 192.168.173.4, на нем включите masquerade и ip forwarding.
Как именно включить masquerade?
«iptables -t nat -A POSTROUTING -s 10.0.10.0/24 ! -d 192.168.173.0/24 -j MASQUERADE» ?
«sysctl net.ipv4.conf.all.forwarding=1» сделал
пробовал так: «iptables -t nat -A POSTROUTING -s 192.168.173.0/24 -j MASQUERADE iptables -A FORWARD -s 0/0 -d 192.168.173.0/24 -j ACCEPT iptables -A FORWARD -d 0/0 -s 192.168.173.0/24 -j ACCEPT»
Вот так попробуйте
А маршрут ты добавляешь?
173.4: # route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.173.1 0.0.0.0 UG 0 0 0 eth0 10.0.10.1 0.0.0.0 255.255.255.255 UH 0 0 0 ppp1 169.254.169.254 192.168.173.1 255.255.255.255 UGH 0 0 0 eth0 192.168.173.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
83.1: # route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.0.10.60 0.0.0.0 255.255.255.255 UH 0 0 0 ppp5 X.X.X.X 0.0.0.0 255.255.255.240 U 0 0 0 eth1 192.168.83.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 10.0.10.0 10.0.10.1 255.255.255.0 UG 0 0 0 ppp1 0.0.0.0 X.X.X.X 0.0.0.0 UG 0 0 0 eth1
Не помогло, к сожалению.
Оформи через тег [соde] т.к. тежело читать такое. Нужен вывод ip r l. И что у тебя там за vpn?
Источник
Добавить маршрут для VPN соединения (ppp0)
Имеется сервер CentOS 7 с двумя интерфейсами: ext_network и int_network.
Настроен VPN. Всё отлично и хорошо.
Столкнулся с проблемой: при поднятом VPN (10.10.8.0/24), необходимо видеть другую подсеть (192.168.8.0/24).
В том случае, если я задаю маршрут по умолчанию:
Вопрос, как сделать так, чтоб ppp0 (10.10.8.0/24) видел другую сеть (192.168.8.0/24), без изменения маршрута по умолчанию?
Вопрос, как сделать так, чтоб ppp0 (10.10.8.0/24) видел другую сеть (192.168.8.0/24), без изменения маршрута по умолчанию?
где $REMOTE_VPN_IP — IP-адрес на противоположном конце туннеля.
Учтите, что в сети 192.168.8.0 или на ее шлюзе по умолчанию также должен быть маршрут к Вашей машине.
А как реализовать автоматическое добавление этого маршрута при рестарте сервера\соединения?
А как реализовать автоматическое добавление этого маршрута при рестарте сервера\соединения?
Например, добавить в конфиг сервера openvpn следующую строчку:
У меня стандартный pptp-client используется.
У меня стандартный pptp-client используется.
Извините, почему-то решил, что у Вас openvpn.
В случае с pptp у Вас есть два файла — /etc/ppp/ip-up и /etc/ppp/ip-down. Соответственно, первый выполняется при поднятии туннеля, второй — при его обрыве. Так что можно в первый файл добавить ту самую команду маршрутизации, которую я выше приводил.
Большое спасибо! Всё работает как часики. Вопрос закрыт.
Источник
Маршрутизация в Linux
Эта статья одна из статей про работу сетей в Linux. Вы уже знаете, что все данные в сети передаются в виде пакетов, а чтобы компьютер знал куда нужно отправить тот или иной пакет используются IP адреса. Но пакету, перед тем, как он достигнет точки назначения нужно пройти множество компьютеров и маршрутизаторов.
Каждому из маршрутизаторов нужно знать на какой компьютер передавать пакет дальше. Именно это мы и обсудим в этой статье. Сегодня нас будет интересовать маршрутизация в Linux, как это работает, как настроить правила и заставить все работать как нужно.
Сетевые маршруты в Linux
Как я уже сказал, сетевые маршруты необходимы чтобы компьютеры могли определить по какой цепочке должен пойти пакет, чтобы достигнуть цели. Маршруты можно настроить на уровне интерфейса или маршрутизатора.
Когда компьютеру нужно отправить пакет в сеть он смотрит таблицу маршрутизации, в ней указанны ip адреса пунктов назначения и адреса интерфейсов и роутеров в домашней сети, которые могут отправить пакет по нужному адресу. Если для цели маршрут не указан то используется так называемый шлюз по умолчанию или маршрут по умолчанию. Точно такая же картина наблюдается на роутере. Устройство смотрит на IP адрес назначения и сверяет его со своей таблицей маршрутизации, а потом отправляет дальше.
Ниже мы рассмотрим как проверить текущие маршруты в системе, а также как настроить новые.
Как посмотреть таблицу маршрутизации
Перед тем как что-либо менять, нужно понять какие правила уже используются. В Linux для этого существует несколько команд. Чтобы посмотреть таблицу маршрутизации можно использовать команду route:
Вот так выглядит таблица маршрутизации linux. Тут выводится достаточно простая информация, которой не всегда достаточно чтобы понять суть дела. Более подробно можно посмотреть с помощью команды routel:
Тут вы уже можете видеть IP адрес цели (target), IP адрес шлюза (gateway), IP отправителя (source), протокол, и даже сетевой интерфейс. Но самый удобный способ посмотреть таблицу маршрутизации linux — это команда ip:
Вывод похож на результат предыдущей команды, но выглядит не совсем привычно, это потому, что вывод команды можно использовать в качестве аргумента для ip route add или ip route del. Это очень удобно. Как вы видите, в качестве шлюза по умолчанию везде используется 192.168.1.1. Рассмотрим подробнее что означает вывод этой команды:
- default — в данной строке означает вариант по умолчанию. Здесь должен быть ip адрес цели или маска подсети;
- via 192.168.1.1 — указывает через какой шлюз мы можем добраться до этой цели, у нас это 192.168.1.1;
- dev enp2s0 — сетевой интерфейс, с помощью которого будет доступен этот шлюз;
- proto static — означает, что маршрут был установлен администратором, значение kernel значит что он был установлен ядром;
- metric — это приоритет маршрута, чем меньше значение — тем выше приоритет.
А теперь рассмотрим выполняется настройка маршрутов Linux.
Настройка маршрутов в Linux
Вы можете настраивать таблицу маршрутизации с помощью команды ip. Например, чтобы изменить маршрут по умолчанию достаточно выполнить:
ip route add default via 192.168.1.1
Так вы можете добавить маршрут для любого IP адреса, например, для 243.143.5.25:
sudo ip route add 243.143.5.25 via 192.168.1.1
Все очень просто, сначала указывается IP адрес цели, а затем шлюз в локальной сети, через который можно достичь этого адреса. Но такие маршруты будут активны только до перезагрузки, после перезагрузки компьютера они будут автоматически удалены. Чтобы маршруты сохранились их нужно добавить в файл конфигурации.
В операционных системах семейства Red Hat используются конфигурационные файлы /etc/sysconfig/network-scripts/route-ethX. Каждый файл может описывать несколько маршрутов, например:
GATEWAY=10.10.0.1
NETMASK=255.0.0.0
IPADDR=10.10.0.22
Здесь gateway — шлюз по умолчанию для этого интерфейса, netmask — маска сети, а ipaddr — ip адрес интерфейса. В Debian и основанных на нем дистрибутивах можно настроить маршруты в файле /etc/network/interfaces. Здесь команда route добавляется в секцию iface. Например:
up route add -net 10.10.0.0 netmask 255.0.0.0 gw 10.10.0.1
С помощью опции -net мы указываем целевую сеть, netmask — это маска сети, а gw — шлюз. Все очень просто. Теперь добавленные маршруты останутся даже после перезагрузки.
Выводы
В этой небольшой статье мы кратко рассмотрели как работает маршрутизация в Linux, как выполняется настройка маршрутизации в linux, а также зачем это нужно. Надеюсь, эта информация была полезной для вас.
Источник
VPN автоматическое добавление маршрута после поднятия сессии pptp
Помогите с настройкой автоматического добавления маршрута после автоматического поднятия сессии pptp
При там условии не добавляется маршрут
Каком условии? Выразите мысль яснее. Сразу же пишите какой дистрибутив и каким образом автоматически поднимается сессия pptp.
Сам pptp не добавляет маршруты, это делает либо ppp вызывая скрипт /etc/ppp/ip-up, либо каким-то другим способом, если ppp запускался не из консоли, а каким-то другим процессом.
Ubunta
pptp поднимается так /etc/ppp/peers/:
это делает либо ppp вызывая скрипт /etc/ppp/ip-up
-как правильно организовать автоматическое добавление маршрута, можно показать на примере ?
ЕМНИП, в дебиане/убунту должен быть каталог ″/etc/ppp/ip-up.d/″, если он есть, создаёте там файл: ″/etc/ppp/ip-up.d/routes-up″ такого содержания:
и делаете его исполняемым: chmod a+x /etc/ppp/ip-up.d/routes-up .
Если этого каталога нет, и нет файла ″/etc/ppp/ip-up″, то просто создаёте вместо ″routes-up″ файл ″/etc/ppp/ip-up″ с этим же содержимым.
P.S. Это расчитано на случай, что у вас всего одно ppp-подключение (pptp, pppOe и т.д.) Иначе скрипт должен быть сложнее и определять для какого подключения его вызвали.
P.P.S. Надеюсь, что 1.1.1.1 в первом сообщении это не то, что указано в команде ″pty 1.1.1.1″, что вы не пытаетесь завернуть маршут к pptp-серверу внутрь pptp-тунеля.
/etc/ppp/ip-up.d/ — такого нет
/etc/ppp/ip-up — есть
пока одно подключение но если будет несколько, я знаю у кого спросить. Спасибо. 1.1.1.1 — условный ip без заворотов
/etc/ppp/ip-up
Не является адресом сети, вы сначала вручную попробуйте и поймете.
да это я образно. пусть будет так: 192.168.1.0 да бы не вводить в заблуждение
Вручную после поднятия ppp эта команда работает? ($1 — заменить на имя ppp интерфейса)
лучше не трогать файл /etc/ppp/ip-up, а добавить всё в /etc/ppp/ip-up.local
Иначе после обновления ppp все твои изменения затрутся.
Подробности с примерами есть в /usr/share/doc/ppp (во всяком случае в дебиане; в убунте тоже должно быть).
/etc/ppp/ip-up.local нет там такого файла. Я его создал:
/sbin/ip route add 192.168.1.0/24 via 10.10.10.2 dev ppp0
Шлюз p2p линков не нужен. И его там нет, поэтому 0.0.0.0 нормально.
Это в каком формате? Если это ″route -n″, зачем обрезали флаги? И зачем ″route″, по Линуксом положено использовать ″ip route″.
делал и так не работает
Из: journalctl -b —no-pager | grep pppd
Нормально для ppp. pptp это протокол тунелирования ppp, на уровне маршрутизации именно ppp-интерфейс, point-to-point. Ваш мозг понимает, что ip-адрес шлюза не входит в ip-пакет, в сетях ethernet он просто резолвится в mac-адрес.
Что вы сейчас пытаетесь делать? У вас есть /etc/ppp/ip-up.local, в котором добавляется маршрут к 192.168.1.0/24. Если вам нужено менять default маршрут, там же пишите
/sbin/ip route replace default via.
Спасибо, что разжевываете по крупицам 🙂
Хорошо. Как вы говорите 0.0.0.0 это норма для ppp*
Почему же здесь тогда отображается GW для ppp* ? Здесь Отсюда
Там отображается шлюз для ppp-соединения потому что его указали при добавлении маршрута. Но для ppp-соединения никакого смысла указывать шлюз нету. Вы можете спокойно написать:
ip route add 192.168.1.0/24 dev ppp0 via 1.2.3.4
И наблюдать шлюз 1.2.3.4 в выводе ″route или ip route″ и хождение пакетов до 192.168.1.0/24 через ppp0, хотя никакого 1.2.3.4 на ppp интерфейсе нет.
Спасибо, сделал но не отображается. И показывает на одно ppp0 соединение меньше:
Если вы команду ″ip route add″ из скрипта запускали, то попробуйте из командной строки, может какой сообщение об ошибке будет.
Ладно, фиг с этим GW
Заметил такую шляпу: При загрузке ОС vpn поднимается, добавляться маршрут, тазы пингуються.
Но если на той стороне оборвать соединение, то после vpn поднимается но маршрут не добавляется и соответственно тазы не пингуються.
Подскажите, куда курить ?
Файлы: /etc/ppp/peers/vpn*
«ip route add» из командной — то ругается — «SIOCADDRT: Файл существует» если в ручном режиме удалить маршрут и потом добавить все работает и добавляет и пингует. Но когда обрывается vpn соединение, по новой автоматом не прописывается маршрут
Но если на той стороне оборвать соединение, то после vpn поднимается
Каким образом поднимается vpn? pppd сам перестартует соединение, или чем-то перезапускается /etc/ppp/*vpn?
И в целом ваш /etc/ppp/*vpn какой-то костыль. Нет никаких гарантий, что pptp-соедиение установится за 5 секунд, то есть команда route может запуститься до того, как появится интерфейс ppp0. Да, и вобще, не гарантий, что интерфейс будет именно ppp0, а, допустим, не ppp1.
Нужно разбираться, почему не работает добавление маршрута через /etc/ppp/ip-up (/etc/ppp/ip-up.local). Попробуйте сделать из ip-up.local перенаправление вывода команд в файл, чтобы было видно, он вобще выполняется:
то ругается — «SIOCADDRT: Файл существует»
Когда он так ругается, нужно смотреть список маршрутов и интерфейсов.
да, pppd сам перестартует соединение после разрыва
в *vpn указан запуск соединения при загрузке системы
Вот вывод upl.log:
ПН авг 29 11:43:17 MSK 2016
interface vpn
Если pppd сам переустанавливает соединение, понятно, что прописываемый в /etc/ppp/*vpn маршрут появляться не будет.
По правильному нужно добавлять маршрут через /etc/ppp/ip-up или другой скрипт, вызываемый из него. По костыльному постоянно проверять/прописывать маршрут — вызывать ″ip route″ из crontab или цикла со ″sleep″.
Если бы учил мат часть, cтолько не гемороился
Огромное спасибо. Работает через ip-up. +100 к твоей карме)
Источник