LINUX.ORG.RU
решено ФорумAdmin

iptables и openvpn

 


0

2

здравствуйте. имеется два сетевых интерфейса: локальная сеть и VPN. маршрутизация между ними настроена. никак не получается открыть файрвол для одного удалённого ip из виртуальной сети. имеем: локальная сеть - 192.168.7.0/24,VPN - 10.4.0.0/24. удалённый ip, которому необходимо разрешить входящие соединения - 10.4.0.1. прописываю

iptables -A INPUT -d 10.4.0.1 -j ACCEPT
но результата это не даёт. подскажите, пожалуйста, что не так или куда копать.



Последнее исправление: man8531 (всего исправлений: 1)

Почитайте что-нибудь про iptables (netfilter), в INPUT попадают пакеты, предназначенные хосту, а транзитные пакеты проходят через FORWARD.

anonymous
()

Ну и надо прописать два правила, одно с адресом источника 10.4.0.1, второе - назначения.

И эти правила должны быть выше запрещающего правила.

У VPN клиента должен быть маршрут до 192.168.7.0/24 через VPN сервер.

Добавление маршрута можно прописать в настройках VPN сервера.

anonymous
()

На хостах сети 192.168.7.0/24 так же должен быть прописан маршрут до VPN сети (10.4.0.0), либо на шлюзе сети если VPN сервер поднят не на нём же.

anonymous
()

VPN - 10.4.0.0/8

Именно так и прописано? Да и до кучи: «VPN» адресов не «маловато»?

удалённый ip, которому необходимо разрешить входящие соединения - 10.4.0.1

Дать доступ куда?

подскажите, пожалуйста, что не так или куда копать.

RTFM

anc ★★★★★
()
Ответ на: комментарий от anonymous
#!/bin/bash
#
# Объявление переменных
export IPT="iptables"

# Активный сетевой интерфейс
export WAN=ens18
export WAN_IP=192.168.7.6
export WANOVPN=tap0

# Очистка всех цепочек iptables
$IPT -F
$IPT -F -t nat
$IPT -F -t mangle
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X

# Установим политики по умолчанию для трафика, не соответствующего ни одному из правил
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

# разрешаем локальный траффик для loopback
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

# разрешаем пинги
$IPT -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

# Разрешаем исходящие соединения самого сервера
$IPT -A OUTPUT -o $WAN -j ACCEPT
$IPT -A OUTPUT -o $WANOVPN -j ACCEPT

# Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении.
# Пропускать все уже инициированные соединения, а также дочерние от них
$IPT -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
# Пропускать новые, а так же уже инициированные и их дочерние соединения
$IPT -A OUTPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
# Разрешить форвардинг для уже инициированных и их дочерних соединений
$IPT -A FORWARD -p all -m state --state ESTABLISHED,RELATED -j ACCEPT

# Включаем фрагментацию пакетов. Необходимо из за разных значений MTU
$IPT -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

# Отбрасывать все пакеты, которые не могут быть идентифицированы
# и поэтому не могут иметь определенного статуса.
$IPT -A INPUT -m state --state INVALID -j DROP
$IPT -A FORWARD -m state --state INVALID -j DROP

# Приводит к связыванию системных ресурсов, так что реальный
# обмен данными становится не возможным, обрубаем
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPT -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP

# Открываем порт для ssh
$IPT -A INPUT -i $WAN -p tcp --dport 22 -j ACCEPT
# Открываем порт для zabbiz
$IPT -A INPUT -i $WAN -p tcp --dport 10050 -j ACCEPT
# Открываем порт для vpn
$IPT -A FORWARD -s 192.168.7.0/24 -d 10.4.0.1 -j ACCEPT
$IPT -A FORWARD -s 10.4.0.1 -d 192.168.7.0/24 -j ACCEPT

весь мой скрипт для файрвола найденный на просторах интернета. в этом исполнении пакеты с 10.4.0.1 (сервер впн) не проходят ко мне 10.4.0.2 (клиент впн). еслиочистить правила файрвола и везде поставить ACCEPT, то всё прекрасно работает.

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

весь мой скрипт для файрвола найденный на просторах интернета

Просто великолепный ответ. «Я вами горжусь». А теперь пока каникулы почитайте теорию, благо время есть.

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

в этом исполнении пакеты с 10.4.0.1 (сервер впн) не проходят ко мне 10.4.0.2 (клиент впн)

Не ну это пять баллов! Просто превосходно.

Опиши нормально откуда куда тебе нужно что бы ходили пакеты.

