Jump to content

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


Recommended Posts

Вот дошли руки нормально проверить работу openvpn. Коннектится нормально, пинги через туннель проходят в подсети 10.8.0.0, но домашняя сеть не видна и инет не работает. Вот правила firewall, которые работали на V1, а сейчас не хотят.

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

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

iptables -I INPUT -i tun0 -j ACCEPT

iptables -I INPUT -p udp --dport 1194 -j ACCEPT

iptables -I FORWARD -i tun0 -j ACCEPT

iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE

iptables -A INPUT -i lo -j ACCEPT

А вот такой вариант дал доступ к домашней сети

iptables -I FORWARD -o tun0 -j ACCEPT

iptables -I FORWARD -i tun0 -j ACCEPT

iptables -I INPUT -i tun0 -j ACCEPT

Есть какие то "подводные камни" использования iptables на V2 ?

Link to comment
Share on other sites

Для прописывания правил iptables нужно сделать скрипт /opt/etc/netfilter.d/XXX-openvpn.sh с проверкой $table, как описано здесь. Затем посмотрите, как ваши правила укладываются в существующие чейны, которые отличаются от V1. Если останутся вопросы, присылайте свой iptables -L -v -n.

Правка 05.01.2016:

Правильный путь к скрипту — /opt/etc/ndm/netfilter.d/XXX-openvpn.sh, спасибо Funeral_YAR.

Link to comment
Share on other sites

  • 5 weeks later...
iptables незнает про --dport

Привести пример можете, как он об этом не знает?

Тоже интересует данный вопрос приведите пример с iptables ошибку выдает с командой --dport

Link to comment
Share on other sites

Для прописывания правил iptables нужно сделать скрипт /opt/etc/netfilter.d/XXX-openvpn.sh с проверкой $table

выложите, плиз, пример такого скрипта с правилами для openvpn из первого сообщения (пример в wiki мне непонятен)

Link to comment
Share on other sites

/opt/etc/netfilter.d/XXX-openvpn.sh -- неработает

/opt/etc/ndm/netfilter.d/XXX-openvpn.sh -- работает!

простые вещи аля работают

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

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

iptables -I INPUT -i tun0 -j ACCEPT

iptables -t filter -A INPUT -i lo -j ACCEPT

всем спасибо

жаль, текущая сборка мало опций тянет

Link to comment
Share on other sites

У меня не работает, выдает ошибку: iptables v1.4.12: Couldn't load target `standard':No such file or directory

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

Link to comment
Share on other sites

У меня не работает, выдает ошибку: iptables v1.4.12: Couldn't load target `standard':No such file or directory

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

Даже на iptables -L -v -n ругается так. Исходно iptables не было на роутере, потому я поставил с помощью opkg. Может я не то сделал?

Link to comment
Share on other sites

Даже на iptables -L -v -n ругается так. Исходно iptables не было на роутере, потому я поставил с помощью opkg. Может я не то сделал?

Наверное, что то не так...

[spoiler=]

root@Keenetic_Giga:/opt/root/# opkg install iptables
Installing iptables (1.4.12-1) to root...
Downloading http://opkg.keenopt.ru/mipsel/iptables_1.4.12-1_mipsel.ipk.
Installing libiptc (1.4.12-1) to root...
Downloading http://opkg.keenopt.ru/mipsel/libiptc_1.4.12-1_mipsel.ipk.
Installing libxtables (1.4.12-1) to root...
Downloading http://opkg.keenopt.ru/mipsel/libxtables_1.4.12-1_mipsel.ipk.
Configuring libiptc.
Configuring libxtables.
Configuring iptables.
root@Keenetic_Giga:/opt/root/# ip
ip6tables  iptables   
root@Keenetic_Giga:/opt/root/# iptables -L -v -n
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination         
 123 11375 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
  16  4042 ACCEPT     all  --  *      *       0.0.0.0/0            224.0.0.0/4         
   0     0 ACCEPT     2    --  *      *       0.0.0.0/0            0.0.0.0/0           
