LINUX.ORG.RU
ФорумAdmin

Маршрутизация через OpenVPN over PPPoE


0

1

Описание: есть два компьютера в сети одного провайдера (т.е. траффик между ними нелимитирован), при этом на первом компьютере (на нем установлен OpenVPN server - ip 10.10.0.1) внешний трафик ограничен. Посредством openvpn и интернета компьютеры объединены в одну сеть, на втором компьютере (ip 10.0.0.18) настроен маскарадинг: iptables -t nat -A POSTROUTING -s ! 188.168.85.54 -o ppp0 -j MASQUERADE

Нужно чтобы первый компьютер использовал интернет соединение второго. При этом есть такой нюанс: для функционирования openvpn установленного на первом компьютере, он должен использовать в качестве шлюза по умолчанию 192.168.1.1 (свой PPPoE router), а остальные приложения, чтобы интернет трафик тянуть со второго компьютера, должны использовать шлюз 10.0.0.1.

В принципе мой вопрос практически полностью повторяет тему: Интернет через openvpn, но в данной теме в интернет «смотрит» OpenVPN сервер, и помогает push «redirect-gateway def1», у меня в интернет «смотрит» OpenVPN клиент, т.е. нужно настроить маршрутизацию: OpenVPN server -> tun0 -> OpenVPN client -> internet.

ТАк а в чём проблема-то в итоге ? При поднятии OpenVPN дефолт в OpenVPN переписать ? Ну так там скрипты есть.

client.conf:

up /etc/openvpn/my.script

И в нём ip route bla-bla-bla и т.п.

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

Проблема в том, что не знаю, что прописать, весь день убил. :( Сейчас:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.10.0.2       *               255.255.255.255 UH    0      0        0 tun0
10.10.0.0       10.10.0.2       255.255.255.0   UG    0      0        0 tun0
192.168.1.0     *               255.255.255.0   U     0      0        0 eth1
localnet        *               255.255.255.0   U     0      0        0 eth0
default         192.168.0.99    0.0.0.0         UG    100    0        0 eth0
Дефолтный маршрут трогать нельзя, иначе упадет OpenVPN сеть. Мне нужно чтобы пакеты с NAT, iptables -t nat -A POSTROUTING -o tun0 -j SNAT --to-source 10.10.0.1 уходили на шлюз (OpenVPN) 10.10.0.18

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

>Дефолтный маршрут трогать нельзя, иначе упадет OpenVPN сеть

Так почему, они от одного провайдера, а в сети одной?, если нет, - то пропиши статический маршрут ко второй своей мошине.

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

Машине, чет пошло получилось, извиняюсь.

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

> Дефолтный маршрут трогать нельзя,

Его трогать, как раз, необходимо.

иначе упадет OpenVPN сеть.

А для этого надо добавить отдельный маршрут на тот конец VPN через нужный интерфейс.

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

Так ничего и не получается попробую дать дополнительную информацию. Может кто нибудь подскажет что конкретно. Необходимо компьютерам из eth1 раздавать интернет через tun0 (шлюз 10.10.0.16). ifconfig

eth0      Link encap:Ethernet  HWaddr 00:0c:29:f0:07:1e 
          inet addr:192.168.0.10  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fef0:71e/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:11633 errors:0 dropped:0 overruns:0 frame:0
          TX packets:18581 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:834614 (834.6 KB)  TX bytes:7005553 (7.0 MB)

eth1      Link encap:Ethernet  HWaddr 00:0c:29:f0:07:28 
          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fef0:728/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:133 errors:0 dropped:0 overruns:0 frame:0
          TX packets:64 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:14154 (14.1 KB)  TX bytes:9607 (9.6 KB)

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:16436  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:480 (480.0 B)  TX bytes:480 (480.0 B)

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 
          inet addr:10.10.0.1  P-t-P:10.10.0.1  Mask:255.255.255.0
          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)
iptables-save
# Generated by iptables-save v1.4.4 on Thu Aug  4 21:28:02 2011
*mangle
:PREROUTING ACCEPT [9461:438199]
:INPUT ACCEPT [9317:424951]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [16676:6487182]
:POSTROUTING ACCEPT [16685:6488954]
-A PREROUTING -s 192.168.1.0/24 -i eth1 -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix " IS MARKED: " --log-level 7
-A PREROUTING -s 192.168.1.0/24 -i eth1 -j MARK --set-xmark 0x14/0xffffffff
COMMIT
# Completed on Thu Aug  4 21:28:02 2011
# Generated by iptables-save v1.4.4 on Thu Aug  4 21:28:02 2011
*raw
:PREROUTING ACCEPT [9461:438199]
:OUTPUT ACCEPT [16676:6487182]
COMMIT
# Completed on Thu Aug  4 21:28:02 2011
# Generated by iptables-save v1.4.4 on Thu Aug  4 21:28:02 2011
*nat
:PREROUTING ACCEPT [156:15177]
:OUTPUT ACCEPT [9:1498]
:POSTROUTING ACCEPT [9:1498]
-A PREROUTING -d 10.10.0.1/32 -i tun0 -j DNAT --to-destination 192.168.1.1
COMMIT
# Completed on Thu Aug  4 21:28:02 2011
# Generated by iptables-save v1.4.4 on Thu Aug  4 21:28:02 2011
*filter
:INPUT ACCEPT [245:18124]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [186:60187]
-A FORWARD -m state --state INVALID -j DROP
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -d 192.168.1.0/24 -i eth0 -m state --state NEW -j ACCEPT
-A FORWARD -s 192.168.1.0/24 -i eth1 -j ACCEPT
COMMIT
# Completed on Thu Aug  4 21:28:02 2011
route -n
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags Metric Ref Use Iface
10.10.0.0       0.0.0.0         255.255.255.0   U     0      0        0 tun0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
0.0.0.0         192.168.0.100   0.0.0.0         UG    100    0        0 eth0
ip rule
0:   from all lookup local
32763:   from 192.168.1.1 fwmark 0x14 lookup inet_home
32764:   from 10.10.0.1 lookup inet_home
32765:   from 192.168.0.10 lookup inet_ooojin
32766:   from all lookup main
32767:   from all lookup default
ip route ls table inet_home
10.10.0.0/24 dev tun0  scope link  src 10.10.0.1
default via 10.10.0.2 dev tun0

