Author Topic: Шлюз - OpenVPN - VPN-сервер  (Read 9850 times)

0 Members and 1 Guest are viewing this topic.

Offline Barbarian

  • Full Member
  • ***
  • Posts: 161
  • Karma: +0/-0
Шлюз - OpenVPN - VPN-сервер
« on: August 08, 2009, 13:11:08 »
Проблема в следующем.
Имеется локальная сеть, сервер который выполняет роль шлюза в интернет, сам серевер в интернет имеет выход через ADSL посредством соединения bridge, на сервере стоит FedoraCore. На сервере подняты сервисы:
- pptpd - для раздачи интернета по VPN клиентам локальной сети и некоторым сотрудникам предприятия которые находятся не в локальной сети
- httpd - для организации сайта предприятия
- DNS - первичный
- php, mysql и т.д. по вкусу
Так же на сервере организовано соединение по OpenVPN со статическим IP для получения дешевого внешнего Интернета на предприятие. Внешний канал на Webstream закрыт по причине экономии, собственно в связи с этим и был организован выход по OpenVPN.

eth0 - интерфейс связи с ADSL модемом
eth1 - интерфейс локальной сети
ppp0 - bridge (сервер-ADSL-Webstream)
tun0 - туннель OpenVPN до провайдера VPN
111.111.111.72  - статический IP выданный в Webstream
217.18.128.60  - IP ADSL на стороне Webstream
222.222.222.40  - статический IP выданный провайдером VPN (для соединения OpenVPN)
222.222.222.1 - IP адрес OpenVPN туннеля на стороне провайдера VPN
333.333.333.136 - IP адрес сервера провайдера VPN

Вся проблема заключается в том, что в принципе все работает кроме одного - сервер Web виден только в Томском Интернете, хотя по OpenVPN открыт канал со статическим IP адресом. С сервера нет выхода во внешний Интернет. Ниже выводы команд ifconfig, netstat и iproute-save:

eth0      Link encap:Ethernet  HWaddr 00:E0:4C:15:71:B4
          inet addr:192.168.1.90  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::2e0:4cff:fe15:71b4/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:30 errors:0 dropped:0 overruns:0 frame:0
          TX packets:43 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:3542 (3.4 KiB)  TX bytes:3734 (3.6 KiB)
          Interrupt:17 Base address:0x6000

eth1      Link encap:Ethernet  HWaddr 00:11:95:5B:E6:5F
          inet addr:192.168.0.1  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::211:95ff:fe5b:e65f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:69 errors:0 dropped:0 overruns:0 frame:0
          TX packets:75 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:6724 (6.5 KiB)  TX bytes:9986 (9.7 KiB)
          Interrupt:18 Base address:0x8000

