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


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Посоветуйте, как реализовать схему.  (Прочитано 1208 раз)

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

Оффлайн kolesov

  • Автор темы
  • Участник
  • *
  • Сообщений: 196
    • Просмотр профиля
Всем привет!

Ситуация такова:
есть ubuntu-server, на нем два сетевых интерфейса - один смотрит в интернет, и на нем белый IP, другой смотрит в локальную сеть.

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

Вопрос -- каким образом организовать разделение сетей?

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28365
    • Просмотр профиля
Re: Посоветуйте, как реализовать схему.
« Ответ #1 : 10 Декабря 2015, 00:23:58 »
Тем же самым openvpn, программируете каждого клиента отдельно.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
Re: Посоветуйте, как реализовать схему.
« Ответ #2 : 10 Декабря 2015, 09:38:53 »
Так-то ещё для пущей параноидальности iptables покурить, конечно.
Ну и OVPN должен быть на tun-интерфейсе (не tap) и без параметра client-to-client

Оффлайн kolesov

  • Автор темы
  • Участник
  • *
  • Сообщений: 196
    • Просмотр профиля
Re: Посоветуйте, как реализовать схему.
« Ответ #3 : 12 Декабря 2015, 10:51:08 »
Правильно понимаю, что нужно два tun-интерфейса поднимать?

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
Re: Посоветуйте, как реализовать схему.
« Ответ #4 : 12 Декабря 2015, 13:56:17 »
Зачем? Одного за уши. Даёте этому клиенту статический IP и средствами netfilter разрешаете ему только интернет.

Оффлайн Vlad.V

  • Активист
  • *
  • Сообщений: 478
    • Просмотр профиля
Re: Посоветуйте, как реализовать схему.
« Ответ #5 : 12 Декабря 2015, 15:19:40 »
Цитировать
Возникла необходимость получить доступ к локальным ресурсам из Интернет для одного клиента, здесь вопрос решен -- OpenVpn, но есть и другой клиент
А другой клиент в локальной сети и его нужно ограничить и дать только интернет или тоже через интернет?

Оффлайн kolesov

  • Автор темы
  • Участник
  • *
  • Сообщений: 196
    • Просмотр профиля
Re: Посоветуйте, как реализовать схему.
« Ответ #6 : 12 Декабря 2015, 18:35:35 »
Один из коннектится из Интернет, и ему можно только в Интернет.
Второй тоже конектится из Интернет, и ему можно и Интернет и локалку.

Оффлайн Vlad.V

  • Активист
  • *
  • Сообщений: 478
    • Просмотр профиля
Re: Посоветуйте, как реализовать схему.
« Ответ #7 : 12 Декабря 2015, 21:42:09 »
Я бы сделал OpenVPN + Iptables. В OVPN забить конкретные адреса для двух клиентов, допустим 10.10.10.5 и 10.10.10.6
В IPtables настроить разрешения для одного клиента и для другого.
Я не большой гуру в IPtables, но у меня была похожая задача, так что если будет нужно, могу попробовать помочь в настройке. А по ovpn полно инфы в сети, в принципе по iptables тоже, но материала очень много тяжело сразу выбрать то, что нужно))

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
Re: Посоветуйте, как реализовать схему.
« Ответ #8 : 12 Декабря 2015, 23:18:48 »
Именно об этом я и говорил. И ни кто не отказывается помогать...
Только помогать, а не сделать за инициатора. Ему ведь потом это обслуживать. А не понимая процесса - это нереально.
Пусть начнёт, а уж дорогу найти поможем.

Оффлайн kolesov

  • Автор темы
  • Участник
  • *
  • Сообщений: 196
    • Просмотр профиля
Re: Посоветуйте, как реализовать схему.
« Ответ #9 : 01 Января 2016, 16:37:27 »
Всех с Новым Годом!