Посылаю запрос от 192.168.1.5, по логу iptables вижу что он маркируется, но tcpdump -nn -t -v -p -i eth0 host 192.168.1.5 запросы попадают на eth0

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

> Так ничего и не получается попробую дать дополнительную информацию. Может кто нибудь подскажет что

конкретно. Необходимо компьютерам из eth1 раздавать интернет через tun0 (шлюз 10.10.0.16). ifconfig


Надо привести мысли в порядок. Во-первых, забыть про iptables и маркирование пакетов на том компьютере, которому нельзя в интернет напрямую, несколько таблиц маршрутизации тоже не нужны. Если вывод ifconfig (кстати, зачем, когда «ip a» ?) именно с этого компьютера, то где там pppoe ?

Надо всего лишь сделать правильную маршрутизацию из трёх строчек.
ip route add <ip OpenVPN сервера>/32 via dev ppp0 (или какой там ppp ?)
ip route del default
ip route add default via tun0

Кстати, можно route replace. Ещё можно добавить, если надо,
ip route add <сеть оператора> via dev ppp0

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

Нет у меня ни какого PPPoE, неудачно выразился. Проблема с приведенными Вами советами в том, что OpenVPN работает через интерфейс eth0. Интернет я могу получить либо прямо с eth0, либо с канала OpenVPN (разные ограничения). Если я попытаюсь сделать это: ip route del default ip route add default via tun0 при удалении default маршрута, сразу развалится OpenVPN туннель, т.к. он работает через этот же интерфейс. Поэтому и нужно основной defult маршрут оставить на месте, т.е. сам сервер и OpenVPN работают по нему, и только трафик с eth1 (с локальной сети), завернуть в OpenVPN канал 10.10.0.1 на шлюз 10.10.0.6. вот тут и проблема.

Вроде куча описаний но не маршрутизируется и все!

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

> при удалении default маршрута, сразу развалится OpenVPN туннель, т.к. он работает через этот же интерфейс.

Это только в том случае, если не добавить маршрут для второго конца тонеля. «ip route add <ip OpenVPN сервера>/32 via dev ppp0» Меняется на ip route add <ip OpenVPN сервера>/32 via 192.168.0.100

Это и будет вместо default для vpn. Любой конкретный маршрут является more specific относительно default. Соответственно, пакеты самого тонеля пойдут через eth0.

Поэтому и нужно основной default маршрут оставить на месте

Совсем не нужно.

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

Пробовал и маркировки: ip route add default via 10.10.0.2 dev tun0 table 10 ip rule add from 192.168.1.0/24 table 10 Не попадают пакеты на интерфейс tun0 и все тут. Параметры ядра вроде правильные. /proc/sys/net/ipv4/ip_forward = 1 /proc/sys/net/ipv4/conf/br0/rp_filter = 0 CONFIG_IP_MULTIPLE_TABLES=y CONFIG_IP_MULTIPLE_TABLES=y

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

Что так делать перебор, я уже написал. Но

ip rule



0: from all lookup local


32763: from 192.168.1.1 fwmark 0x14 lookup inet_home


32764: from 10.10.0.1 lookup inet_home


32765: from 192.168.0.10 lookup inet_ooojin


32766: from all lookup main


32767: from all lookup default




Посылаю запрос от 192.168.1.5, по логу iptables вижу что он маркируется, но


tcpdump -nn -t -v -p -i eth0 host 192.168.1.5 запросы >попадают на eth0



А с чего бы должно быть иначе ? 92.168.1.5 - вовсе не 192.168.1.1. В правиле-то условие двойное «from 192.168.1.1 fwmark 0x14». И уж если с двумя таблицами заморачиваться, всё равно iptables с mark не нужен, достаточно from 192.168.1.0/24.

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

> Пробовал и маркировки: ip route add default via 10.10.0.2 dev tun0 table 10 ip rule add from 192.168.1.0/24 table 10

Не попадают пакеты на интерфейс tun0 и все тут.


Блин. не нужны ни маркировки, ни дополнительные таблицы маршрутизации. ВООБЩЕ ничего не нужно - это элементарная задача по маршрутизации из двух строчек! Зачем гланды удалять автогеном через задний проход ?! Секса мало ? :-)

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

Дело в том что на данном компьютере установлена СЕРВЕРНАЯ часть OpenVPN, и коннектятся на него. Поэтому <ip OpenVPN сервера> нет. Если бы данный компьютер был клиентом OpenVPN вопросов бы не возникало.

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

> Дело в том что на данном компьютере установлена СЕРВЕРНАЯ часть OpenVPN, и коннектятся на него.

Поэтому <ip OpenVPN сервера> нет. Если бы данный компьютер был клиентом OpenVPN вопросов бы не возникало.

На самом деле, это не принципиально. Значит ip route add <ip клиента или сеть клиента> via 192.168.0.100 Если ip/сетей несколько, значит маршрутов тоже несколько. Если у клиента PPPoE/dhcp/другая разная динамика, диапазон можно узанать.

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

> ip route add default via 10.10.0.2 dev tun0

Для интерфейсов точка-точка, кстати, ip можно не указывать. Достаточно ip route add default dev tun0.

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