lo        Link encap:Local 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: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:217 (217.0   TX bytes:217 (217.0

ppp0      Link encap:Point-to-Point Protocol
          inet addr:111.111.111.72  P-t-P:217.18.128.60  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1492  Metric:1
          RX packets:22 errors:0 dropped:0 overruns:0 frame:0
          TX packets:23 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:2484 (2.4 KiB)  TX bytes:1836 (1.7 KiB)

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:222.222.222.40  P-t-P:222.222.222.1  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP 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:100
          RX bytes:0 (0.0   TX bytes:0 (0.0


[root@region70 ~]# netstat -rn
Kernel IP routing table
Destination           Gateway         Genmask         Flags   MSS Window  irtt Iface
217.18.128.60       0.0.0.0         255.255.255.255 UH        0 0          0 ppp0
333.333.333.136    0.0.0.0         255.255.255.255 UH        0 0          0 ppp0
222.222.222.1       0.0.0.0         255.255.255.255 UH        0 0          0 tun0
192.168.1.0           0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.0.0           0.0.0.0         255.255.255.0   U         0 0          0 eth1
169.254.0.0           0.0.0.0         255.255.0.0     U         0 0          0 eth1


[root@xxxxxx ~]# traceroute tomsknet.ru
traceroute to tomsknet.ru (217.18.130.27), 30 hops max, 40 byte packets
 1  * * *
 2  po6-core520.bbn.tomsknet.ru (217.18.130.202)  8.742 ms   9.678 ms   10.651 ms
 3  po1-core520-1.bbn.tomsknet.ru (217.18.129.145)  11.358 ms   11.831 ms   12.562 ms
 4  www.tomsknet.ru (217.18.130.27)  13.279 ms   13.771 ms   15.010 ms


# Generated by iptables-save v1.3.5 on Sat Aug  8 11:18:55 2009
*filter
:INPUT ACCEPT [361:29356]
:FORWARD ACCEPT [381:241142]
:OUTPUT ACCEPT [363:50875]
-A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
COMMIT
# Completed on Sat Aug  8 11:18:55 2009
# Generated by iptables-save v1.3.5 on Sat Aug  8 11:18:55 2009
*nat
:PREROUTING ACCEPT [37:2317]
:POSTROUTING ACCEPT [26:1814]
:OUTPUT ACCEPT [26:1814]
-A POSTROUTING -s 192.168.11.0/255.255.255.0 -o ppp0 -j SNAT --to-source 111.111.111.72
-A POSTROUTING -s 192.168.0.0/255.255.255.0 -o ppp0 -j SNAT --to-source 111.111.111.72
-A POSTROUTING -s 192.168.0.2 -o eth0 -j SNAT --to-source 111.111.111.72
-A POSTROUTING -s 192.168.11.0/255.255.255.0 -o tun0 -j SNAT --to-source 222.222.222.40
COMMIT
# Completed on Sat Aug  8 11:18:55 2009

Комментарии:
1. Маршрутизация с локальной сети работает (http, ftp, VPN)
2. С сервера виден только Томский Интернет, при этом трассировка маршрутов показывает, что запросы идут напрямую к запрашиваемым адресам
3. Сервер Web не виден из внешнего Интернета

Необходимо сделать видимость сервера с внешнего интернета и желательно выход во внешку с сервера.
« Last Edit: August 08, 2009, 13:33:19 by Unit »

Offline Unit

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 1263
  • Karma: +9/-1
Шлюз - OpenVPN - VPN-сервер
« Reply #1 on: August 08, 2009, 13:35:48 »
Повеселил адрес 333.333.333.136 в IPv4.
http://webstream.tomsknet.ru/price-ws-corp Неужели 1500 р. в месяц на самый захудалый канал не найдется, чтобы не строить велосипед?

Offline Green

  • Full Member
  • ***
  • Posts: 129
  • Karma: +3/-0
Шлюз - OpenVPN - VPN-сервер
« Reply #2 on: August 08, 2009, 13:50:27 »
Quote from: Unit
Повеселил адрес 333.333.333.136 в IPv4.
+1
по сабжу, копайте в сторону default router... станет понятно где проблема...
« Last Edit: August 08, 2009, 13:57:31 by Green »


Offline Barbarian

  • Full Member
  • ***
  • Posts: 161
  • Karma: +0/-0
Шлюз - OpenVPN - VPN-сервер
« Reply #4 on: August 08, 2009, 15:41:01 »
Quote from: Unit
Повеселил адрес 333.333.333.136 в IPv4.
http://webstream.tomsknet.ru/price-ws-corp Неужели 1500 р. в месяц на самый захудалый канал не найдется, чтобы не строить велосипед?

на самом деле ни чего веселого тут нет
по поводу 1500 р. в мес. - зачем их платить если есть возможность за 150 р. в месяц? я думаю 1350 р. в месяц оставшиеся от 1500 р. можно на пиво пустить спокойно...

Offline Barbarian

  • Full Member
  • ***
  • Posts: 161
  • Karma: +0/-0
Шлюз - OpenVPN - VPN-сервер
« Reply #5 on: August 08, 2009, 15:45:04 »
Quote from: never hood
был бы очень полезен вывод "netstat -nptl"

[root@xxxxx ~]# netstat -nptl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:3306               0.0.0.0:*                   LISTEN      1834/mysqld
tcp        0      0 0.0.0.0:113                 0.0.0.0:*                   LISTEN      1728/xinetd
tcp        0      0 222.222.222.1:53        0.0.0.0:*                   LISTEN      1553/named
tcp        0      0 222.222.222.40:53      0.0.0.0:*                   LISTEN      1553/named
tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      1738/vsftpd
tcp        0      0 111.111.111.72:53      0.0.0.0:*                   LISTEN      1553/named
tcp        0      0 192.168.0.1:53            0.0.0.0:*                   LISTEN      1553/named
tcp        0      0 192.168.1.90:53             0.0.0.0:*                   LISTEN      1553/named
tcp        0      0 127.0.0.1:53                0.0.0.0:*                   LISTEN      1553/named
tcp        0      0 127.0.0.1:953               0.0.0.0:*                   LISTEN      1553/named
tcp        0      0 0.0.0.0:1723                0.0.0.0:*                   LISTEN      1865/pptpd
tcp        0      0 :::993                      :::*                        LISTEN      1969/couriertcpd
tcp        0      0 :::995                      :::*                        LISTEN      1955/couriertcpd
tcp        0      0 :::110                      :::*                        LISTEN      1949/couriertcpd
tcp        0      0 :::143                      :::*                        LISTEN      1962/couriertcpd
tcp        0      0 :::80                       :::*                        LISTEN      1857/httpd
tcp        0      0 :::22                       :::*                        LISTEN      1719/sshd
« Last Edit: August 08, 2009, 15:45:36 by Barbarian »

Offline xxx

  • Sr. Member
  • ****
  • Posts: 273
  • Karma: +0/-0
Шлюз - OpenVPN - VPN-сервер
« Reply #6 on: August 08, 2009, 16:06:28 »
Quote from: never hood
был бы очень полезен вывод "netstat -nptl"
мне кажется был бы полезен вывод трассировки до внешнего сайта
и вывод ip route.. на всяк случай
« Last Edit: August 08, 2009, 16:08:42 by xxx »

Offline Barbarian

  • Full Member
  • ***
  • Posts: 161
  • Karma: +0/-0
Шлюз - OpenVPN - VPN-сервер
« Reply #7 on: August 08, 2009, 17:10:37 »
Quote from: xxx
мне кажется был бы полезен вывод трассировки до внешнего сайта
и вывод ip route.. на всяк случай

[root@ххххх ~]# ip route
217.18.128.60 dev ppp0  proto kernel  scope link  src 111.111.111.72
333.333.333.136 dev ppp0  scope link
222.222.222.1 dev tun0  proto kernel  scope link  src 222.222.222.40
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.90
192.168.0.0/24 dev eth1  proto kernel  scope link  src 192.168.0.1
169.254.0.0/16 dev eth1  scope link

192.168.1.90 - eth0

трассировка до внешнего сайта
[root@ххххх ~]# traceroute mail.ru
traceroute to mail.ru (217.69.128.41), 30 hops max, 40 byte packets
1  * * *
2  * * *
.
.
29  * * *
30  * * *

При этом VPN соединения с сервером с любого компа из локальной сети либо из Томского Интернета, работают нормально...

Offline xxx

  • Sr. Member
  • ****
  • Posts: 273
  • Karma: +0/-0
Шлюз - OpenVPN - VPN-сервер
« Reply #8 on: August 08, 2009, 17:35:35 »
Quote from: Barbarian
[root@ххххх ~]# ip route
217.18.128.60 dev ppp0  proto kernel  scope link  src 111.111.111.72
333.333.333.136 dev ppp0  scope link
222.222.222.1 dev tun0  proto kernel  scope link  src 222.222.222.40
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.90
192.168.0.0/24 dev eth1  proto kernel  scope link  src 192.168.0.1
169.254.0.0/16 dev eth1  scope link

192.168.1.90 - eth0

При этом VPN соединения с сервером с любого компа из локальной сети либо из Томского Интернета, работают нормально...

шлюза по-умолчанию нет, который во внешку смотрит..

Offline Barbarian

  • Full Member
  • ***
  • Posts: 161
  • Karma: +0/-0
Шлюз - OpenVPN - VPN-сервер
« Reply #9 on: August 08, 2009, 17:39:22 »
Quote from: xxx
шлюза по-умолчанию нет, который во внешку смотрит..

ага, уже сам догадался, только вот шлюзом какой IP будет? тот который по OpenVPN на стороне провайдера внешки или который IP адрес сервера провайдера внешки?

Offline Barbarian

  • Full Member
  • ***
  • Posts: 161
  • Karma: +0/-0
Шлюз - OpenVPN - VPN-сервер
« Reply #10 on: August 08, 2009, 20:21:29 »
Quote from: xxx
шлюза по-умолчанию нет, который во внешку смотрит..

в общем шлюз по умолчанию добавил
/sbin/ip route add default via 222.222.222.1 src 222.222.222.40

вот вывод ip route

[root@ххххх ~]# ip route
217.18.128.60 dev ppp0  proto kernel  scope link  src 111.111.111.72
333.333.333.136 dev ppp0  scope link
222.222.222.1 dev tun0  proto kernel  scope link  src 222.222.222.40
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.90
192.168.0.0/24 dev eth1  proto kernel  scope link  src 192.168.0.1
169.254.0.0/16 dev eth1  scope link
default via 222.222.222.1 dev tun0  src 222.222.222.40

Но результат не утешительный... сервер во внешний интернет ходит, но локальные компьютеры теперь даже в Томский Интернет не могут выйти...
куда рыть уже не знаю. Уже мысли в голову приходят, может взять и создать дополнительно клиентский VPN канал на сервере, только как это все будет выглядеть ужасно
« Last Edit: August 08, 2009, 20:24:37 by Barbarian »

Offline zorggg

  • Newbie
  • *
  • Posts: 13
  • Karma: +0/-0
Шлюз - OpenVPN - VPN-сервер
« Reply #11 on: August 09, 2009, 00:44:53 »
По-моему вопрос можно решить так
1.В конфиге для ADSL ppp0 надо добавить опцию unit 50 (любой номер).Тогда интерфейс будет всегда ppp50 - чтоб не было проблем с маршрутизацией (путаницы,чтоб твои клиенты впн pptp не заняли этот интерфейс,что теоретически в некоторых случаях возможно).
2.Добавить в таблицу маршрутизации спсиок томских сетей - что-то типо
http://tomsknet.ru/netsplain?nohd=1&pa...%20ppp50\n
(может еще gw надо...)
3.Добавить дефолтный маршрут
route del default && route add default dev tun0

Будет ходить в Томск по ppp50 adsl,во внешку через tun0 OpenVPN. Web server должен быть виден откуда угодно (только не забудь про проблему с ДНС (т.к. у тебя к нему доступ по 2 ип - из Томска ип который по АДСЛ,со внешки который OpenVPN).

Также правь свои настройки нат,можно так: iptables -t nat -F && iptables -t nat -A POSTROUTING -o ppp50 -j MASQUERADE && iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE (если сеть очень большая лучше иначе)

----Вся проблема что ты не сказал как и куда ходить твоему серверу - через что в Томск и через что во внешку.Ну соответственно NAT тоже должен знать что и как натить.

Offline Barbarian

  • Full Member
  • ***
  • Posts: 161
  • Karma: +0/-0
Шлюз - OpenVPN - VPN-сервер
« Reply #12 on: August 09, 2009, 10:08:15 »
Quote from: zorggg
По-моему вопрос можно решить так
1.В конфиге для ADSL ppp0 надо добавить опцию unit 50 (любой номер).Тогда интерфейс будет всегда ppp50 - чтоб не было проблем с маршрутизацией (путаницы,чтоб твои клиенты впн pptp не заняли этот интерфейс,что теоретически в некоторых случаях возможно).
2.Добавить в таблицу маршрутизации спсиок томских сетей - что-то типо
http://tomsknet.ru/netsplain?nohd=1&pa...%20ppp50\n
(может еще gw надо...)
3.Добавить дефолтный маршрут
route del default && route add default dev tun0

Будет ходить в Томск по ppp50 adsl,во внешку через tun0 OpenVPN. Web server должен быть виден откуда угодно (только не забудь про проблему с ДНС (т.к. у тебя к нему доступ по 2 ип - из Томска ип который по АДСЛ,со внешки который OpenVPN).

Также правь свои настройки нат,можно так: iptables -t nat -F && iptables -t nat -A POSTROUTING -o ppp50 -j MASQUERADE && iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE (если сеть очень большая лучше иначе)

----Вся проблема что ты не сказал как и куда ходить твоему серверу - через что в Томск и через что во внешку.Ну соответственно NAT тоже должен знать что и как натить.

Сервер в Томск ходит по ADSL во внеху должэн ходить через interphone.su

Если я правильно думаю, то ложить список Томских сетей лучше в автозагрузку в /etc/rc.d/ppp50 и сделать на него ссылку в /etc/rc.d/rc.local
Правильно?

Offline zorggg

  • Newbie
  • *
  • Posts: 13
  • Karma: +0/-0
Шлюз - OpenVPN - VPN-сервер
« Reply #13 on: August 09, 2009, 10:59:43 »
Я бы на твоем месте саначала просто работоспособность опробовал и настроил, а уже потом автоматизировал!)))

По-поводу размещения - по-моему правильно. В таком случае при загрузке будет запускаться этот скрипт (так как он в rc.local то в конце,и соединения уже будут установлены).Но вот что если произойдет разрыв связи?!Об этом тоже надо подумать.
« Last Edit: August 09, 2009, 11:22:27 by zorggg »

Offline Barbarian

  • Full Member
  • ***
  • Posts: 161
  • Karma: +0/-0
Шлюз - OpenVPN - VPN-сервер
« Reply #14 on: August 09, 2009, 11:26:20 »
Quote from: zorggg
Я бы на твоем месте саначала просто работоспособность опробовал и настроил, а уже потом автоматизировал!)))