Ты так описал свою проблему, что из описания можно понять, что 10.4.0.1 - это VPN клиент и тебе нужно разрешить прохождение пакетов от клиента в сеть 192.168.7.0/24.

А ты привёл совсем другую ситуацию.

Давай ещё раз, рисуй схему что как подключено с указанием интерфейсов и IP адресов на них и куда должны ходить пакеты.

А так, сейчас должно быть правило:

$IPT -A FORWARD -s 192.168.7.0/24 -d 10.4.0.2 -j ACCEPT
$IPT -A FORWARD -s 10.4.0.2 -d 192.168.7.0/24 -j ACCEPT

И проверять что есть связь между 192.168.7.0/24 и 10.4.0.2 нужно с любого узла сети 192.168.7.0/24, либо с 10.4.0.2 пинговать любой узел сети 192.168.7.0/24.

Так же включи продвижение пакетов:

echo 1 > /proc/sys/net/ipv4/ip_forward

Для постоянного применения включи соответствующую опцию в sysctl.conf

sysctl -w net.ipv4.ip_forward=1

После применения правок что я написал, если не заработает, то показывай вывод

iptables-save

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

если прочитать внимательно, то всё уже расписано: форвардинг между интерфейсами есть; 10.4.0.1 - сервер впн; 10.4.0.2 - клиент впн; 192.168.7.0 - подсеть, где установлен клиент впн. нужно разрешить серверу впн 10.4.0.1 передавать пакеты для подсети 192.168.7.0 через клиента впн 10.4.0.2. все маршруты построены и без файрвола всё отлично работает. так понятно?

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

если прочитать внимательно, то всё уже расписано: форвардинг между интерфейсами есть

Почитай что такое /proc/sys/net/ipv4/ip_forward, запись сюда 1 разрешает продвижение пакетов между интерфейсами.

Так вот запиши туда 1, затем внеси правики в правила которые я тебе написал, в них нужно не 10.4.0.1, а 10.4.0.2.

А потом покажи целиком вывод iptables-save, если для это сложно, то извини, помочь тебе не получится.

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

Почитай что такое /proc/sys/net/ipv4/ip_forward, запись сюда 1 разрешает продвижение пакетов между интерфейсами.

поясняю: если написано, что маршрутизация\фарвардинг включен, значит в параметрах системы уже стоит значение 1. не проходят пакеты

