Created
July 3, 2021 10:10
-
-
Save iamdvr/14cbaf7f5b0bb7722b32740fa4fcd9d5 to your computer and use it in GitHub Desktop.
Google Internet Ip Ranges of IpMask To Openvpn Subnet Mask
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Example with java version 11 | |
// java GoogleIpMaskToOpenvpnSubnetMask.java | |
// --route 8.8.4.0 255.255.255.0 net_gateway 300 --route 8.8.8.0 255.255.255.0 net_gateway 300 --route 8.34.208.0 255.255.240.0 net_gateway 300 --route 8.35.192.0 255.255.240.0 net_gateway 300 --route 23.236.48.0 255.255.240.0 net_gateway 300 --route 23.251.128.0 255.255.224.0 net_gateway 300 --route 34.64.0.0 255.192.0.0 net_gateway 300 --route 34.128.0.0 255.192.0.0 net_gateway 300 --route 35.184.0.0 255.248.0.0 net_gateway 300 --route 35.192.0.0 255.252.0.0 net_gateway 300 --route 35.196.0.0 255.254.0.0 net_gateway 300 --route 35.198.0.0 255.255.0.0 net_gateway 300 --route 35.199.0.0 255.255.128.0 net_gateway 300 --route 35.199.128.0 255.255.192.0 net_gateway 300 --route 35.200.0.0 255.248.0.0 net_gateway 300 --route 35.208.0.0 255.240.0.0 net_gateway 300 --route 35.224.0.0 255.240.0.0 net_gateway 300 --route 35.240.0.0 255.248.0.0 net_gateway 300 --route 64.15.112.0 255.255.240.0 net_gateway 300 --route 64.233.160.0 255.255.224.0 net_gateway 300 --route 66.102.0.0 255.255.240.0 net_gateway 300 --route 66.249.64.0 255.255.224.0 net_gateway 300 --route 70.32.128.0 255.255.224.0 net_gateway 300 --route 72.14.192.0 255.255.192.0 net_gateway 300 --route 74.114.24.0 255.255.248.0 net_gateway 300 --route 74.125.0.0 255.255.0.0 net_gateway 300 --route 104.154.0.0 255.254.0.0 net_gateway 300 --route 104.196.0.0 255.252.0.0 net_gateway 300 --route 104.237.160.0 255.255.224.0 net_gateway 300 --route 107.167.160.0 255.255.224.0 net_gateway 300 --route 107.178.192.0 255.255.192.0 net_gateway 300 --route 108.59.80.0 255.255.240.0 net_gateway 300 --route 108.170.192.0 255.255.192.0 net_gateway 300 --route 108.177.0.0 255.255.128.0 net_gateway 300 --route 130.211.0.0 255.255.0.0 net_gateway 300 --route 136.112.0.0 255.240.0.0 net_gateway 300 --route 142.250.0.0 255.254.0.0 net_gateway 300 --route 146.148.0.0 255.255.128.0 net_gateway 300 --route 162.216.148.0 255.255.252.0 net_gateway 300 --route 162.222.176.0 255.255.248.0 net_gateway 300 --route 172.110.32.0 255.255.248.0 net_gateway 300 --route 172.217.0.0 255.255.0.0 net_gateway 300 --route 172.253.0.0 255.255.0.0 net_gateway 300 --route 173.194.0.0 255.255.0.0 net_gateway 300 --route 173.255.112.0 255.255.240.0 net_gateway 300 --route 192.158.28.0 255.255.252.0 net_gateway 300 --route 192.178.0.0 255.254.0.0 net_gateway 300 --route 193.186.4.0 255.255.255.0 net_gateway 300 --route 199.36.154.0 255.255.254.0 net_gateway 300 --route 199.36.156.0 255.255.255.0 net_gateway 300 --route 199.192.112.0 255.255.252.0 net_gateway 300 --route 199.223.232.0 255.255.248.0 net_gateway 300 --route 207.223.160.0 255.255.240.0 net_gateway 300 --route 208.65.152.0 255.255.252.0 net_gateway 300 --route 208.68.108.0 255.255.252.0 net_gateway 300 --route 208.81.188.0 255.255.252.0 net_gateway 300 --route 208.117.224.0 255.255.224.0 net_gateway 300 --route 209.85.128.0 255.255.128.0 net_gateway 300 --route 216.58.192.0 255.255.224.0 net_gateway 300 --route 216.73.80.0 255.255.240.0 net_gateway 300 --route 216.239.32.0 255.255.224.0 net_gateway 300 | |
import java.util.*; | |
import java.net.*; | |
import java.io.*; | |
import java.util.stream.*; | |
public class GoogleIpMaskToOpenvpnSubnetMask { | |
public static void main(String[] args) throws Exception { | |
var processBuilder = new ProcessBuilder(); | |
processBuilder.command("/bin/sh", "-c","/usr/bin/curl -s https://www.gstatic.com/ipranges/goog.json| /usr/bin/jq '.'|/bin/grep ipv4Prefix|/bin/awk -F \":\" '{print $2}'|/bin/sed 's;\";;g'"); | |
var process = processBuilder.start(); | |
List<String> ipMasks= new ArrayList<String>(); | |
try (var reader = new BufferedReader(new InputStreamReader(process.getInputStream()))) { | |
ipMasks = reader.lines().map(s -> s.trim()).parallel().collect(Collectors.toList()); | |
} | |
List<String> routeStr = new ArrayList<String>(); | |
for(String ipMask: ipMasks){ | |
routeStr.add("--route " + ipMaskToSubnetMask(ipMask) + " net_gateway 300"); | |
} | |
System.out.println(String.join(" ", routeStr)); | |
} | |
public static String ipMaskToSubnetMask(String ipMask) throws Exception { | |
String[] parts = ipMask.split("/"); | |
String ip = parts[0]; | |
int prefix; | |
if (parts.length < 2) { | |
prefix = 0; | |
} else { | |
prefix = Integer.parseInt(parts[1]); | |
} | |
int mask = 0xffffffff << (32 - prefix); | |
//System.err.println("Prefix=" + prefix); | |
//System.out.println("Address=" + ip); | |
int value = mask; | |
byte[] bytes = new byte[]{ | |
(byte)(value >>> 24), (byte)(value >> 16 & 0xff), (byte)(value >> 8 & 0xff), (byte)(value & 0xff) }; | |
InetAddress netAddr = InetAddress.getByAddress(bytes); | |
//System.out.println("Mask=" + netAddr.getHostAddress()); | |
return ip + " " + netAddr.getHostAddress(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment