Як дозволити діапазон IP-адрес за допомогою IPTABLES?


29

Ось мої iptables, як я можу зробити так, щоб я міг дозволити діапазон ip на ETH1 (10.51.xx)

# Generated by iptables-save v1.4.4 on Thu Jul  8 13:00:14 2010
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:fail2ban-ssh - [0:0]
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh 
-A INPUT -i lo -j ACCEPT 
-A INPUT -d 127.0.0.0/8 ! -i lo -j REJECT --reject-with icmp-port-unreachable 
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 143 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 110 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 25 -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT 
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT 
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7 
-A INPUT -j REJECT --reject-with icmp-port-unreachable 
-A FORWARD -j REJECT --reject-with icmp-port-unreachable 
-A OUTPUT -j ACCEPT 
-A fail2ban-ssh -j RETURN 
COMMIT

Відповіді:


39

Якщо ви хочете дозволити певний діапазон IP-адрес всередині 10.50.0.0 (наприклад, від 10.50.10.20 до 10.50.10.80), ви можете скористатися такою командою:

iptables -A INPUT -i eth1 -m iprange --src-range 10.50.10.20-10.50.10.80 -j ACCEPT

Якщо ви хочете дозволити весь діапазон, можете скористатися цим:

iptables -A INPUT -i eth1 -s 10.50.0.0/16 -j ACCEPT

Див. Iptables man page і це питання тут на ServerFault: Білий список дозволених IP-адрес ( вхід / вихід) за допомогою iptables


Де я кладу цю лінію?
Майк Керрі

Це команди, які ви запустили з командного рядка: [root @ host ~] # iptables -A INPUT -i eth1 -s 10.50.0.0/16 -j ACCEPT
runlevelsix

1
Використовувати "10.50.10.20-10.50.10.80", "-80" може не робити те, що ви хочете .
основні6

@runlevelsix Якщо я хотів би дозволити діапазон ip, як 10.0.0.0, через 10.255.255.255, я б використовував 10.0.0.0/24?
RoboBear

@MikeCurry це вказівка ​​того, що потрібно запустити в командному рядку / з вашого терміналу. Крім того, ви можете додати це правило до файлу правил iptables у /etc/iptables/rulesets.d (якщо ви використовуєте Debian Linux), видаливши "iptables" та наступний пробіл з рядка: -A INPUT -i eth1 - m iprange --src-діапазон 10.50.10.20-10.50.10.80 -j ACCEPT.
RoboBear

3

Для конкретного порту скажіть 22:

iptables -A INPUT -p tcp  -m iprange --src-range  10.50.10.20-10.50.10.80  --dport 22  -j ACCEPT

1

Добре, ви бачили, що ви хочете дозволити ці IP-адреси для, але 10.51.xx в CIDR перекладається 10.50.0.0/16. Так це буде щось на зразок лінії для інтерфейсу петлевого звороту, який є 127.0.0.0/8.


1
iptables -A INPUT -i eth1 -m iprange --src-range 10.50.10.20-80 -j ACCEPT

Може подати таку помилку:

iptables: Applying firewall rules: xt_iprange: range 10.50.10.20-80 is reversed and will never match

Щоб виправити це, просто поставте повний ip замість цього:

iptables -A INPUT -i eth1 -m iprange --src-range 10.50.10.20-10.50.10.80 -j ACCEPT

Довідка: http://blog.capitar.com/iptables-ip-range-reversed/

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.