9927 7209K _NDM_IN_EXCEPTIONS  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
9927 7209K _NDM_IN    all  --  *      *       0.0.0.0/0            0.0.0.0/0           
   0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate INVALID
9884 7199K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
   0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate DNAT
  43  9445 _NDM_INPUT  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
  43  9445 SL_PASS2   all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination         
   0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
   0     0 ACCEPT     all  --  *      *       0.0.0.0/0            224.0.0.0/4         
   0     0 _NDM_IN    all  --  *      *       0.0.0.0/0            0.0.0.0/0           
   0     0 _NDM_OUT   all  --  *      *       0.0.0.0/0            0.0.0.0/0           
   0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate INVALID
   0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
   0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate DNAT
   0     0 _NDM_FORWARD  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
   0     0 SL_PASS1   all  --  *      *       0.0.0.0/0            0.0.0.0/0           
   0     0 ACCEPT     all  --  br0    br0     0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy ACCEPT 9992 packets, 1424K bytes)
pkts bytes target     prot opt in     out     source               destination         
9992 1424K _NDM_OUT   all  --  *      *       0.0.0.0/0            0.0.0.0/0           
9992 1424K _NDM_VPNSERVER_FILTER_OUT  all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain CLOUD_UDP_SERVICE_NF_CHAIN_ (1 references)
pkts bytes target     prot opt in     out     source               destination         

Chain SL_PASS1 (1 references)
pkts bytes target     prot opt in     out     source               destination         
   0     0 SL_PASS2   all  --  *      apcli0  0.0.0.0/0            0.0.0.0/0            ctstate NEW

Chain SL_PASS2 (2 references)
pkts bytes target     prot opt in     out     source               destination         
   0     0 ACCEPT     all  --  ra0    *       0.0.0.0/0            0.0.0.0/0            ctstate NEW
   0     0 ACCEPT     all  --  ra1    *       0.0.0.0/0            0.0.0.0/0            ctstate NEW
   0     0 ACCEPT     all  --  ra2    *       0.0.0.0/0            0.0.0.0/0            ctstate NEW
   0     0 ACCEPT     all  --  ra3    *       0.0.0.0/0            0.0.0.0/0            ctstate NEW
   0     0 ACCEPT     all  --  eth2.1 *       0.0.0.0/0            0.0.0.0/0            ctstate NEW
  43  9445 ACCEPT     all  --  br0    *       0.0.0.0/0            0.0.0.0/0            ctstate NEW

Chain _NDM_FORWARD (1 references)
pkts bytes target     prot opt in     out     source               destination         
   0     0 _NDM_UPNP_FORWARD  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
   0     0 _NDM_VPNSERVER_FILTER_FORWARD  all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain _NDM_IN (2 references)
pkts bytes target     prot opt in     out     source               destination         

Chain _NDM_INPUT (1 references)
pkts bytes target     prot opt in     out     source               destination         
   0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           UNKNOWN match `udp' 
  43  9445 _NDM_TORRENT_INPUT  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
  43  9445 _NDM_VPNSERVER_FILTER_IN  all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain _NDM_IN_EXCEPTIONS (1 references)
pkts bytes target     prot opt in     out     source               destination         
9927 7209K CLOUD_UDP_SERVICE_NF_CHAIN_  all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain _NDM_OUT (2 references)
pkts bytes target     prot opt in     out     source               destination         

Chain _NDM_TORRENT_INPUT (1 references)
pkts bytes target     prot opt in     out     source               destination         
   0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           UNKNOWN match `tcp' 

Chain _NDM_UPNP_FORWARD (1 references)
pkts bytes target     prot opt in     out     source               destination         

Chain _NDM_VPNSERVER_FILTER_FORWARD (1 references)
pkts bytes target     prot opt in     out     source               destination         

Chain _NDM_VPNSERVER_FILTER_IN (1 references)
pkts bytes target     prot opt in     out     source               destination         

Chain _NDM_VPNSERVER_FILTER_OUT (1 references)
pkts bytes target     prot opt in     out     source               destination         
root@Keenetic_Giga:/opt/root/# 