Поднял OpenVpn-сервер, и устанавливаю соединение с Android клиента.
Клиент ходит только в Интернет, в iptables добавлены следующие правила:
-A INPUT -i em0 -p udp -m udp --dport 1194 -j ACCEPTи
-A FORWARD -i tun1 -o em0 -j ACCEPT
-A FORWARD -i em0 -o tun1 -j ACCEPT
em0 - внешний интерфейс сервера, tun1 - интерфейс OpenVpn.

Я бы хотел иметь две конфигурации, в одной чтобы клиент мог ходить только в инет, а в другой чтобы мог ходить и в интернет и в локалку. Подскажите как это правильнее реализовать?
Конфиги сервера и клиента:
(Нажмите, чтобы показать/скрыть)
(Нажмите, чтобы показать/скрыть)

 

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
Re: Посоветуйте, как реализовать схему.
« Ответ #10 : 01 Января 2016, 18:17:53 »
это решается параметр
client-config-dir ccd

Оффлайн kolesov

  • Автор темы
  • Участник
  • *
  • Сообщений: 196
    • Просмотр профиля
Re: Посоветуйте, как реализовать схему.
« Ответ #11 : 02 Января 2016, 02:21:39 »
В общем получилась такая конфигурация, не уверен, что все правильно...
iptables на сервере:
-A INPUT -i em0 -p udp -m udp --dport 1194 -j ACCEPT
-A FORWARD -i tun1 -o em0 -j ACCEPT
-A FORWARD -i em0 -o tun1 -j ACCEPT
-A FORWARD -i tun1 -o br0 ! -s 192.168.254.9 -j ACCEPT
-A FORWARD -i br0 -o tun1 ! -s 192.168.254.9 -j ACCEPT
конфиг openvpn-server:
dev tun1
port 1194
proto udp
tls-server

server 192.168.254.0 255.255.255.0
ifconfig 192.168.254.1 192.168.254.2

push "route 192.168.11.0 255.255.255.0"

route 192.168.254.0 255.255.255.0

ca /etc/openvpn/vpn-tun/keys/ca.crt
cert /etc/openvpn/vpn-tun/keys/kirill.crt
key /etc/openvpn/vpn-tun/keys/kirill.key
dh /etc/openvpn/vpn-tun/keys/dh2048.pem

client-to-client
client-config-dir /etc/openvpn/vpn-tun/ccd
comp-lzo
persist-tun
persist-key
verb 3
keepalive 10 60
ifconfig-pool-persist ipp.txt

log-append /var/log/openvpn_tun1.log
status /var/log/openvpn_status_tun1.log
клиент из client-config-dir:
#disable
ifconfig-push 192.168.254.9 192.168.254.10
iroute 192.168.254.5 255.255.255.0
push "route 192.168.11.0 255.255.255.192"
Все работает, когда убираешь ! -s 192.168.254.9 из цепочки FORWARD, клиент попадает в локальную сеть.
Когда отменяешь
-A FORWARD -i tun1 -o em0 -j ACCEPT
-A FORWARD -i em0 -o tun1 -j ACCEPT
клиент перестает попадать в Интернет.
Посмотрите плиз своим опытным глазом, насколько крива такая конфигурация.

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
Re: Посоветуйте, как реализовать схему.
« Ответ #12 : 02 Января 2016, 10:08:59 »
Во-первых: информации ровно 50%, так как нет ip a; ip r сервера, да и список правил netfilter только частичный, а здесь вся последовательность важна.
Потому будем хрустальный шар мучать, если что - я не виноват

Во-вторых: здесь
-A FORWARD -i tun1 -o br0 ! -s 192.168.254.9 -j ACCEPT
-A FORWARD -i br0 -o tun1 ! -s 192.168.254.9 -j ACCEPT
Во втором правиле ошибка.  Что именно - не подскажу ибо вреден с самого рождения. А кто подскажет будет вреден в квадрате.

