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


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

Автор Тема: iptables и openvpn  (Прочитано 1196 раз)

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

Оффлайн SveRussian

  • Автор темы
  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
iptables и openvpn
« : 18 Декабря 2013, 03:49:55 »
Гуру, помогите с настройкой iptables.

Задача, есть openvpn сеть 10.0.0.0/8 (tap0, udp)
Локальная сеть 192.168.1.0/24 (eth0)
Сервер openvpn имеет адрес 10.0.0.1 (и в локальной сети 192.168.1.254)
Клиент 1: 10.0.0.2
Клиент 2: 10.0.0.3
Клиент 3: 10.0.0.4
Нужно чтобы клиент 3 мог коннектиться ТОЛЬКО к клиенту 1 и не мог коннектиться к серверу
Клиент 2 мог коннектиться к кому угодно в пределах сети openvpn.
Клиент 1 мог коннектиться только к серверу и клиенту 3
Ну и сам сервер мог коннектиться к кому угодно.
Никто из клиентов не может попасть в локальную сеть - ТОЛЬКО сеть openvpn.

Это глобальная задача. На деле затык произошёл гораздо раньше.

# Clear all rule
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X

# Default rules
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

# Allow any connection from eth0
iptables -A INPUT -i eth0 --source 192.168.1.0/24 --match state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 --source 192.168.1.0/24 --match state --state NEW,ESTABLISHED -j ACCEPT

# Allow any connection from 10.0.0.0
iptables -A INPUT -i tap0 -s 10.0.0.0/8 --match state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o tap0 -s 10.0.0.0/8 --match state --state NEW,ESTABLISHED -j ACCEPT
Выполняю скрипт - из локальной сети доступ есть, все openvpn клиенты залипают, даже пинг не проходит.
Что я делаю не так? Вроде бы оба правила для двух интерфейсов идентичны.

P.S. openvpn соединение идёт через маршрутизатор по локалке:
1. Интернет (динамика)
2. Роутер (192.168.1.1)
3. Порт openvpn заворачивается на машину с ubuntu в локальной сети (192.168.1.254)
« Последнее редактирование: 18 Декабря 2013, 08:13:53 от SveRussian »

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: iptables и openvpn
« Ответ #1 : 18 Декабря 2013, 08:22:15 »
Рекомендованный способ загрузки правил — iptables-restore.
Проверка текущей конфигурации — iptables-save.

Шаблон базовой конфигурации:
https://help.ubuntu.ru/wiki/iptables#ipv4

Оффлайн SveRussian

  • Автор темы
  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: iptables и openvpn
« Ответ #2 : 18 Декабря 2013, 08:40:08 »
Вот ни разу не подошло.
Базовую конфигурацию применял, модернизировал - работает для локалки, не работает для openvpn

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: iptables и openvpn
« Ответ #3 : 18 Декабря 2013, 08:47:44 »
применял, модернизировал
Показывайте, что получилось.

Оффлайн SveRussian

  • Автор темы
  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: iptables и openvpn
« Ответ #4 : 18 Декабря 2013, 09:28:26 »
Блин, пока писал ответ, нашёл ошибку :)
Пакеты пошли :)
Я пока обмозгую, затем напишу, что получилось

Пользователь решил продолжить мысль 18 Декабря 2013, 10:23:50:
Вот что получилось:
# Clear all rule
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X

# Default rules
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

# Allow ICMP
iptables -A INPUT -p icmp -j ACCEPT
iptables -A OUTPUT -p icmp -j ACCEPT
# Allow loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# Allow related and established connect
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# Allow any connection from eth0
iptables -A INPUT -i eth0 --source 192.168.1.0/24 --match state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 --source 192.168.1.0/24 --match state --state NEW,ESTABLISHED -j ACCEPT

# Allow output to 10.0.0.0 network
iptables -A OUTPUT -o tap0 --source 10.0.0.0/8 --match state --state NEW,ESTABLISHED -j ACCEPT

# Allow incomming connection from 10.0.0.3
iptables -A INPUT -i tap0 --source 10.0.0.3 --match state --state NEW,ESTABLISHED -j ACCEPT
С адреса 10.0.0.3 есть пинг и можно законнектиться к openvpn серверу (10.0.0.1)
Но ни пинга, ни соединения до 10.0.0.2 нет
Я так полагаю, что нужно использовать FORWARD но пока не понимаю его логику.
Не подскажите?
« Последнее редактирование: 18 Декабря 2013, 10:28:07 от SveRussian »