По-поводу размещения - по-моему правильно. В таком случае при загрузке будет запускаться этот скрипт (так как он в rc.local то в конце,и соединения уже будут установлены).Но вот что если произойдет разрыв связи?!Об этом тоже надо подумать.

имеешь в виду разрыв связи по OpenVPN ?

Offline zorggg

  • Newbie
  • *
  • Posts: 13
  • Karma: +0/-0
Шлюз - OpenVPN - VPN-сервер
« Reply #15 on: August 11, 2009, 10:50:52 »
Quote from: Barbarian
имеешь в виду разрыв связи по OpenVPN ?
Да,там у него в настройках должны быть опции по восстановлению соединения при разрыве и опция прописывающая его дефолтным маршрутом.
Кстати,как результаты?Решил проблему?

Offline Barbarian

  • Full Member
  • ***
  • Posts: 161
  • Karma: +0/-0
Шлюз - OpenVPN - VPN-сервер
« Reply #16 on: August 14, 2009, 07:34:29 »
Quote from: zorggg
Да,там у него в настройках должны быть опции по восстановлению соединения при разрыве и опция прописывающая его дефолтным маршрутом.
Кстати,как результаты?Решил проблему?

да решил  использовал таблицы iproute2 вот как тут: http://forum.gnu.kz/viewtopic.php?f=22&...0&view=next
раньше сам их пользовал, но вот подзабыл
 тему закрываем и открываем новую