Skip to content

Instantly share code, notes, and snippets.

@hundredwatt
Created April 22, 2012 16:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hundredwatt/2464999 to your computer and use it in GitHub Desktop.
Save hundredwatt/2464999 to your computer and use it in GitHub Desktop.
Function for detecting if an IP address is from EC2
# Ranges Source: https://forums.aws.amazon.com/ann.jspa?annID=1408
# Ranges up-to-date as of: March 20, 2012
EC2_IP_RANGES = %w(
103.4.8.0/21 (103.4.8.0 - 103.4.15.255)
107.20.0.0/14 (107.20.0.0 - 107.23.255.255)
122.248.192.0/18 (122.248.192.0 - 122.248.255.255)
174.129.0.0/16 (174.129.0.0 - 174.129.255.255)
175.41.128.0/18 (175.41.128.0 - 175.41.191.255)
175.41.192.0/18 (175.41.192.0 - 175.41.255.255)
176.32.64.0/19 (176.32.64.0 - 176.32.95.255)
176.34.0.0/18 (176.34.0.0 - 176.34.63.255)
176.34.128.0/17 (176.34.128.0 - 176.34.255.255)
176.34.64.0/18 (176.34.64.0 – 176.34.127.255)
177.71.128.0/17 (177.71.128.0 - 177.71.255.255)
184.169.128.0/17 (184.169.128.0 - 184.169.255.255)
184.72.0.0/18 (184.72.0.0 – 184.72.63.255)
184.72.128.0/17 (184.72.128.0 - 184.72.255.255)
184.72.64.0/18 (184.72.64.0 - 184.72.127.255)
184.73.0.0/16 (184.73.0.0 – 184.73.255.255)
204.236.128.0/18 (204.236.128.0 - 204.236.191.255)
204.236.192.0/18 (204.236.192.0 - 204.236.255.255)
23.20.0.0/14 (23.20.0.0 – 23.23.255.255)
46.137.0.0/17 (46.137.0.0 - 46.137.127.255)
46.137.128.0/18 (46.137.128.0 - 46.137.191.255)
46.137.192.0/18 (46.137.192.0 - 46.137.255.255)
46.51.128.0/18 (46.51.128.0 - 46.51.191.255)
46.51.192.0/20 (46.51.192.0 - 46.51.207.255)
46.51.216.0/21 (46.51.216.0 - 46.51.223.255)
46.51.224.0/19 (46.51.224.0 - 46.51.255.255)
50.112.0.0/16 (50.112.0.0 - 50.112.255.255)
50.16.0.0/15 (50.16.0.0 - 50.17.255.255)
50.18.0.0/16 (50.18.0.0 - 50.18.255.255)
50.19.0.0/16 (50.19.0.0 - 50.19.255.255)
54.247.0.0/16 (54.247.0.0 – 54.247.255.255)
54.248.0.0/15 (54.248.0.0 - 54.249.255.255)
54.251.0.0/16 (54.251.0.0 – 54.251.255.255)
67.202.0.0/18 (67.202.0.0 - 67.202.63.255)
72.44.32.0/19 (72.44.32.0 - 72.44.63.255)
75.101.128.0/17 (75.101.128.0 - 75.101.255.255)
79.125.0.0/17 (79.125.0.0 - 79.125.127.255)
)
PARSED_EC2_IP_RANGES = EC2_IP_RANGES.each_slice(4).inject([]) do |arr, i|
arr << IPAddr.new(i[0]); arr
end
def ec2_ip?(ip)
# TODO: Use a binary tree instead of a linear scan
PARSED_EC2_IP_RANGES.select{|i|i===IPAddr.new(ip)}.any?
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment