it-swarm-ko.tech

단일 규칙에서 여러 소스 IP를 iptables

여러 소스 IP 주소를 사용하는 iptables (가능한 경우)에 단일 규칙을 만들고 싶습니다. 이것이 가능한가?

33
Glen Solsberry

원하는 소스 IP를 연속 범위로 집계 할 수있는 경우에만 가능합니다. 예 :

iptables -A INPUT -s 192.168.0.0/24 -d 192.168.0.5 -p tcp -j ACCEPT

원하는 IP를 포괄하는 공통 넷 마스크를 찾을 수 없으면 원하는 것을 수행하기 위해 동일한 규칙을 여러 개 작성해야합니다.

Iptables 규칙 작성의 낮은 수준을 처리 할 수있는 몇 가지 iptables 프레임 워크가 있으므로 규칙을보다 대칭적인 수준으로 정의 할 수 있습니다. Shorewall 는 최신 Linux 배포판과 함께 제공되는 일반적인 것입니다.

14
Dave Cheney

단일 명령으로 여러 소스를 추가하려면 다음을 수행하십시오.

iptables -t filter -A INPUT -s 192.168.1.1,2.2.2.2,10.10.10.10 -j ACCEPT

iptables는 자동으로 다중 규칙으로 변환합니다.

117
Ali Pandidan

원래 질문은 2009 년 5 월에서 왔지만 2011 년 5 월부터 Linux 커널에는 ipset이라는이 요구를 해결하는 기능이 있습니다.

다음은 ipset을 만들고 주소를 추가 한 다음 방화벽 규칙에서 사용하는 예제입니다.

ipset -N office365 iphash

ipset -A office365 132.245.228.194
ipset -A office365 132.245.77.34
ipset -A office365 132.245.48.34
ipset -A office365 132.245.68.242
ipset -A office365 132.245.55.2
ipset -A office365 40.101.17.98
ipset -A office365 132.245.48.18
ipset -A office365 132.245.229.114
ipset -A office365 132.245.196.34
ipset -A office365 132.245.56.114

iptables -A OUTPUT -m set --match-set office365 dst -j ACCEPT

보다 man iptablesman ipset 더 많은 정보를 위해서.

16
Tobia

iprange 모듈을 e.x와 같이 '--src-range'와 함께 사용할 수 있습니다.

-A INPUT -i eth0 -m iprange --src-range 192.168.1.90-192.168.1.101 -j ACCEPT

출처 : iptables 1.4.7 맨 페이지

   iprange
   This matches on a given arbitrary range of IP addresses.

   [!] --src-range from[-to]
          Match source IP in the specified range.

   [!] --dst-range from[-to]
          Match destination IP in the specified range.

(이것은 4 살짜리 질문과 같다는 것을 알고 있지만 인터넷에서 이것을 찾는 사람이라면 누구나 대답 할 수 있습니다)

14
GGets

Bòss King의 의견 외에도 쉼표로 구분 된 여러 주소를 간단히 지정할 수도 있습니다.

[!] -s, --source address[/mask][,...]
      Source specification. Address can be either a network name, a hostname, a network IP address (with /mask), or a plain IP address. Hostnames will be resolved once only, before the rule is submitted to the kernel.  Please note  that  specifying
      any  name  to  be resolved with a remote query such as DNS is a really bad idea.  The mask can be either a network mask or a plain number, specifying the number of 1's at the left side of the network mask.  Thus, a mask of 24 is equivalent to
      255.255.255.0.  A "!" argument before the address specification inverts the sense of the address. The flag --src is an alias for this option.  Multiple addresses can be specified, but this will expand to multiple rules (when adding with  -A),
      or will cause multiple rules to be deleted (with -D).
5
arjarj

독립적 인 요구 사항 목록을 결합 할 수 있도록 여러 체인을 정의 할 수 있습니다. 나는 이것이 정확히 당신이 원하는 것이지 의심하지만 여전히 꽤 편리합니다. 이를 사용하여 IP로 유효한 사용자 유형 목록을 정의한 다음 소스 네트워크에 포트 제한을 적용합니다. 예를 들어,

# Allow SMTP from anywhere
-A tcp_inbound -p tcp -m tcp -s 0/0 --dport 25 -j allowed
#
# Define the set of IP ranges we'll send to the tcp_user_inbound chain
-A tcp_inbound -p tcp -m tcp -s 172.19.1.0/24 -j tcp_user_inbound
-A tcp_inbound -p tcp -m tcp -s 172.19.6.0/23 -j tcp_user_inbound
-A tcp_inbound -p tcp -m tcp -s 172.19.8.0/24 -j tcp_user_inbound
-A tcp_inbound -p tcp -m tcp -s 172.19.10.0/23 -j tcp_user_inbound
-A tcp_inbound -p tcp -m tcp -s 172.19.12.0/23 -j tcp_user_inbound
-A tcp_inbound -p tcp -m tcp -s 172.19.4.0/23 -j tcp_user_inbound
#
# Ports we allow access to based on a source-address prereq.
# SSH
-A tcp_user_inbound -p tcp -m tcp --dport 22 -j allowed
# VNC
-A tcp_user_inbound -p tcp -m tcp --dport 5950:5958 -j allowed
# https
-A tcp_user_inbound -p tcp -m tcp --dport 443 -j allowed
4
jj33