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

OpenVPN, iptables, проблема с форвардингом.

 , , ,


0

1

Добрый день, есть VPS на котором поднят Open VPN с конфигом:

log-append /var/log/openvpn.log

port 1194                       
proto udp                       
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 "redirect-gateway"         
keepalive 10 120                
client-config-dir ccd           
route 192.168.0.0 255.255.255.0    
#push "route 192.168.0.0 255.255.255.0"

cipher BF-CBC
comp-lzo                        
user openvpn                    
group openvpn
persist-key                     
persist-tun                     
verb 4                          
./ccd/client.conf
iroute 192.168.0.0 255.255.255.0 
iptables:
iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -p icmp -j ACCEPT 
-A INPUT -i lo -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 2049 -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT 
-A INPUT -p udp -m state --state NEW -m udp --dport 137 -j ACCEPT 
-A INPUT -p udp -m state --state NEW -m udp --dport 138 -j ACCEPT 
-A INPUT -p udp -m state --state NEW -m udp --dport 137 -j ACCEPT 
-A INPUT -p udp -m state --state NEW -m udp --dport 138 -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 139 -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 445 -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 53 -j ACCEPT 
-A INPUT -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 993 -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 995 -j ACCEPT 
-A INPUT -p udp -m state --state NEW -m udp --dport 1194 -j ACCEPT 
-A INPUT -p udp -m state --state NEW -m udp --dport 69 -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 16509 -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 16514 -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5432 -j ACCEPT 
-A INPUT -j REJECT --reject-with icmp-host-prohibited 
-A FORWARD -i venet0:0 -o tun0 -j ACCEPT 
-A FORWARD -i tun0 -o venet0:0 -j ACCEPT 
-A FORWARD -i tun0 -p tcp -j ACCEPT 
-A FORWARD -i tun0 -p udp -j ACCEPT 
-A FORWARD -i tun0 -p tcp -j ACCEPT 
-A FORWARD -j REJECT --reject-with icmp-host-prohibited 
-A FORWARD -s 10.8.0.0/24 -j ACCEPT 
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A FORWARD -i tun0 -o venet0:0 -j ACCEPT 
-A FORWARD -i venet0:0 -o tun0 -j ACCEPT 
сам форвардинг:
cat /proc/sys/net/ipv4/ip_forward
1
интерфейсы сервера:
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:1777 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1777 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:593297 (579.3 KiB)  TX bytes:593297 (579.3 KiB)

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.8.0.1  P-t-P:10.8.0.2  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:1570 errors:0 dropped:0 overruns:0 frame:0
          TX packets:386 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:197918 (193.2 KiB)  TX bytes:48728 (47.5 KiB)

venet0    Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:127.0.0.1  P-t-P:127.0.0.1  Bcast:0.0.0.0  Mask:255.255.255.255
          inet6 addr: 2604:2880::e18d:6c30/128 Scope:Global
          inet6 addr: 2604:2880::97fe:1cea/128 Scope:Global
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1
          RX packets:35303 errors:0 dropped:0 overruns:0 frame:0
          TX packets:28504 errors:0 dropped:1310 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:3617174 (3.4 MiB)  TX bytes:3569685 (3.4 MiB)

venet0:0  Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:A.B.C.D (белый IP VPS)  P-t-P:A.B.C.D (белый IP VPS)  Bcast:A.B.C.D (белый IP VPS)  Mask:255.255.255.255
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1

конфиг клиента:
client
remote A.B.C.D (белый IP VPS)
ca ca.crt
cert client_test.crt
key client_test.key
cipher BF-CBC
comp-lzo yes
dev tun
proto udp
nobind
auth-nocache
script-security 2
persist-key
persist-tun
user openvpn
group openvpn

собственно, проблема: Клиент соединяется с серверов, друг друга пингуют, но трафик в тунyель не идет, хотя маршрут вроде как есть.:

#server
route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.8.0.2        *               255.255.255.255 UH    0      0        0 tun0
10.8.0.0        10.8.0.2        255.255.255.0   UG    0      0        0 tun0
192.168.0.0     10.8.0.2        255.255.255.0   UG    0      0        0 tun0
link-local      *               255.255.0.0     U     1002   0        0 venet0
default         *               0.0.0.0         U     0      0        0 venet0

#client

table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.8.0.5        0.0.0.0         UG    0      0        0 tun0
10.8.0.1        10.8.0.5        255.255.255.255 UGH   0      0        0 tun0
10.8.0.5        *               255.255.255.255 UH    0      0        0 tun0
A.B.C.D(IP VPS)    WL-BCAEC5C3B 195 255.255.255.255 UGH   0      0        0 em1
192.168.0.0     *               255.255.255.0   U     1      0        0 em1

Вместо пинговс клиента получаю:

From 10.8.0.1 icmp_seq=1 Destination Host Prohibited
в то ыремя,как
64 bytes from 10.8.0.1: icmp_seq=1 ttl=64 time=273 ms
и
ping adr.v.p.s
64 bytes from adr.v.p.s: icmp_seq=1 ttl=38 time=260 ms
и самое главное в логах OpenVPN:
Mon Jul 29 15:31:07 2013 us=308230 client_test/213.87.143.185:44455 MULTI: bad source address from client [192.168.0.63], packet dropped
Mon Jul 29 15:31:20 2013 us=592736 client_test/213.87.143.185:44455 MULTI: bad source address from client [192.168.0.63], packet dropped
Соответственно, все traceroute зависают на 10.8.0.1 .

Гугл по этой ошибке говорит добавить маршрут с локальной подсетью 192.168.0.0, но у меня то маршрут этот прописан уже в ccd/client.conf

