У меня большая сеть OpenVPN. Большинство адресов имеют свободный доступ друг к другу. Однако несколько IP-адресов должны быть ограничены только парой других IP-адресов.
Например, 10.8.0.6 может быть разрешено связываться только с 10.8.0.10 .. Но 10.8.0.10 и все другие адреса в подсети могут связываться друг с другом без ограничений. Будет ли это выполнено с помощью следующего кода iptables?
# allow communication between 10.8.0.6 and 10.8.0.10, deny any additional
# access to 10.8.0.6
iptables -A FORWARD -s 10.180.0.6 -d 10.8.0.10 -j ACCEPT
iptables -A FORWARD -s 10.180.0.10 -d 10.8.0.6 -j ACCEPT
iptables -A FORWARD -s 10.180.0.6 -j DROP
# Begin required lines for server operation
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 10.8.0.0/16 -j ACCEPT
iptables -A FORWARD -j REJECT
iptables -t nat -A POSTROUTING -s 10.8.0.0/16 -o eth0 -j MASQUERADE
/etc/init.d/dnsmasq restart
# End required lines for server operation
Спасибо
Вы правы, должно было быть 10.8.x.x. НО, это все еще не работает. Адреса, которые я пытаюсь ограничить, по-прежнему имеют доступ ко всем серверам. Вот мой текущий rc.local
# Begin access restriction lines
# eg. allow communication between 10.8.0.122 and 10.8.0.58, deny any additional$
# client access only to certain systems
iptables -A FORWARD -s 10.8.0.122 -d 10.8.0.58 -j ACCEPT
iptables -A FORWARD -s 10.8.0.122 -d 10.8.0.66 -j ACCEPT
iptables -A FORWARD -s 10.8.0.122 -d 10.8.0.70 -j ACCEPT
iptables -A FORWARD -s 10.8.0.122 -d 10.8.0.62 -j ACCEPT
iptables -A FORWARD -s 10.8.0.122 -j DROP
# client access only to certain systems
iptables -A FORWARD -s 10.8.0.126 -d 10.8.0.58 -j ACCEPT
iptables -A FORWARD -s 10.8.0.126 -d 10.8.0.66 -j ACCEPT
iptables -A FORWARD -s 10.8.0.126 -d 10.8.0.70 -j ACCEPT
iptables -A FORWARD -s 10.8.0.126 -d 10.8.0.62 -j ACCEPT
iptables -A FORWARD -s 10.8.0.126 -j DROP
# End access restriction lines
# Begin required lines for server operation
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 10.8.0.0/16 -j ACCEPT
iptables -A FORWARD -j REJECT
iptables -t nat -A POSTROUTING -s 10.8.0.0/16 -o eth0 -j MASQUERADE
/etc/init.d/dnsmasq restart
# End required lines for server operation
exit 0
Спасибо
ОБНОВИТЬ:
вывод iptables -L -v -n
root@li590-32:~# iptables -L -n -v
Chain INPUT (policy ACCEPT 2455K packets, 430M bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
4597K 2770M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
32180 1813K ACCEPT all -- * * 10.8.0.0/16 0.0.0.0/0
0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 ACCEPT all -- * * 10.8.0.0/16 0.0.0.0/0
0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 ACCEPT all -- * * 10.8.0.0/16 0.0.0.0/0
0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
0 0 ACCEPT all -- * * 10.8.0.122 10.8.0.58
0 0 ACCEPT all -- * * 10.8.0.122 10.8.0.66
0 0 ACCEPT all -- * * 10.8.0.122 10.8.0.70
0 0 ACCEPT all -- * * 10.8.0.122 10.8.0.62
0 0 DROP all -- * * 10.8.0.122 0.0.0.0/0
0 0 ACCEPT all -- * * 10.8.0.126 10.8.0.58
0 0 ACCEPT all -- * * 10.8.0.126 10.8.0.66
0 0 ACCEPT all -- * * 10.8.0.126 10.8.0.70
0 0 ACCEPT all -- * * 10.8.0.126 10.8.0.62
0 0 DROP all -- * * 10.8.0.126 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 -- * * 10.8.0.0/16 0.0.0.0/0
0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
Chain OUTPUT (policy ACCEPT 3144K packets, 2737M bytes)
pkts bytes target prot opt in out source destination
Первые три строки относятся к 10.180.x.x, когда я думаю, вы имели в виду 10.8.x.x?
Если да, то строка iptables -A FORWARD -s 10.180.0.10 -d 10.8.0.6 -j ACCEPT
не нужно.
В остальном выглядит хорошо.
iptables
работает на основе выигрыша первого диспозитивного совпадения, поэтому полный набор правил, который вы опубликовали, проясняет проблему: ни одно из ограничений, которые вы установили после первых двух строк, никогда не видит никакого трафика, потому что первое и второе правила совпадают - и разрешающий - весь трафик, который вы пытаетесь сопоставить и запретить позже.
Либо вам нужно будет узнать, где устанавливаются эти первые две строки, и убедиться, что все ваши дополнительные строки перемещены перед ними, или вам нужно будет вставить все новые строки перед первыми двумя, используя iptables -I FORWARD 1
в приведенном выше сценарии, чтобы постоянно вставлять каждую новую строку в начало из FORWARD
цепочку вместо того, чтобы добавлять ее в конец.
Первый метод предпочтительнее, так как его легче поддерживать; но вы не говорите, над каким дистрибутивом вы работаете, поэтому я не могу сказать, где устанавливаются правила.
В любом случае вам нужно убедиться, что в финальной цепочке DROP
правила предшествуют менее конкретным ACCEPT
правила, которые будут соответствовать (и, следовательно, разрешать) один и тот же трафик.