Оффлайн Keper3d

  • Новичок
  • *
  • Сообщений: 37
    • Просмотр профиля
Re: iptables и openvpn
« Ответ #5 : 18 Декабря 2013, 12:57:55 »
Часто нужно добавлять маскарадинг (SNAT), чтобы клиенты могли попадать из виртуальной сети в физическую локалку.

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: iptables и openvpn
« Ответ #6 : 18 Декабря 2013, 13:02:24 »
"Показывайте, что получилось" == "sudo iptables-save"

И до кучи
ip a ; ip r

Оффлайн SveRussian

  • Автор темы
  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: iptables и openvpn
« Ответ #7 : 18 Декабря 2013, 14:05:55 »
2 ArcFi,
"sudo iptables-save"
# Generated by iptables-save v1.4.18 on Wed Dec 18 13:53:59 2013
*mangle
:PREROUTING ACCEPT [24510:2023545]
:INPUT ACCEPT [23246:1888123]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [3714:508455]
:POSTROUTING ACCEPT [3782:525285]
COMMIT
# Completed on Wed Dec 18 13:53:59 2013
# Generated by iptables-save v1.4.18 on Wed Dec 18 13:53:59 2013
*nat
:PREROUTING ACCEPT [20520:1525233]
:INPUT ACCEPT [316:44617]
:OUTPUT ACCEPT [50:10034]
:POSTROUTING ACCEPT [50:10034]
COMMIT
# Completed on Wed Dec 18 13:53:59 2013
# Generated by iptables-save v1.4.18 on Wed Dec 18 13:53:59 2013
*filter
:INPUT DROP [19000:1354849]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 192.168.1.0/24 -i eth0 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -s 10.0.0.3/32 -i tap0 -m state --state NEW,ESTABLISHED -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -p icmp -j ACCEPT
-A FORWARD -s 10.0.0.3/32 -d 10.0.0.0/24 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p icmp -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -s 192.168.1.0/24 -o eth0 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -s 10.0.0.0/8 -o tap0 -m state --state NEW,ESTABLISHED -j ACCEPT
COMMIT
# Completed on Wed Dec 18 13:53:59 2013

"ip a ; ip r"
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    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
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:29:0c:c8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.254/24 brd 192.168.1.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe29:cc8/64 scope link
       valid_lft forever preferred_lft forever
4: tap0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 100
    link/ether 4e:b2:66:f4:a2:0a brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.1/8 brd 10.255.255.255 scope global tap0
       valid_lft forever preferred_lft forever
    inet6 fe80::4cb2:66ff:fef4:a20a/64 scope link
       valid_lft forever preferred_lft forever
default via 192.168.1.1 dev eth0
10.0.0.0/8 dev tap0  proto kernel  scope link  src 10.0.0.1
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.254

2 Keper3d, мне не нужно, чтобы клиенты могли попадать в локалку.

Оффлайн Keper3d

  • Новичок
  • *
  • Сообщений: 37
    • Просмотр профиля
Re: iptables и openvpn
« Ответ #8 : 18 Декабря 2013, 15:17:41 »
2 Keper3d, мне не нужно, чтобы клиенты могли попадать в локалку.
ок, повнимательнее почитал. Хотел client-to-client предложить, но ещё раз почитал :) и - http://klink0v.livejournal.com/36254.html

Оффлайн SveRussian

  • Автор темы
  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: iptables и openvpn
« Ответ #9 : 21 Декабря 2013, 13:09:06 »
Я не великий специалист по сетям, но разве для включения client-to-client не нужно чтобы хотя бы один из них имел "белый" IP адрес. Или я ошибаюсь?
А за ссылку спасибо, включил ip_forward в ядре и всё заработало. До этого я искренне полагал, что его нужно включать только если нужен форвардинг между РАЗНЫМИ интерфейсами.
« Последнее редактирование: 21 Декабря 2013, 20:35:35 от SveRussian »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Re: iptables и openvpn
« Ответ #10 : 22 Декабря 2013, 00:07:49 »
А они и есть РАЗНЫЕ.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

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

Оффлайн SveRussian

  • Автор темы
  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: iptables и openvpn
« Ответ #11 : 22 Декабря 2013, 03:02:31 »
AnrDaemon,
Интерфейс на сервере один - tap0

 

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