По конфигурации openvpn
Зачем в клиентском ccd
iroute 192.168.254.5 255.255.255.0
push "route 192.168.11.0 255.255.255.192"
когда в основном конфиге есть
push "route 192.168.11.0 255.255.255.0"
route 192.168.254.0 255.255.255.0

А про это:
когда убираешь ! -s 192.168.254.9 из цепочки FORWARD, клиент попадает в локальную сеть.

Когда отменяешь...
клиент перестает попадать в Интернет.
Не понятно зачем (и в каком правиле) убирается и что ждётся.
Ну и без iptables-save ответить на эти вопросы будет схоже с первыми испытаниями битвы экстрасенсов.

Оффлайн kolesov

  • Автор темы
  • Участник
  • *
  • Сообщений: 196
    • Просмотр профиля
Re: Посоветуйте, как реализовать схему.
« Ответ #13 : 02 Января 2016, 11:48:50 »
ip route:
root@chevengur:~# ip route
default via X.X.X.X dev em0
X.X.X.X/24 dev em0  proto kernel  scope link  src X.X.X.X
192.168.1.0/24 via 192.168.255.6 dev tun0
192.168.11.0/26 dev br0  proto kernel  scope link  src 192.168.11.1
192.168.254.0/24 via 192.168.254.2 dev tun1
192.168.254.2 dev tun1  proto kernel  scope link  src 192.168.254.1
ip addr:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
    link/ether 00:22:4d:9d:e2:71 brd ff:ff:ff:ff:ff:ff
3: em0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:22:4d:9d:e2:75 brd ff:ff:ff:ff:ff:ff
    inet 188.143.156.209/24 brd 188.143.156.255 scope global em0
       valid_lft forever preferred_lft forever
4: gre0@NONE: <NOARP> mtu 1476 qdisc noop state DOWN group default
    link/gre 0.0.0.0 brd 0.0.0.0
5: gretap0@NONE: <BROADCAST,MULTICAST> mtu 1462 qdisc noop state DOWN group default qlen 1000
    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
6: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br0 state UP group default qlen 1000
    link/ether bc:77:37:70:1a:8e brd ff:ff:ff:ff:ff:ff
7: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 00:22:4d:9d:e2:71 brd ff:ff:ff:ff:ff:ff
    inet 192.168.11.1/26 brd 192.168.11.63 scope global br0
       valid_lft forever preferred_lft forever
10: veth6HPE5A: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
    link/ether fe:b8:b7:dc:82:16 brd ff:ff:ff:ff:ff:ff
12: vethDUFB4K: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
    link/ether fe:5d:7b:e7:01:70 brd ff:ff:ff:ff:ff:ff
14: veth7MM2CG: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
    link/ether fe:48:c5:8d:40:e3 brd ff:ff:ff:ff:ff:ff
30: mon.wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UNKNOWN group default qlen 1000
    link/ieee802.11/radiotap bc:77:37:70:1a:8e brd ff:ff:ff:ff:ff:ff
32: vethKGIMF3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
    link/ether fe:90:95:64:f2:3d brd ff:ff:ff:ff:ff:ff
92: tun1: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
    link/none
    inet 192.168.254.1 peer 192.168.254.2/32 scope global tun1
       valid_lft forever preferred_lft forever
