LINUX.ORG.RU
ФорумAdmin

openvpn правила для iptables


2

1

имеем

конфиг


port 1194
proto tcp
dev tun
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key
dh /etc/openvpn/easy-rsa/keys/dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 192.168.4.0 255.255.255.0"
client-to-client
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 3

Интерфейсы


ppp0 – Сеть интернет 
eth0- локалка
tun0-VPN сервер

1) Разрешаем порт 1194 для всех интерфейсов
iptables -A INPUT  -p tcp  --dport 1194 -j ACCEPT

2)Маскарадим 
iptables -t nat -A POSTROUTING --out-interface ppp0 -j SNAT --to-source tun0

3)Прокидуем пакеты для интефейсов 
iptables -A FORWARD -i ppp0 -о tun0  --dport 1194 -j ACCEPT
*****************


Насколько я понял транзитный трафик нужно разрешить между всеми интерфейсами ?

Ответ на: комментарий от xtraeft

Ну насколько я помню NAT-правила не обеспечивают форвардинг трафика между интерфейсами, они непосредственно имеют дело с перезаписыванием адресов отправителя/получателя и портов. Для продвижения трафика используется цепочка FORWARD таблицы filter

drac753 ★★ ()

Какой странный маскарад...
-j SNAT --to-source tun0 не должно даже добавиться, т.к. tun0 не является ip-адресом. Если имелся ввиду именно адрес, то не должно работать, т.к. на выходе из интерфейса ppp0 адрес отправителя будет от tun0. Или это какой-то Хитрый План?
Прокидывание тоже непонятное. Разрешены соединения из интернетов к другим (openvpn) серверам через уже поднятый tun0.

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

гммм верно тогда так

iptables -t nat -A POSTROUTING --out-interface tun0 -j SNAT --to-soure белыйip
По поводу форвардинга вопрос - насколькоя я понял 

1)нужно дать доступ из инета к моему VPN 

iptables -A FORWARD -i ppp0 -о tun0 -d   ipVPNservera   --dport 1194 -j ACCEPT

Тоесть разрешаем приходит пакетам из нета для моего сервака .

или я не прав ? 

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

сообственно вопрос еще -

Что необходимо FORWARD для работы VPN сервака (клиенты будут цеплятся с наружи и из локалки )?

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

По учебнику:
1. разрешаем пересылку:

echo 1 > /proc/sys/net/ipv4/ip_forward
2. разрешаем подключаться к openvpn-серверу с любой стороны:
iptables -A INPUT  -p tcp  --dport 1194 -j ACCEPT
3. разрешаем всем openvpn-клиентам соединение с интернетами:
iptables -A FORWARD -i tun0 -o ppp0 -j ACCEPT
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
Если ip-адрес на ppp0 статический, то лучше будет так:
iptables -A FORWARD -i tun0 -o ppp0 -j ACCEPT
iptables -t nat -A POSTROUTING -o ppp0 -j SNAT --to-soure <ip на ppp0>
Уже должно работать. Далее по парано^W безопасности:
разрешаем только установленные и связанные с ними соединения:
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
И запрещаем всё, что не разрешено явно (в данном случае разрешены только входящие openvpn соединения):
iptables -P INPUT DROP
iptables -P FORWARD DROP

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

может туплю но

iptables -A FORWARD -i tun0 -o ppp0 -j ACCEPT

Работает это так - транзитные пакеты с tun0 пробрасываются на ppp0 ,
тоесть vpn сервак может слать пакеты в нет .

А в обратную сторону это работает, тесть получать пакеты из нета для tun0 ? 

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

В обратную сторону это или происходит само-собой для установленных соединений, или нужно применять DNAT, чтобы при обращении к серверу (на его белый ip), пакеты пересылались vpn-клиенту.
Т.е. случай 1: vpn-клиент набирает в браузере httр://example.com. Пакеты отправляются сквозь роутер, где правилом SNAT у них меняется <адрес отправителя> на адрес интерфейса ppp0 роутера и отправляются через ppp0 в интернет. example.com генерирует ответ (содержимое страницы) и отправляет на <адрес отправителя>, который был указан в приходящих пакетах. Т.е. на ppp0 роутера, который знает, что пакеты этого соединения нужно отправить тому самому vpn-клиенту. Тут всё происходит само собой. Нужно только правильно указать SNAT или MASQUERADE.
И случай 2: Нужно установить соединение с vpn-клиентом из интернетов. Тут есть несколько вариантов. Один из них - настроить роутер так, чтобы он (например) всё, что приходит на порты 30000-30010 перенаправлял к vpn-клиенту. Правило будет выглядеть как-то так:

-A PREROUTING -p tcp -m tcp --dport 30000:30010 -j DNAT --to-destination 192.168.0.3
тут 192.168.0.3 - адрес этого самого клиента, который был не виден из инета напрямую.

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

3. разрешаем всем openvpn-клиентам соединение с интернетами:

Если уж всем клиентам, то тогда "-i tun+ -o ppp0 -j ACCEPT"

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

При dev tun на каждое соединение новый интерфейс на сервере поднимается? Я не помню, просто :) давно на tap перебрался, там такого точно нет.

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

Если (для клиентов) vpn-сервер ещё и шлюз по умолчанию, то не обязательно. Ответ в интернет всё равно будет происходить через vpn-сервер.

А в общем случае - всему, что будет вылезать из tun0 ставим <адрес_отправителя>=адрес_на_tun0:

iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
или
iptables -t nat -A POSTROUTING -o tun0 -j SNAT --to-source <ip на tun0>

А iptables tutorial всё-таки покури. Там всё это расписано так, что даже я понял.

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

При dev tun на каждое соединение новый интерфейс на сервере поднимается?

Не, у ТС мультиклиентский сервер, tun один должен быть. А вообще сколько конфигов в /etc/openvpn положил, - столько и интерфейсов поднимится.

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