LinuxForum.Fans
Тема

Помогите разобраться с настройкой firewall под openvpn

Автор: vassabi 17 сообщений 4193 просмотров
#361741

Клиент

text
*filter
:INPUT DROP
:FORWARD ACCEPT
:OUTPUT ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -p tcp -i tun0 --dport 22 -s 10.8.0.1 -j ACCEPT

Сервер

text
*filter
:INPUT DROP [429:38188]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1585:186994]
-A INPUT -p tcp -m tcp --dport 1194 -j ACCEPT
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -m limit --limit 1/sec -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
-A FORWARD -i eth0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 10.8.0.0/24 -o eth0 -j ACCEPT

Клиент живет за NAT, в инет смотрит через ppp0 (gsm-модем)
При таких настройках firewall:
-клиент видит сервер и пингует
-openvpn видит клиента, но клиент не пингуется
лог openvpn:

text
OpenVPN CLIENT LIST
Updated,Wed Jan 22 04:50:23 2014
Common Name,Real Address,Bytes Received,Bytes Sent,Connected Since
client1,46.211.127.163:62764,121612,121471,Wed Jan 22 03:58:38 2014
ROUTING TABLE
Virtual Address,Common Name,Real Address,Last Ref
10.8.0.10,client1,46.211.127.163:62764,Wed Jan 22 04:37:39 2014
GLOBAL STATS
Max bcast/mcast queue length,0
END

Но если в firewall сервера все разрешить - клиент начинает пинговаться.

Подскажите, где может быть проблема?
з.ы. в linux я практически ламер...

#361754

А добавьте но в фаервол сервера вот это
[console]iptables -A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT[/console]

#361816

Добавил - все заработало, спасибо большое за помощь!
Так а тип 0 тоже пропускать или можно отфильтровывать?
Посто с проходу не удалось найти в чем разница у типов пакетов 0 и 8...

Текущие правила:

text
Chain INPUT (policy DROP 13 packets, 1478 bytes)
 pkts bytes target     prot opt in     out     source               destination
  344 41420 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:1194
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcpflags: 0x17/0x04 limit: avg 1/sec burst 5
    0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
   10   840 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0            icmptype 0
    3   252 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0            icmptype 8
    0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT all -- eth0 tun0 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 ACCEPT all -- * eth0 10.8.0.0/24 0.0.0.0/0

Chain OUTPUT (policy ACCEPT 366 packets, 45344 bytes) pkts bytes target prot opt in out source destination

#361836

Вот
Поясню вам почему у вас

"vassabi" написал:
-клиент видит сервер и пингует
-openvpn видит клиента, но клиент не пингуется

Клиент видит сервер и пингует потому что на сервере это правило
[console]-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT[/console]
разрешало принимать --icmp-type 8 = Echo , тоисть эхо запрос. После этого сервер отправлял icmp-type=0 Echo Reply, тоисть ответ клиенту. Так как клиент был иницыатором соединения и в настройках клиента есть это правило
[console]-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT[/console]
то клиент и видит ответ от сервера.
Сервер openvpn видит клиента, но клиент не пингуется, потому что, он не пропускает icmp-type=0 Echo Reply. И такого правила как на клиенте
[console]-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT[/console]
у него нету. Потому то правило что я вам написал просто пропускает icmp-type=0 Echo Reply на ваш сервер.

#361837

Понятно, спасибо еще раз.

#362725

Нарисовалась еще одна проблемка - не могу достучаться к клиентам openvpn по ssh.
Настройки firewall`ов такие же как в первом поасте, только добавлена строка

text
iptables -A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT

Подскажите, плиз, в чем может быть дело?

==========
Добавил правило

text
-A INPUT -i tun0 -p tcp -j ACCEPT

ssh заработал, но подозреваю, что нужно как-то более аккуратно прописывать это правило

Вопрос актуален.

#362744

Добавте на клиенте вот такое правило
[console]-A INPUT -p tcp -i tun0 --dport 22 -s 10.8.0.0/24 -j ACCEPT[/console]
Эта разрешыт на клиенте подключение к порту 22 с любого айпи сети 10.8.0.0

#362783

Так у меня есть это правило на клиенте (гляньте первый пост), только зацеплено на конкретный IP.
з.ы. пробовал по рекомендации (на любой IP сети) - не помогло.

#362788

А вы как подключаетесь, команду приведите. А на клиентах sshd хоть слушает адреса из сети 10.8.0.0

#362791

Подключаюсь так

text
ssh root@10.8.0.10

ssh начинает работать если на сервере есть правило

text
-A INPUT -i tun0 -p tcp -j ACCEPT
#362793

Я вас не понял у вас проблема конекта из сервера на клиент или из клиента на сервер???

#362794

А сделайте на сервере вот так
[console]iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT[/console]

#362795

Проблема коннекта сервера к клиенту именно по ssh
При указанных правилах клиенты "видны" в openvpn и прингуются.

#362796
kisil написал:
А сделайте на сервере вот так
[console]iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT[/console]

Правило помогло.
Если я правильно понимаю, в данном случае RELATED и ESTABLISHED соединение по тунелю tun0 ?

#362801

Это правило разрешает весь входной трафик который был иницыализирован на сервере и на него получен ответ от другой стороны. Тоисть сервер принимает весь трафик который он иницыализировал и получил на него ответ. По всем интерфейсам цепочки INPUT.

#362804

Спасибо, понятно.

#362806

Не за что. *YES*

Войдите или зарегистрируйтесь, чтобы ответить.