# Generated by iptables-save v1.6.0 on Sun Jul 29 22:53:28 2018
*mangle
:PREROUTING ACCEPT [125:8614]
:INPUT ACCEPT [123:8510]
:FORWARD ACCEPT [2:104]
:OUTPUT ACCEPT [152:16340]
:POSTROUTING ACCEPT [152:16340]
COMMIT
# Completed on Sun Jul 29 22:53:28 2018
# Generated by iptables-save v1.6.0 on Sun Jul 29 22:53:28 2018
*nat
:PREROUTING ACCEPT [19:1156]
:INPUT ACCEPT [9:540]
:OUTPUT ACCEPT [1:84]
:POSTROUTING ACCEPT [1:84]
COMMIT
# Completed on Sun Jul 29 22:53:28 2018
# Generated by iptables-save v1.6.0 on Sun Jul 29 22:53:28 2018
*filter
:INPUT DROP [8:512]
:FORWARD DROP [2:104]
:OUTPUT DROP [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 3 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m state --state INVALID -j DROP
-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A INPUT -i ens18 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i ens18 -p tcp -m tcp --dport 10050 -j ACCEPT
-A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -m state --state INVALID -j DROP
-A FORWARD -s 192.168.7.0/24 -d 10.4.0.2/32 -j ACCEPT
-A FORWARD -s 10.4.0.2/32 -d 192.168.7.0/24 -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -o ens18 -j ACCEPT
-A OUTPUT -o tap0 -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
COMMIT
# Completed on Sun Jul 29 22:53:28 2018
man8531
() автор топика
Ответ на: комментарий от man8531

Скорее всего почему-то твои пакеты попадают в stage INVALID.

Опять же написанные правила разрешают продвижение пакетов из сети 192.168.7.0/24 до 10.4.0.2.

Т.е. проверять что всё работает нужно не в VPN шлюза, у которого IP адрес 10.4.0.1, а с любого хоста в сети 192.168.7.0/24.

Если ты хочешь проверять и с 10.4.0.1, то измени правила вот так:

# Generated by iptables-save v1.6.0 on Sun Jul 29 22:53:28 2018
*mangle
:PREROUTING ACCEPT [125:8614]
:INPUT ACCEPT [123:8510]
:FORWARD ACCEPT [2:104]
:OUTPUT ACCEPT [152:16340]
:POSTROUTING ACCEPT [152:16340]
COMMIT
# Completed on Sun Jul 29 22:53:28 2018
# Generated by iptables-save v1.6.0 on Sun Jul 29 22:53:28 2018
*nat
:PREROUTING ACCEPT [19:1156]
:INPUT ACCEPT [9:540]
:OUTPUT ACCEPT [1:84]
:POSTROUTING ACCEPT [1:84]
COMMIT
# Completed on Sun Jul 29 22:53:28 2018
# Generated by iptables-save v1.6.0 on Sun Jul 29 22:53:28 2018
*filter
:INPUT DROP [8:512]
:FORWARD DROP [2:104]
:OUTPUT DROP [0:0]
-A FORWARD -s 192.168.7.0/24 -d 10.4.0.2/32 -j ACCEPT
-A FORWARD -s 10.4.0.2/32 -d 192.168.7.0/24 -j ACCEPT
-A OUTPUT -d 10.4.0.2/32 -j ACCEPT
-A INPUT -s 10.4.0.2/32 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 3 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m state --state INVALID -j DROP
-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A INPUT -i ens18 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i ens18 -p tcp -m tcp --dport 10050 -j ACCEPT
-A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -m state --state INVALID -j DROP
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -o ens18 -j ACCEPT
-A OUTPUT -o tap0 -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
COMMIT
# Completed on Sun Jul 29 22:53:28 2018

Можешь отредактировать правила из вывода

iptables-save
сохранённые в файл.

А затем загрузить их через iptables-restore.

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

Скорее всего почему-то твои пакеты попадают в stage INVALID.

закомментировал - не проходят

Т.е. проверять что всё работает нужно не в VPN шлюза, у которого IP адрес 10.4.0.1, а с любого хоста в сети 192.168.7.0/24.

пробую исключительно из подсети 192.168.7.0

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

Тогда рисуй схему.

Повторяю, на VPN клиенте должен быть маршрут до сети 192.168.7.0/24 через 10.4.0.1, а у узлов сети 192.168.7.0/24. должен быть соответствующий маршут до 10.4.0.0.

anonymous
()
Ответ на: комментарий от man8531

Ну либо просто загрузи правила в той редакции что я привёл, если маршруты прописаны, то всё будет работать.

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

Но маршруты всё равно должны быть

маршруты есть, иначе бы не работала схема с отключенным файрволом

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

Может я чего не понимаю, но я вижу, что за VPN сервером находится сеть 192.168.0.0/24, а не сеть 192.168.7.0/24.

Пропиши правила для сети 192.168.0.0.

anonymous
()
Ответ на: комментарий от man8531

Ах да, ещё кое-что, если у тебя там простая маршрутизация, а не NAT, то тебе вообще нужно прописывать правила для разрешения прохождения пакетов из сети 192.168.7.0/24 в сеть 192.168.0.0/24 и обратно.

anonymous
()
Ответ на: комментарий от anonymous
$IPT -A FORWARD -s 192.168.0.0/24 -d 10.4.0.2 -j ACCEPT
$IPT -A FORWARD -s 10.4.0.2 -d 192.168.0.0/24 -j ACCEPT

на роутере, что поднимает интернет включен NAT. только не понимаю какие ещё могут быть маршруты, если схема работает, если нет ограничений со стороны файрвола? нужно просто заставить файрвол принимать все входящие соединения на интерфейс tap0 у шлюза 10.4.0.2 от сервера впн 10.4.0.1 и передавать их другому интерфейсу ens18 (192.168.7.6) находящемуся на этой же машине.

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

на роутере, что поднимает интернет включен NAT.

Какой NAT, какие правила.

Понимаешь, если на 192.168.7.6, он же (10.4.0.2) прописаны маршруты до сети 192.168.0.0/24 через VPN сервер (10.4.0.1), а на VPN сервере прописан маршрут до сети 192.168.7.0/24 через VPN клиента 10.4.0.2.

То когда ты из 192.168.7.7 пингуешь допустим 192.168.0.55, то пакеты должны идти без NAT, простая маршрутизация.

Всё зависит от правила NAT (SNAT) которое прописано на 192.168.7.6 (10.4.0.2).

Так что на 192.168.7.6 пропиши правила

$IPT -A FORWARD -s 192.168.0.0/24 -d 192.168.7.0/24 -j ACCEPT
$IPT -A FORWARD -s 192.168.7.0/24 -d 192.168.0.0/24 -j ACCEPT
[/ode]
И размести их в самом верху табицы filter.

anonymous
()
Ответ на: комментарий от anonymous
$IPT -A FORWARD -s 192.168.0.0/24 -d 192.168.7.0/24 -j ACCEPT
$IPT -A FORWARD -s 192.168.7.0/24 -d 192.168.0.0/24 -j ACCEPT

вот именно этого и не хватало. спасибо!

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

слишком большой поток информации в самом начале пути. и вообще я с этими маршрутами не очень. даже очень не очень

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

Попробуй почитать что-нибудь такое: https://habr.com/post/134892/ там есть оглавление вверху.

Только думаю что даже это будет слишком сложно если у тебя минимум знаний.

Разберись в начале как работает маршрутизация, что такое IP адрес, маска, сеть, шлюз, DNS.

Шлюз, он же gateway - это строго говоря маршрут по умолчанию.

При принятии решения куда направить пакет в начале проверяются какие сети сопоставлены с интерфейсом, есть ли маршрут до сети к которой принадлежит пакет или нет, если маршрута для этой сети нет, то пакет отправится по маршрут по умолчанию, т.е. на шлюзе.

Строй сети в виртуалке, так же есть вот такой проект: http://www.eve-ng.net/

В нём можно строить сети и проверять различные сетевые конфигурации на разном оборудовании.

Учись.

anonymous
()
Ответ на: комментарий от man8531

Это не маршрут, а правило разрешающее прохождение пакетов из сети с адресом источника 192.168.0.0/24 в сеть с адресом назначения 192.168.7.0/24.

Я не знаю какие у тебя ещё правила iptables в пакетном фильтре, но если там где-то ниже стоит drop всего что не разрешено или политика цепочки filter у тебя drop, то нужны два правила

$IPT -A FORWARD -s 192.168.7.0/24 -d 192.168.0.0/24 -j ACCEPT
$IPT -A FORWARD -s 192.168.0.0/24 -d 192.168.7.0/24 -j ACCEPT

Нужны оба правила.

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

всё прекрасно работает с одним правилом. в сеть 192.168.0.0 маршрут уже построен и ограничений на исходящие у шлюза - нет

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

«Свои пять копеек» очень здорово что Вы пытаетесь помочь «Незнайке». Но в вашей помощи есть и минус. «Незнайка» уже бездумно скопипастил правила fw, что как бэ намекает. Далее «Незнайка» предлагает «проглотить утюг холодный» другим «незнайкам»... а скорее так и будет. В этом минус вашей помощи. «Машина должна работать, а человек — думать.» (с) голубой гигант

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

нет, просто есть настоящие админы - те, которые расскажут и терпеливо покажут, а есть обычные м****и, которые всё знают, но ни с кем не поделятся. или не знают, но показывают, что знают.

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

Да согласен, лучше бы если бы он сам разобрался и написал правила iptables какие ему нужны, но надеюсь хотя бы текущая разобранная ситуация даст ему понимание, хотя бы минимум.

И он затем разберётся и напишет правила iptables.

anonymous
()
Ответ на: комментарий от man8531

нет, просто есть настоящие админы - те, которые расскажут и терпеливо покажут

Покажут простите что? «А теперь для куражу я вам ж-у покажу?»
Вам так сложно было прочитать основы? Зато поиграть в бляндинку легко: «слишком большой поток информации в самом начале пути. и вообще я с этими маршрутами не очень. даже очень не очень»
«Мама-аааа расскажи мне как настроить роутинг и netfilter в linux?» Так что-ли? Или по другому из старого фильма «Тебе что мама на новый год купила компьютер?»

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

Вам так сложно было прочитать основы? Зато поиграть в бляндинку легко:

Соглашусь, только ещё бы добавил, что у ТС проблемы с предоставлением вводной информации и описании проблемы.

Т.е. в шапке темы нет схемы сети, параметров и что и куда идёт.

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

но надеюсь хотя бы текущая разобранная ситуация даст ему понимание, хотя бы минимум.

Эх если бы так действительно было... Весь топик показывает «обезьянку» Повторюсь, Вы очень терпелив, честь и хвала. Наверняка регистрант только в отпуске :)

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

На всякий случай «обезьянку» это про ТС не подумайте что про Вас.

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