iptables-save:
# Generated by iptables-save v1.4.21 on Sat Jan  2 11:35:29 2016
*filter
:INPUT DROP [584:43058]
:FORWARD DROP [22048:1164104]
:OUTPUT ACCEPT [33455:3125283]
:fail2ban-ssh - [0:0]
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh
-A INPUT -p icmp -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i br0 -j ACCEPT
-A INPUT -i em0 -p tcp -m multiport --dports 22 -j ACCEPT
-A INPUT -i em0 -p udp -m udp --dport 1194 -j ACCEPT
-A INPUT -d 224.0.0.0/4 -i em0 -j ACCEPT
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A FORWARD -p icmp -j ACCEPT
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i em0 -p tcp -m multiport --dports 21,49555:49565 -j ACCEPT
-A FORWARD -i br0 -o em0 -j ACCEPT
-A FORWARD -i tun1 -o em0 -j ACCEPT
-A FORWARD -i em0 -o tun1 -j ACCEPT
-A FORWARD ! -s 192.168.254.9/32 -i tun1 -o br0 -j ACCEPT
-A FORWARD ! -d 192.168.254.9/32 -i br0 -o tun1 -j ACCEPT
-A FORWARD -s 192.168.11.0/26 -i br0 -j ACCEPT
-A fail2ban-ssh -j RETURN
COMMIT
# Completed on Sat Jan  2 11:35:29 2016
# Generated by iptables-save v1.4.21 on Sat Jan  2 11:35:29 2016
*nat
:PREROUTING ACCEPT [329444:36485121]
:INPUT ACCEPT [4734:338757]
:OUTPUT ACCEPT [2186:166055]
:POSTROUTING ACCEPT [292395:37118112]
-A PREROUTING -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A PREROUTING -i em0 -p tcp -m tcp --dport 21 -j DNAT --to-destination 192.168.11.3:21
-A PREROUTING -i em0 -p tcp -m tcp --dport 49555:49565 -j DNAT --to-destination 192.168.11.3:49555-49565
-A POSTROUTING -o em0 -j SNAT --to-source X.X.X.X
COMMIT
# Completed on Sat Jan  2 11:35:29 2016
# Generated by iptables-save v1.4.21 on Sat Jan  2 11:35:29 2016
*mangle
:PREROUTING ACCEPT [33515663:27843112410]
:INPUT ACCEPT [181913:20946197]
:FORWARD ACCEPT [33292940:27815439961]
:OUTPUT ACCEPT [158198:14098902]
:POSTROUTING ACCEPT [33361907:27824848222]
-A FORWARD -o em0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:65495 -j TCPMSS --clamp-mss-to-pmtu
COMMIT
# Completed on Sat Jan  2 11:35:29 2016
Цитировать
Не понятно зачем (и в каком правиле) убирается и что ждётся.
Мне надо чтобы один клиент мог ходит и в локалку и в Интернет, а другой только в Интернет.
Правила
-A FORWARD -i tun1 -o br0 ! -s 192.168.254.9 -j ACCEPT
-A FORWARD -i br0 -o tun1 ! -d 192.168.254.9 -j ACCEPT
обеспечивают отсутствие доступа к локалке, а правила
-A FORWARD -i tun1 -o em0 -j ACCEPT
-A FORWARD -i em0 -o tun1 -j ACCEPT
обеспечивают доступ в Интернет.
« Последнее редактирование: 02 Января 2016, 12:26:06 от kolesov »

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
Re: Посоветуйте, как реализовать схему.
« Ответ #14 : 02 Января 2016, 12:59:47 »
Я не понял зачем Вы что-то убираете.

Правила
-A FORWARD -i br0 -o tun1 ! -d 192.168.254.9 -j ACCEPT
-A FORWARD -i em0 -o tun1 -j ACCEPT
лишние (а второе, я бы сказал, даже вредное), так как уже есть
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
Непонятно назначение это правила
-A PREROUTING -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPTОбычно функцию фильтрации трафика оставляют за таблицей filter, хотя для снижения кол-ва правил можно добавить условия выполнения правила и в других таблицах, но это скорее исключение.
Правила
-A FORWARD -i tun1 -o br0 ! -s 192.168.254.9 -j ACCEPT
-A FORWARD -i br0 -o tun1 ! -d 192.168.254.9 -j ACCEPT
обеспечивают отсутствие доступа к локалке
Ну я бы сказал, что это правила разрешает доступ в локалку всем клиентам OVPN, кроме конкретно указанного.

Итак, Вы добились, что пользователь при подключении к OVPN получает адрес 192.168.254.9 и получает доступ к интернет, без доступа в локалку. Остальные клиенты имеют доступ везде и вся (сами виноваты)

 

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