Link to comment
Share on other sites

Давайте сверимся. Я не понимаю, откуда взяты iptables и ip6tables одновременно. У меня они конфликтуют:


# opkg install ip6tables
Installing ip6tables (1.4.12-1) to root...
Downloading http://opkg.keenopt.ru/mipsel/ip6tables_1.4.12-1_mipsel.ipk.
Installing libxtables6 (1.4.12-1) to root...
Downloading http://opkg.keenopt.ru/mipsel/libxtables6_1.4.12-1_mipsel.ipk.
Collected errors:
* check_data_file_clashes: Package libxtables6 wants to install file /opt/usr/lib/iptables/libxt_limit.so
But that file is already provided by package * iptables
* check_data_file_clashes: Package libxtables6 wants to install file /opt/usr/lib/iptables/libxt_conntrack.so
But that file is already provided by package * iptables
* check_data_file_clashes: Package libxtables6 wants to install file /opt/usr/lib/iptables/libxt_standard.so
But that file is already provided by package * iptables
* opkg_install_cmd: Cannot install package ip6tables.

Мне IPv6 не нужно. Что выдает opkg list-installed ?

Link to comment
Share on other sites

Так удалите его:

# opkg remove ip6tables libxtables6 libiptc libxtables

а затем

# opkg install iptables

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

Link to comment
Share on other sites

Готово, можно обновляться.

# opkg update

# opkg upgrade

# opkg install ip6tables iptables

Можно доставить доп. модули, которые доступны в ядре прошивке:

# opkg install iptables-mod-conntrack iptables-mod-ipopt iptables-mod-ipsec iptables-mod-ipset iptables-mod-nat

Link to comment
Share on other sites

Вижу обновления, переустановил iptables, но исходную проблему это не решило.

Могу только посоветовать переустановить систему целиком, просто мне не понятно, что там может не работать.

Link to comment
Share on other sites

Вижу обновления, переустановил iptables, но исходную проблему это не решило.

Могу только посоветовать переустановить систему целиком, просто мне не понятно, что там может не работать.

Похоже, что iptables загружает либу /opt/usr/lib/iptables/libxt_standard.so, которая где-то фейлится. Очень похоже, что она как-то зависит от IPv6, я им не пользуюсь, потому этот компонент был вырублен галочкой через Веб-морду. Сейчас сделал эксперимент - поставил IPv6, и чудо произошло - iptables заработала.

Link to comment
Share on other sites

Конечно зависит, еще как! Некоторые пакеты собираются с поддержкой ipv6 и предполагается, что эта поддержка включена в прошивке, собирать пакеты для ipv4 и ipv6 отдельно, и по отдельности их потом поддерживать, просто не кому.

Link to comment
Share on other sites

  • 2 weeks later...

выложите, плиз, пример такого скрипта с правилами для openvpn из первого сообщения (пример в wiki мне непонятен)

сам спросил - сам отвечу

не стал забивать себе голову с этой проверкой $table, а просто положил скрипт firewall.sh в /opt/etc/ndm/netfilter.d/ следующего содержания

#!/bin/sh

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

и оно заработало

Link to comment
Share on other sites

не стал забивать себе голову с этой проверкой $table, а просто положил скрипт firewall.sh в /opt/etc/ndm/netfilter.d/ следующего содержания

#!/bin/sh

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

и оно заработало

Без проверки $table правила будут двоиться или троиться, т.к. события на filter, nat и mangle приходят независимо, а Вы пишете только в filter. Но на результат это не влияет.

Link to comment
Share on other sites

Без проверки $table правила будут двоиться или троиться, т.к. события на filter, nat и mangle приходят независимо, а Вы пишете только в filter. Но на результат это не влияет.

да, видел, что правила задваиваются и затраиваются, но я не претендую на истину в последней инстанции и правильные примеры скриптов только приветствую (чтоб копировать их бездумно и зажмурив глаза :D )

Link to comment
Share on other sites

Правильно я ли я понимаю?

Создаем файл в каталоге /opt/etc/ndm/netfilter.d/forward.sh c содержимым

#!/bin/sh

