Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: ubuntu server + openvpn + nat  (Прочитано 3617 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн gaidukov

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
ubuntu server + openvpn + nat
« : 16 Мая 2013, 16:48:30 »
Добрый день! Имеется несколько филиалов удаленных и центральный, в котором стоят все сервера, доступ к которым необходим всем филиалам. Необходим доступ с любого ноутбука сети филиала-клиента на любой ресурс сети центрального офиса, и наоборот: с любого ноутбука или сервера центрального офиса к любому ноутбуку или сетевому принтеру сети филиала-клиента. Филиалов-клиентов всего 9, внутренние сети должны быть 10.10.2.0, 10.10.3.0 10.10.4.0 и т.д. Сети центрального филиала 10.10.1.0.

Настройка сервера центрального офиса:

На сервере в центральном филиале установил ubuntu server, прописал файл /etc/firewall.sh след. содержания:

#!/bin/sh
iptables -F
iptables -t nat -F
sysctl -w net.ipv4.ip_forward="1"
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t filter -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
iptables -t filter -A INPUT -i eth0 -p tcp --dport 25 -j ACCEPT
iptables -t filter -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT
iptables -t filter -A INPUT -i eth0 -p udp --dport 1194 -j ACCEPT
iptables -t filter -A INPUT -i eth0 -p udp --dport 5060 -j ACCEPT
iptables -t filter -A INPUT -i rth0 -p udp --dport 10000:20000 -j ACCEPT
iptables -t nat -A PREROUTING -p udp --dport 5060 -i eth0 -j DNAT --to 10.10.1.7
iptables -t nat -A PREROUTING -p udp --dport 10000:20000 -i eth0 -j DNAT --to 10.10.1.7
iptables -A INPUT -i tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -j ACCEPT
iptables -A FORWARD -o tun0 -j ACCEPT

прописал /etc/firewall.sh в /etc/rc.local

Интернет у клиентов, подключенных через концентратор к второму сетевому интерфейсу сервера работает.

Кстати о сетевых интерфейсах: /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth1
iface eth1 inet static
        address 10.10.1.1
        netmask 255.255.255.0
        network 10.10.1.0
        broadcast 10.10.1.255
# The secondary network interface
auto eth0
iface eth0 inet static
        address 213.31.XXX.XXX
        netmask 255.255.255.224
        network 213.31.XXX.0
        broadcast 213.31.XXX.255
        gateway 213.31.XXX.XXX
        dns-nameserver XXX.XXX.XXX.XXX

Установил openvpn, вот server.conf:
port 1194
proto udp
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh1024.pem
server 10.10.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 10.10.1.0 255.255.255.0" # home
keepalive 10 120
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
log-append  openvpn.log
verb 4
mute 20
client-to-client
client-config-dir /etc/openvpn/ccd
route 10.10.2.0 255.255.255.0
route 10.10.3.0 255.255.255.0
route 10.10.4.0 255.255.255.0
route 10.10.5.0 255.255.255.0
route 10.10.6.0 255.255.255.0
route 10.10.7.0 255.255.255.0
route 10.10.8.0 255.255.255.0
route 10.10.9.0 255.255.255.0

Прописал /etc/openvpn/ccd/gt4

iroute 10.10.1.0 255.255.255.0
Сформировал ключи для клиентов и перекинул их на сервера филиалов.

Теперь о настройке серверов филиалов:

Установил ubuntu server, прописал файл /etc/firewall.sh след. содержания:

#!/bin/sh
iptables -F
iptables -t nat -F
sysctl -w net.ipv4.ip_forward="1"
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t filter -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -j ACCEPT
iptables -A FORWARD -o tun0 -j ACCEPT

прописал /etc/firewall.sh в /etc/rc.local

Интернет у клиентов, подключенных через концентратор к второму сетевому интерфейсу сервера работает.

Сетевые интерфейсы: /etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth1
iface eth1 inet static
        address 10.10.4.1
        netmask 255.255.255.0
        network 10.10.4.0
        broadcast 10.10.4.255
# The secondary network interface
auto eth0
iface eth0 inet static
        address 90.153.XXX.XXX
        netmask 255.255.255.224
        network 90.153.XXX.0
        broadcast 90.153.XXX.255
        gateway 90.153.XXX.XXX
        dns-nameserver XXX.XXX.XXX.XXX

Установил openvpn и прописал /etc/openvpn/client.conf

remote 213.31.XXX.XXX 1194
client
dev tun
proto udp
resolv-retry infinite
nobind
user nobody
group nogroup
persist-key
persist-tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/gt4.crt
key /etc/openvpn/gt4.key
comp-lzo
verb 4
mute 20
redirect-gateway
#show-net-up
verb 4

Итог:

Сервер удаленного филиала подключается к серверу центрального филиала, сам сервер удаленного филиала видит все ресурсы сети 10.10.1.0, а ноутбуки, подключенные к его второму интерфейсу через концентратор сеть 10.10.1.0 не видят в упор... Сервер центрального филиала не видит сеть удаленного 10.10.4.0

Помогите начинающему админу :)