Лично я вангую проблемы с iptables т.к. я с ними не очень дружу, а в данном случае они еще и настроенны до меня были другим человеком.
Заранее благодарю за помощь и понимание. Я знаю что решение лежит на поверхности, но после 32 часов без сна башка уже никакая. Потому и прошу вашей помощи, лорчане.

★★★★

-A FORWARD -i venet0:0 -o tun0 -j ACCEPT
-A FORWARD -i tun0 -o venet0:0 -j ACCEPT

насколько я знаю, iptables не может работать с interface aliases, хотя форвард осуществляться может. Но единственный способ влиять на трафик, форвардимый с/на алиас - это default policy для цепочки FORWARD, а она у вас ACCEPT, так что iptables мешать не должен.

Кстати, если у вас default policy ACCEPT - для чего тогда дополнительные разрешающие правила, если нет общего запрещающего?

Но скорее тут проблема в настройках openvpn. Cast tazhate

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

-A FORWARD -i venet0:0 -o tun0 -j ACCEPT
-A FORWARD -i tun0 -o venet0:0 -j ACCEPT

Делал уже много раз, не помогает. Другой вопрос, если я это делал, почему это не отразилось в конфиге? service iptables save конечно же делал.

Кстати, если у вас default policy ACCEPT - для чего тогда дополнительные разрешающие правила, если нет общего запрещающего?

А это не у меня, а у владельца VPS, я политики не использую, и вообще стараюсь с iptables работать в tui. но вот разрешающие правила добавлял я. Наверно, потому что надо не гуглить каждый раз частные случаи, а один раз прочитать man iptables.

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

если у вас default policy ACCEPT

Там стоит правило:

-A FORWARD -j REJECT --reject-with icmp-host-prohibited

В политике могут быть только встроенные правила, REJECT быть не может, поэтому если хочется генерить icmp, то пишут REJECT и без разницы, какая политика.

ТС лучше поспать, раз 32 часа без сна, потом проснутся и понять, что алиасов интерфейсов в iptables нет, поэтому нужно писать "-i venet0 -o tun0". Если разрешать протоколы, то разрешать и icmp, а не только udp и tcp, и что правила в iptables применяются к пакету последовательно, то есть все те правила, которые после "-j REJECT" бессмысленны.

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

Делал уже много раз

это была цитата с вашего конфига iptables, а не рекомендация :)

Текущие настройки iptables можно посмотреть командой

iptables -vnL 
или
iptables -vnL --line-numbers

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

-A FORWARD -j REJECT --reject-with icmp-host-prohibited

Тьфу, REJECT пропустил, правда.

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

что алиасов интерфейсов в iptables нет, поэтому нужно писать "-i venet0 -o tun0"

Я этого не знал, потому сон мне не помог бы :)
Добавил правила

iptables -A FORWARD -i venet0 -o tun0 -j ACCEPT 
iptables -A FORWARD -i tun0 -o venet0 -j ACCEPT 
никаких изменений

comp00 ★★★★
() автор топика
Ответ на: комментарий от pianolender
# iptables -vnL 
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
51285 5314K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
   12   936 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
    6   336 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:80 
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:21 
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:2049 
    1    40 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:443 
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:25 
    0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW udp dpt:137 
    0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW udp dpt:138 
    0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW udp dpt:137 
    0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW udp dpt:138 
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:139 
   53  2584 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:445 
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:53 
    0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW udp dpt:53 
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:993 
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:995 
   18  3130 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW udp dpt:1194 
    0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW udp dpt:69 
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:16509 
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:16514 
    1    60 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:5432 
  150 14412 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  venet0:0 tun0    0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  tun0   venet0:0  0.0.0.0/0            0.0.0.0/0           
 3759  226K ACCEPT     tcp  --  tun0   *       0.0.0.0/0            0.0.0.0/0           
 1154 73921 ACCEPT     udp  --  tun0   *       0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     tcp  --  tun0   *       0.0.0.0/0            0.0.0.0/0           
 7051  464K REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 
    0     0 ACCEPT     all  --  *      *       10.8.0.0/24          0.0.0.0/0           
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
    0     0 ACCEPT     all  --  tun0   venet0:0  0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  venet0:0 tun0    0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  venet0:0 tun0    0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  tun0   venet0:0  0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  venet0 tun0    0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  tun0   venet0  0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy ACCEPT 1014 packets, 110K bytes)
 pkts bytes target     prot opt in     out     source               destination  
comp00 ★★★★
() автор топика
Ответ на: комментарий от windofchange

я все же надеюсь на лор. Я уже хз что фиксить и в чем я налажал.
//Up!

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

потому сон мне не помог бы :)

А всё же :-) Может тогда бы вам удалось бы прочитать весь мой пост до конца. Там же написано, что после REJECT правила добавлять бессмысленно, REJECT зарубает все пакеты. Так что делайте не "-A FORWARD", а "-I FORWARD".

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

О Великий человек, спасибо. Оно заработало. Теперь я могу спокойно пойти спать. Спасибо

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

C радостью сообщаю тебе, что проблема решилась этим

iptables -I FORWARD -i venet0 -o tun0 -j ACCEPT 
iptables -I FORWARD -i tun0 -o venet0 -j ACCEPT 

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

.. но -I добавляет правило в начало без разбору, а по-хорошему, конечно, было бы порядок включения правил продумать отдельно. --line-numbers в помощь.

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

Ох, да по хорошему там все нужно переписать :)
Сейчас постфикс поставлю, и таки уделю время ману iptables

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