[ "$table" != "nat" ] && exit 0

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

Это для FORWARD.

А для INPUT или OUTPUT /opt/etc/ndm/netfilter.d/input.sh

#!/bin/sh

[ "$table" != "filter" ] && exit 0

iptables -I INPUT -i tun0 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 1.1.1.1 -j DROP

Link to comment
Share on other sites

Правильно я ли я понимаю?

Создаем файл в каталоге /opt/etc/ndm/netfilter.d/forward.sh c содержимым

#!/bin/sh

[ "$table" != "nat" ] && exit 0

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

Это для FORWARD.

А для INPUT или OUTPUT /opt/etc/ndm/netfilter.d/input.sh

#!/bin/sh

[ "$table" != "filter" ] && exit 0

iptables -I INPUT -i tun0 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 1.1.1.1 -j DROP

Переусложнили. Все Ваши правила относятся к таблице filter, поэтому их можно положить в один скрипт под проверку

[ "$table" != "filter" ] && exit 0

Link to comment
Share on other sites

  • 2 weeks later...
У меня не работает, выдает ошибку: iptables v1.4.12: Couldn't load target `standard':No such file or directory

Аналогично:

/opt/root # opkg install iptables-mod-conntrack iptables-mod-nat iptables-mod-ipsec

iptables-utils iptables

Installing iptables-mod-conntrack (1.4.12-2) to root...

Downloading http://opkg.keenopt.ru/mipsel/iptables- ... bles-utils iptables

.

Installing iptables (1.4.12-2) to root...

iptables-utils iptables

Downloading http://opkg.keenopt.ru/mipsel/iptables_ ... mipsel.ipk.

Installing iptables-mod-nat (1.4.12-2) to root...

Downloading http://opkg.keenopt.ru/mipsel/iptables- ... mipsel.ipk.

Installing iptables-mod-ipsec (1.4.12-2) to root...

Downloading http://opkg.keenopt.ru/mipsel/iptables- ... mipsel.ipk.

Installing iptables-utils (1.4.12-2) to root...

Downloading http://opkg.keenopt.ru/mipsel/iptables- ... mipsel.ipk.

Package iptables (1.4.12-2) installed in root is up to date.

Configuring iptables.

Configuring iptables-mod-ipsec.

Configuring iptables-mod-conntrack.

Configuring iptables-utils.

Configuring iptables-mod-nat.

/opt/root # iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

iptables v1.4.12: Couldn't load target `MASQUERADE':No such file or directory

Try `iptables -h' or 'iptables --help' for more information.

/opt/root # opkg files iptables

Package iptables (1.4.12-2) is installed on root and has the following files:

/opt/usr/lib/iptables/libipt_REJECT.so

/opt/usr/lib/iptables/libxt_udp.so

/opt/usr/lib/iptables/libxt_mark.so

/opt/usr/lib/iptables/libipt_icmp.so

/opt/usr/lib/iptables/libxt_multiport.so

/opt/usr/lib/iptables/libxt_mac.so

/opt/usr/lib/iptables/libxt_standard.so

/opt/usr/lib/iptables/libipt_SNAT.so

/opt/usr/lib/iptables/libipt_DNAT.so

/opt/usr/lib/iptables/libipt_LOG.so

/opt/usr/lib/iptables/libxt_TCPMSS.so

/opt/usr/lib/iptables/libxt_comment.so

/opt/usr/sbin/iptables

/opt/usr/lib/iptables/libxt_conntrack.so

/opt/usr/lib/iptables/libipt_REDIRECT.so

/opt/usr/lib/iptables/libxt_tcp.so

/opt/usr/lib/iptables/libxt_MARK.so

/opt/usr/lib/iptables/libxt_limit.so

/opt/usr/lib/iptables/libipt_MASQUERADE.so

/opt/root # /opt/usr/sbin/iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

iptables v1.4.12: Couldn't load target `MASQUERADE':No such file or directory

Try `iptables -h' or 'iptables --help' for more information.

/opt/root #

Ultra-2, свежеобновленная + opkg.

Что не так?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...