Оффлайн anubis_donetsk

  • Участник
  • *
  • Сообщений: 188
  • ничто не совершенно кроме freebsd
    • Просмотр профиля
Re: ubuntu server + openvpn + nat
« Ответ #1 : 16 Мая 2013, 17:31:29 »
с ноута на филиале кинь трассу посмотри где затык, логи на серваках филиала посмотри

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13758
    • Просмотр профиля
Re: ubuntu server + openvpn + nat
« Ответ #2 : 16 Мая 2013, 22:35:38 »
Цитата: server.conf:
route 10.10.2.0 255.255.255.0
route 10.10.3.0 255.255.255.0
route 10.10.4.0 255.255.255.0
route 10.10.5.0 255.255.255.0
route 10.10.6.0 255.255.255.0
route 10.10.7.0 255.255.255.0
route 10.10.8.0 255.255.255.0
route 10.10.9.0 255.255.255.0
Эти маршруты должны добавлятся привязанным к соединениям, то есть в /etc/openvpn/ccd/*
Например
Цитата: /etc/openvpn/ccd/gt4
iroute route 10.10.4.0 255.255.255.0

Пользователь решил продолжить мысль 16 Мая 2013, 22:36:54:
Поправьте и переподключите клиента. После этого посмотрите и покажите нам маршруты с клиента и с сервера (route -n)

Пользователь решил продолжить мысль 16 Мая 2013, 22:41:44:
Про redirect-gateway в клиенте. Вы уверены, что весь трафик с филиала Вы хоти гнать через центральный офис?
Если нет, то исключите этот параметр
« Последнее редактирование: 16 Мая 2013, 22:41:44 от fisher74 »

Оффлайн gaidukov

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: ubuntu server + openvpn + nat
« Ответ #3 : 17 Мая 2013, 09:15:34 »
Цитата: server.conf:
Эти маршруты должны добавлятся привязанным к соединениям, то есть в /etc/openvpn/ccd/*
Например
Цитата: /etc/openvpn/ccd/gt4
iroute route 10.10.4.0 255.255.255.0


Я так понимаю - это решит проблему видимости сети подключаемого клиента gt4 с центрального сервера, а как решить проблему с видимостью сети центрального филиала 10.10.1.0 с сети удаленного филиала 10.10.4.0? К сожалению, протестировать смогу только завтра утром.

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13758
    • Просмотр профиля
Re: ubuntu server + openvpn + nat
« Ответ #4 : 17 Мая 2013, 10:14:39 »
Вообще маршрутизация на любом участке сети влияет на любую "видимость".
Вот что значит "сеть A видит сеть B"? Это значит, что если из сети А послать запрос клиенту сети B, то он отвечает. Если клиент сети B не знает куда отвечать (маршрут - route - путь), то он и не ответит, или ответит не туда и запрашивающий клиент сети А ничего не получит в ответ. А значит и не увидит.  То есть маршрутизация должна быть ПРАВИЛЬНО настроена на всех участках сети.

ЗЫ NAT-ы не приплетать

Оффлайн gaidukov

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: ubuntu server + openvpn + nat
« Ответ #5 : 17 Мая 2013, 13:40:05 »
Вообще маршрутизация на любом участке сети влияет на любую "видимость".
Вот что значит "сеть A видит сеть B"? Это значит, что если из сети А послать запрос клиенту сети B, то он отвечает. Если клиент сети B не знает куда отвечать (маршрут - route - путь), то он и не ответит, или ответит не туда и запрашивающий клиент сети А ничего не получит в ответ. А значит и не увидит.  То есть маршрутизация должна быть ПРАВИЛЬНО настроена на всех участках сети.

ЗЫ NAT-ы не приплетать

Так может мне в firewall.sh заложить правильные маршруты, чтобы сети друг друга видели? Или при записи в /etc/openvpn/ccd/gt4
iroute route 10.10.4.0 255.255.255.0 проблема должна решиться?

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13758
    • Просмотр профиля
Re: ubuntu server + openvpn + nat
« Ответ #6 : 17 Мая 2013, 13:50:08 »
Если хотите костыльную систему, то заложите в firewall.sh. А если хотите нормально конфигурированную систему, то делайте так как рекомендуют разработчики ПО (я не таковой, но советую согласно документации)

проблема должна решиться?
А я ж откуда знаю? В Ваш чулан я только заглянул одним глазком. Увидел, что не на той полке лежит - указал. А уж полетит или нет - надо глубже смотреть, а я человек ленивый.

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: ubuntu server + openvpn + nat
« Ответ #7 : 18 Мая 2013, 23:49:17 »
Цитата: server.conf:
route 10.10.2.0 255.255.255.0
route 10.10.3.0 255.255.255.0
route 10.10.4.0 255.255.255.0
route 10.10.5.0 255.255.255.0
route 10.10.6.0 255.255.255.0
route 10.10.7.0 255.255.255.0
route 10.10.8.0 255.255.255.0
route 10.10.9.0 255.255.255.0
Эти маршруты должны добавлятся привязанным к соединениям, то есть в /etc/openvpn/ccd/*
А тут написано другое, если я правильно понимаю:
The next step is to create a file called client2 in the ccd directory. This file should contain the line:

    iroute 192.168.4.0 255.255.255.0

This will tell the OpenVPN server that the 192.168.4.0/24 subnet should be routed to client2.

Next, add the following line to the main server config file (not the ccd/client2 file):

    route 192.168.4.0 255.255.255.0

Why the redundant route and iroute statements, you might ask? The reason is that route controls the routing from the kernel to the OpenVPN server (via the TUN interface) while iroute controls the routing from the OpenVPN server to the remote clients. Both are necessary.

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13758
    • Просмотр профиля
Re: ubuntu server + openvpn + nat
« Ответ #8 : 19 Мая 2013, 10:13:43 »
Вынужден согласиться.
У меня просто было отложено, что надо в клиентский добавлять iroute - иначе сервер не будет знать через какое соединение отправлять на сеть клиента.
На практике я этот механизм использовал в интерфейсом  tap, а тут оговоривается, что это касается именно tun. Так что если у Вас получится, то я отложу себе на полочку в памяти эту тонкость.


Оффлайн gaidukov

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: ubuntu server + openvpn + nat
« Ответ #9 : 19 Мая 2013, 12:24:30 »
Решением проблемы оказалось добавление маршрута в удаленную сеть как в ccd, так и в server.conf. Всем спасибо! :)

Оффлайн alex101

  • Новичок
  • *
  • Сообщений: 19
    • Просмотр профиля
Re: ubuntu server + openvpn + nat
« Ответ #10 : 13 Октября 2014, 12:46:58 »
А можно поподробнее о решении?
Дело в том, что у меня подобная ситуация.
Настроен сервер, через него прекрасно работают клиенты Windows openvpn.
Настроил сервер под Debian, open vpn  соединяет два филиала и с сервера клиента я вижу сеть основного офиса, но не могу заставить проходить пакеты из внутренней сети филиала во внутренний офис (ping не идет). На сервере клиента маршрутизация настроена правильно иначе бы и с него не было видно сети офиса. Уже перепробовал варианты и tun и tap, пока не помогает. Еще раз подчеркну клиенты из виндов нормально проходят во внутреннюю сеть офиса.

На сервере прописано:
dev tap
mode server
tls-server
ifconfig 192.168.10.1 255.255.255.0
route 192.168.15.0 255.255.255.0 192.168.10.2
client-config-dir /etc/openvpn/ccd
ca ca.crt
cert server.crt
key server.key  # This file should be kept secret
dh dh1024.pem
client-to-client
port 1194
proto udp
user nobody
group nobody
comp-lzo
persist-key
persist-tun
log-append openvpn.log
status openvpn-status.log
verb 3
keepalive 10 120
 В папке CCD для клиента прописано
ifconfig-push 192.168.10.2 255.255.255.0
push "route 192.168.1.0 255.255.255.0 192.168.10.1"
Надеюсь что-нибудь подскажите


Пользователь решил продолжить мысль 13 Октября 2014, 13:27:38:
Дополнительно: Попробовал пинг из сети клиента - пинг идет вплоть до IP сервера vpn тунеля (192.168.10.1) на интерфейс сервера выходящий во внутреннюю сеть уже не пробиться. Разрешающие правила в iptables сервера для интерфейса tun стоят.
Похоже нужно видимо дабавить правила для хождения сети клиента в сеть офиса.
« Последнее редактирование: 13 Октября 2014, 13:27:38 от alex101 »

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13758
    • Просмотр профиля
Re: ubuntu server + openvpn + nat
« Ответ #11 : 13 Октября 2014, 23:33:12 »
Чуть мозг не вывихнул. Особенно от словосочетания сервер клиента.
Давайте определимся с обозначениями:
сервер OpenVPN;
клиенты ЛОКАЛЬНОЙ сети сервера OpenVPN (я так понимаю это хосты центрального офиса);
клиенты OpenVPN (это мобильные клиенты, видимо те что с Windows подключаются);
шлюз OpenVPN филиала (это видимо тот, который Вы называете сервером клиента);
клиенты филиала (те которые работают с офисом через вышеуказанный шлюз).

Так вот. Вопросы:
у клиентов локальной сети сервера что является основным шлюзом?
Если сервер OpenVPN, то предлагаю всё-таки осветить правила... да и структуру сети, а то приходится догадываться где какая сеть.

 

Страница сгенерирована за 0.035 секунд. Запросов: 25.