├── BBC_WEB4 ├── CBS_IPv4 ├── Chk_ADNS.sh ├── LICENSE ├── NETFLIX-DNS ├── README.md ├── dhcpstaticlist.sh ├── nat-start-conv.sh ├── profile.add ├── wan-event └── x3mRouting.sh /BBC_WEB4: -------------------------------------------------------------------------------- 1 | create BBC_WEB4 hash:net family inet hashsize 1024 maxelem 65536 2 | add BBC_WEB4 152.195.56.44 3 | add BBC_WEB4 52.220.15.104 4 | add BBC_WEB4 172.217.166.131 5 | add BBC_WEB4 212.58.232.66 6 | add BBC_WEB4 151.101.64.84 7 | add BBC_WEB4 54.76.132.87 8 | add BBC_WEB4 212.58.244.214 9 | add BBC_WEB4 34.249.112.184 10 | add BBC_WEB4 65.9.181.41 11 | add BBC_WEB4 104.90.209.243 12 | add BBC_WEB4 52.31.145.141 13 | add BBC_WEB4 23.76.206.132 14 | add BBC_WEB4 92.204.218.255 15 | add BBC_WEB4 212.58.244.15 16 | add BBC_WEB4 23.64.18.83 17 | add BBC_WEB4 106.10.248.150 18 | add BBC_WEB4 65.9.181.99 19 | add BBC_WEB4 169.50.126.241 20 | add BBC_WEB4 52.74.73.168 21 | add BBC_WEB4 212.58.244.215 22 | add BBC_WEB4 52.31.86.249 23 | add BBC_WEB4 151.101.192.81 24 | add BBC_WEB4 52.48.246.30 25 | add BBC_WEB4 172.217.174.174 26 | add BBC_WEB4 212.58.244.202 27 | add BBC_WEB4 52.51.175.25 28 | add BBC_WEB4 99.81.147.200 29 | add BBC_WEB4 151.101.0.81 30 | add BBC_WEB4 98.136.103.23 31 | add BBC_WEB4 212.58.233.252 32 | add BBC_WEB4 65.9.181.57 33 | add BBC_WEB4 65.9.181.27 34 | add BBC_WEB4 212.58.249.187 35 | add BBC_WEB4 18.203.38.139 36 | add BBC_WEB4 18.136.128.196 37 | add BBC_WEB4 151.101.128.81 38 | add BBC_WEB4 212.58.233.254 39 | add BBC_WEB4 34.254.123.185 40 | add BBC_WEB4 23.199.137.107 41 | add BBC_WEB4 54.76.62.59 42 | add BBC_WEB4 63.34.194.119 43 | add BBC_WEB4 151.101.64.81 44 | add BBC_WEB4 212.58.249.137 45 | add BBC_WEB4 151.101.0.84 46 | add BBC_WEB4 212.58.249.136 47 | add BBC_WEB4 52.210.183.246 48 | add BBC_WEB4 212.58.251.37 49 | add BBC_WEB4 34.250.93.67 50 | add BBC_WEB4 54.72.72.52 51 | add BBC_WEB4 65.9.180.72 52 | add BBC_WEB4 34.247.200.54 53 | add BBC_WEB4 184.27.254.198 54 | add BBC_WEB4 212.58.244.203 55 | add BBC_WEB4 151.101.128.84 56 | add BBC_WEB4 65.9.181.4 57 | add BBC_WEB4 52.94.216.59 58 | add BBC_WEB4 54.154.253.42 59 | add BBC_WEB4 212.82.100.150 60 | add BBC_WEB4 52.31.93.96 61 | add BBC_WEB4 54.77.138.188 62 | add BBC_WEB4 52.211.5.165 63 | add BBC_WEB4 3.248.158.81 64 | add BBC_WEB4 212.58.249.134 65 | add BBC_WEB4 99.80.206.135 66 | add BBC_WEB4 52.214.248.254 67 | add BBC_WEB4 212.58.249.160 68 | add BBC_WEB4 52.48.75.45 69 | add BBC_WEB4 212.58.244.92 70 | add BBC_WEB4 212.58.237.251 71 | add BBC_WEB4 212.58.244.16 72 | add BBC_WEB4 212.58.244.17 73 | add BBC_WEB4 212.58.249.227 74 | add BBC_WEB4 54.73.14.242 75 | add BBC_WEB4 34.241.23.42 76 | add BBC_WEB4 54.255.75.174 77 | add BBC_WEB4 34.249.93.18 78 | add BBC_WEB4 23.42.144.242 79 | add BBC_WEB4 54.76.250.131 80 | add BBC_WEB4 3.0.225.172 81 | add BBC_WEB4 151.101.8.81 82 | add BBC_WEB4 52.74.83.157 83 | add BBC_WEB4 212.58.249.226 84 | add BBC_WEB4 54.75.9.229 85 | add BBC_WEB4 52.211.55.222 86 | add BBC_WEB4 212.58.244.81 87 | add BBC_WEB4 52.220.176.6 88 | add BBC_WEB4 212.58.249.199 89 | add BBC_WEB4 74.6.136.150 90 | add BBC_WEB4 212.58.249.135 91 | add BBC_WEB4 52.221.17.8 92 | add BBC_WEB4 212.58.244.78 93 | add BBC_WEB4 54.77.27.196 94 | add BBC_WEB4 63.32.152.168 95 | add BBC_WEB4 54.154.197.66 96 | add BBC_WEB4 212.58.249.198 97 | add BBC_WEB4 212.58.244.39 98 | add BBC_WEB4 216.58.196.35 99 | add BBC_WEB4 34.254.103.194 100 | add BBC_WEB4 23.199.157.34 101 | add BBC_WEB4 99.81.232.76 102 | add BBC_WEB4 118.215.98.155 103 | add BBC_WEB4 52.76.240.14 104 | add BBC_WEB4 212.58.233.251 105 | add BBC_WEB4 54.216.175.24 106 | add BBC_WEB4 169.50.126.245 107 | add BBC_WEB4 65.9.181.15 108 | add BBC_WEB4 169.50.126.250 109 | add BBC_WEB4 212.58.249.157 110 | add BBC_WEB4 65.9.181.67 111 | add BBC_WEB4 54.179.60.150 112 | add BBC_WEB4 108.128.173.249 113 | add BBC_WEB4 212.58.227.225 114 | add BBC_WEB4 212.58.251.32 115 | add BBC_WEB4 18.200.89.143 116 | add BBC_WEB4 212.58.249.201 117 | add BBC_WEB4 52.17.160.114 118 | add BBC_WEB4 52.50.74.61 119 | add BBC_WEB4 52.18.56.77 120 | add BBC_WEB4 212.58.244.93 121 | add BBC_WEB4 18.136.162.166 122 | add BBC_WEB4 169.50.126.242 123 | add BBC_WEB4 212.58.244.88 124 | add BBC_WEB4 65.9.181.70 125 | add BBC_WEB4 176.32.109.69 126 | add BBC_WEB4 99.81.54.220 127 | add BBC_WEB4 184.27.250.201 128 | add BBC_WEB4 34.255.223.73 129 | add BBC_WEB4 54.216.212.5 130 | add BBC_WEB4 23.9.188.16 131 | add BBC_WEB4 212.58.237.254 132 | add BBC_WEB4 52.17.107.180 133 | add BBC_WEB4 212.58.227.226 134 | add BBC_WEB4 212.58.237.252 135 | add BBC_WEB4 99.81.225.236 136 | add BBC_WEB4 54.246.117.35 137 | add BBC_WEB4 34.252.157.68 138 | add BBC_WEB4 151.101.192.84 139 | add BBC_WEB4 124.108.115.100 140 | add BBC_WEB4 63.33.52.118 141 | add BBC_WEB4 212.58.249.200 142 | add BBC_WEB4 52.215.194.178 143 | -------------------------------------------------------------------------------- /CBS_IPv4: -------------------------------------------------------------------------------- 1 | 110.164.11.50 2 | 203.156.125.72 3 | 151.101.41.188 4 | 110.164.11.112 5 | 110.164.11.25 6 | 52.205.62.165 7 | 110.164.253.137 8 | 23.45.232.27 9 | 23.45.232.19 10 | 34.234.23.242 11 | 52.4.72.213 12 | 130.248.144.17 13 | 151.101.53.188 14 | 23.42.156.11 15 | 110.164.11.16 16 | 23.45.232.10 17 | 151.101.198.133 18 | 110.164.253.136 19 | 152.195.19.76 20 | 35.157.70.123 21 | 3.224.55.214 22 | 110.164.17.80 23 | 64.30.228.127 24 | 35.156.195.196 25 | 23.42.156.35 26 | 110.164.253.155 27 | 110.164.11.10 28 | 34.208.86.36 29 | 54.164.152.140 30 | 23.52.73.70 31 | 199.232.37.188 32 | 72.246.190.72 33 | 72.246.190.98 34 | 52.86.237.216 35 | 110.164.17.73 36 | 23.42.156.27 37 | 66.235.147.232 38 | 23.223.198.66 39 | 54.218.180.161 40 | 103.16.206.8 41 | 52.206.148.138 42 | 151.101.25.188 43 | 23.32.3.242 44 | 110.164.11.19 45 | 54.152.199.161 46 | 151.101.9.188 47 | 110.164.17.66 48 | 152.199.39.90 49 | 72.246.150.128 50 | 23.210.203.50 51 | 52.3.187.31 52 | 110.164.11.11 53 | 66.235.147.246 54 | 66.235.147.238 55 | 35.175.1.217 56 | 130.248.144.19 57 | 72.246.189.226 58 | 110.164.11.130 59 | 35.169.66.82 60 | 110.164.17.56 61 | 66.235.147.236 62 | 52.201.136.195 63 | 52.5.173.177 64 | 54.173.143.185 65 | 110.164.253.170 66 | 110.164.11.72 67 | 34.232.85.94 68 | 35.241.26.132 69 | 110.164.253.139 70 | 23.52.171.136 71 | 23.52.73.162 72 | 52.203.117.196 73 | 66.235.147.244 74 | 23.45.232.42 75 | 23.52.73.93 76 | 92.122.94.89 77 | 18.139.76.45 78 | 110.164.11.9 79 | 52.6.156.139 80 | 92.122.94.88 81 | 23.52.171.235 82 | 23.65.182.162 83 | 23.52.171.59 84 | 52.23.33.133 85 | 23.52.171.131 86 | 110.164.17.57 87 | 23.65.182.160 88 | 52.5.149.247 89 | 110.164.11.8 90 | 54.187.216.46 91 | 18.138.216.223 92 | 110.164.253.168 93 | 52.39.8.230 94 | 23.52.171.57 95 | 52.204.37.102 96 | 72.246.150.98 97 | 18.214.58.81 98 | 23.32.3.250 99 | 18.209.146.116 100 | 103.16.206.11 101 | 52.21.214.123 102 | 52.45.79.60 103 | 52.54.119.224 104 | 18.140.85.34 105 | 23.35.111.105 106 | 52.4.50.131 107 | 23.35.111.43 108 | 203.156.125.75 109 | 151.101.26.133 110 | 23.35.111.91 111 | 110.164.253.144 112 | 172.232.11.168 113 | 52.204.226.40 114 | 110.164.2.8 115 | 23.62.54.170 116 | 110.164.253.161 117 | 23.52.73.71 118 | 52.86.207.78 119 | 66.235.147.233 120 | 23.200.142.34 121 | 110.164.11.106 122 | 52.3.205.50 123 | 173.222.148.48 124 | 184.86.250.42 125 | 61.213.168.9 126 | 96.17.180.144 127 | 110.164.17.82 128 | 72.246.150.115 129 | 184.86.250.26 130 | 34.230.237.74 131 | 35.168.108.66 132 | 110.164.11.57 133 | 23.49.60.57 134 | 52.54.242.182 135 | 151.101.118.133 136 | 18.235.24.77 137 | 203.156.125.74 138 | 110.164.253.153 139 | 54.210.242.98 140 | 35.173.86.227 141 | 72.246.150.112 142 | 52.21.159.125 143 | 110.164.253.138 144 | 23.35.111.74 145 | 23.52.73.130 146 | 52.55.251.200 147 | 52.21.101.121 148 | 3.216.56.218 149 | 52.54.8.225 150 | 23.42.156.9 151 | 151.101.54.133 152 | 23.35.111.161 153 | 130.248.144.16 154 | 72.246.150.138 155 | 52.22.164.49 156 | 34.225.235.204 157 | 110.164.253.152 158 | 35.227.235.238 159 | 23.45.232.48 160 | 110.164.11.17 161 | 3.219.244.74 162 | 35.241.5.173 163 | 23.200.142.10 164 | 54.156.177.183 165 | 3.208.121.126 166 | 3.208.14.195 167 | 110.164.253.154 168 | 52.29.141.216 169 | 96.7.251.153 170 | 151.101.42.133 171 | 64.30.230.22 172 | 52.70.125.241 173 | 72.246.150.96 174 | 35.167.81.8 175 | 35.190.6.71 176 | 66.235.147.240 177 | 110.164.11.73 178 | 34.238.230.136 179 | 35.227.247.27 180 | 52.72.245.47 181 | 3.209.173.185 182 | 52.205.144.67 183 | 96.7.251.219 184 | 110.164.253.163 185 | 130.248.144.18 186 | 54.81.50.174 187 | 110.164.2.17 188 | 110.164.2.26 189 | 23.35.111.138 190 | 151.101.190.133 191 | 110.164.11.107 192 | 61.213.168.32 193 | 34.235.90.59 194 | 34.227.167.139 195 | 23.52.73.140 196 | 110.164.17.81 197 | 23.45.232.40 198 | 66.235.147.237 199 | 110.164.11.75 200 | 72.246.190.67 201 | 203.156.125.73 202 | 23.32.3.251 203 | 172.232.11.163 204 | 23.223.198.75 205 | 72.246.190.42 206 | 110.164.17.90 207 | 23.52.171.147 208 | 110.164.17.88 209 | -------------------------------------------------------------------------------- /Chk_ADNS.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | #################################################################################################### 3 | # Written By: Xentrk 4 | # Name: x3mtek_Chk_ADNS.sh 5 | # Version 1.3 6 | # 7 | # Description: 8 | # Display WAN and OpenVPN Interfaces and their connectivity status. In addition, the script will check if the # router uses the ad blocking software called Diversion. If Diversion is installed, the script will examine the # Accept DNS Configuration OpenVPN client setting for active OpenVPN clients. 9 | # 10 | # If Accept DNS Exclusive is set to Exlusive and Redirect Internet Traffic is set to Policy Rules or Policy 11 | # Rules (Strict), instruct the user that Diversion will not work over the VPN tunnel and provide instructions 12 | # for the work-around solution. 13 | # 14 | #################################################################################################### 15 | # Uncomment the line below for debugging 16 | #set -x 17 | 18 | COLOR_RED='\033[0;31m' 19 | COLOR_WHITE='\033[0m' 20 | COLOR_GREEN='\e[0;32m' 21 | 22 | listifaces () { 23 | # Process OpenVPN Client 1 Information 24 | OVPNC1_ADDR=$(nvram get vpn_client1_addr) 25 | OVPNC1_DESC=$(nvram get vpn_client1_desc) 26 | OVPNC1_STATE=$(nvram get vpn_client1_state) 27 | case "$OVPNC1_STATE" in 28 | 0) OVPNC1_STATE_DESC="Stopped" ;; 29 | 1) OVPNC1_STATE_DESC="Connecting..." ;; 30 | 2) OVPNC1_STATE_DESC="Connected" ;; 31 | *) OVPNC1_STATE_DESC="Unknown State" ;; 32 | esac 33 | OVPNNC1_DNS_CONFIG=$(nvram get vpn_client1_adns) 34 | case "$OVPNNC1_DNS_CONFIG" in 35 | 0) OVPNC1_DNS_CONFIG_DESC="Disabled" ;; 36 | 1) OVPNC1_DNS_CONFIG_DESC="Relaxed" ;; 37 | 2) OVPNC1_DNS_CONFIG_DESC="Strict" ;; 38 | 3) OVPNC1_DNS_CONFIG_DESC="Exclusive" ;; 39 | esac 40 | 41 | # Process OpenVPN Client 2 Information 42 | OVPNC2_ADDR=$(nvram get vpn_client2_addr) 43 | OVPNC2_DESC=$(nvram get vpn_client2_desc) 44 | OVPNC2_STATE=$(nvram get vpn_client2_state) 45 | 46 | case "$OVPNC2_STATE" in 47 | 0) OVPNC2_STATE_DESC="Stopped" ;; 48 | 1) OVPNC2_STATE_DESC="Connecting..." ;; 49 | 2) OVPNC2_STATE_DESC="Connected" ;; 50 | *) OVPNC2_STATE_DESC="Unknown State" ;; 51 | esac 52 | OVPNNC2_DNS_CONFIG=$(nvram get vpn_client2_adns) 53 | case "$OVPNNC2_DNS_CONFIG" in 54 | 0) OVPNC2_DNS_CONFIG_DESC="Disabled" ;; 55 | 1) OVPNC2_DNS_CONFIG_DESC="Relaxed" ;; 56 | 2) OVPNC2_DNS_CONFIG_DESC="Strict" ;; 57 | 3) OVPNC2_DNS_CONFIG_DESC="Exclusive" ;; 58 | esac 59 | 60 | # Process OpenVPN Client 3 Information 61 | OVPNC3_ADDR=$(nvram get vpn_client3_addr) 62 | OVPNC3_DESC=$(nvram get vpn_client3_desc) 63 | OVPNC3_STATE=$(nvram get vpn_client3_state) 64 | 65 | case "$OVPNC3_STATE" in 66 | 0) OVPNC3_STATE_DESC="Stopped" ;; 67 | 1) OVPNC3_STATE_DESC="Connecting..." ;; 68 | 2) OVPNC3_STATE_DESC="Connected" ;; 69 | *) OVPNC3_STATE_DESC="Unknown State" ;; 70 | esac 71 | OVPNNC3_DNS_CONFIG=$(nvram get vpn_client3_adns) 72 | case "$OVPNNC3_DNS_CONFIG" in 73 | 0) OVPNC3_DNS_CONFIG_DESC="Disabled" ;; 74 | 1) OVPNC3_DNS_CONFIG_DESC="Relaxed" ;; 75 | 2) OVPNC3_DNS_CONFIG_DESC="Strict" ;; 76 | 3) OVPNC3_DNS_CONFIG_DESC="Exclusive" ;; 77 | esac 78 | 79 | # Process OpenVPN Client 4 Information 80 | OVPNC4_ADDR=$(nvram get vpn_client4_addr) 81 | OVPNC4_DESC=$(nvram get vpn_client4_desc) 82 | OVPNC4_STATE=$(nvram get vpn_client4_state) 83 | case "$(nvram get vpn_client4_state)" in 84 | 0) OVPNC4_STATE_DESC="Stopped" ;; 85 | 1) OVPNC4_STATE_DESC="Connecting..." ;; 86 | 2) OVPNC4_STATE_DESC="Connected" ;; 87 | *) OVPNC4_STATE_DESC="Unknown State" ;; 88 | esac 89 | OVPNNC4_DNS_CONFIG=$(nvram get vpn_client4_adns) 90 | case "$OVPNNC4_DNS_CONFIG" in 91 | 0) OVPNC4_DNS_CONFIG_DESC="Disabled" ;; 92 | 1) OVPNC4_DNS_CONFIG_DESC="Relaxed" ;; 93 | 2) OVPNC4_DNS_CONFIG_DESC="Strict" ;; 94 | 3) OVPNC4_DNS_CONFIG_DESC="Exclusive" ;; 95 | esac 96 | 97 | # Process OpenVPN Client 5 Information 98 | OVPNC5_ADDR=$(nvram get vpn_client5_addr) 99 | OVPNC5_DESC=$(nvram get vpn_client5_desc) 100 | OVPNC5_STATE=$(nvram get vpn_client5_state) 101 | case "$(nvram get vpn_client5_state)" in 102 | 0) OVPNC5_STATE_DESC="Stopped" ;; 103 | 1) OVPNC5_STATE_DESC="Connecting..." ;; 104 | 2) OVPNC5_STATE_DESC="Connected" ;; 105 | *) OVPNC5_STATE_DESC="Unknown State" ;; 106 | esac 107 | OVPNNC5_DNS_CONFIG=$(nvram get vpn_client5_adns) 108 | case "$OVPNNC5_DNS_CONFIG" in 109 | 0) OVPNC5_DNS_CONFIG_DESC="Disabled" ;; 110 | 1) OVPNC5_DNS_CONFIG_DESC="Relaxed" ;; 111 | 2) OVPNC5_DNS_CONFIG_DESC="Strict" ;; 112 | 3) OVPNC5_DNS_CONFIG_DESC="Exclusive" ;; 113 | esac 114 | 115 | # WAN Interface Information 116 | WAN_IP=$(nvram get wan0_ipaddr) 117 | WAN_GW_IFNAME=$(nvram get wan0_gw_ifname) 118 | WAN_IFNAME=$(nvram get wan0_ifname) 119 | case "$(nvram get wan0_state_t)" in 120 | 0) WAN0_STATE_DESC="Stopped" ;; 121 | 1) WAN0_STATE_DESC="Connecting..." ;; 122 | 2) WAN0_STATE_DESC="Connected" ;; 123 | *) WAN0_STATE_DESC="Unknown State" ;; 124 | esac 125 | case "$(nvram get wan1_state_t)" in 126 | 0) WAN1_STATE_DESC="Stopped" ;; 127 | 1) WAN1_STATE_DESC="Connecting..." ;; 128 | 2) WAN1_STATE_DESC="Connected" ;; 129 | 4) WAN1_STATE_DESC="Unknown State" ;; 130 | esac 131 | 132 | 133 | printf '\n' 134 | printf '********************************************************************************************\n' 135 | printf '* WAN Interfaces *\n' 136 | printf '********************************************************************************************\n' 137 | printf '%-6s %-13s %-15s %-4s %-6s\n' "WAN IF " "Status" "Address" "GW" "IFNAME" 138 | printf '%-6s %-13s %-15s %-4s %-6s\n' "------ " "-------------" "---------------" "----" "------" 139 | printf '%-6s %-13s %-15s %-4s %-6s\n' "WAN0: " "$WAN0_STATE_DESC" "$(nvram get wan0_ipaddr)" "$(nvram get wan0_gw_ifname)" "$(nvram get wan0_ifname)" 140 | printf '%-6s %-13s %-15s %-4s %-6s\n' "WAN1: " "$WAN1_STATE_DESC" "$(nvram get wan1_ipaddr)" "$(nvram get wan1_gw_ifname)" "$(nvram get wan1_ifname)" 141 | printf '\n' 142 | printf '********************************************************************************************\n' 143 | printf '* VPN Interfaces *\n' 144 | printf '********************************************************************************************\n' 145 | printf '%+89s\n' "Accept" 146 | printf '%+86s\n' "DNS" 147 | printf '%-7s %-13s %-35s %-24s %-13s\n' "Client" "Status" "Address" "Description" "Configuration" 148 | printf '%-7s %-13s %-35s %-24s %-13s\n' "-------" "-------------" "-----------------------------------" "------------------------" "-------------" 149 | printf '%-7s %-13s %-35s %-24s %-13s\n' "OVPNC1:" "$OVPNC1_STATE_DESC" "$OVPNC1_ADDR" "$OVPNC1_DESC" "$OVPNC1_DNS_CONFIG_DESC" 150 | printf '%-7s %-13s %-35s %-24s %-13s\n' "OVPNC2:" "$OVPNC2_STATE_DESC" "$OVPNC2_ADDR" "$OVPNC2_DESC" "$OVPNC2_DNS_CONFIG_DESC" 151 | printf '%-7s %-13s %-35s %-24s %-13s\n' "OVPNC3:" "$OVPNC3_STATE_DESC" "$OVPNC3_ADDR" "$OVPNC3_DESC" "$OVPNC3_DNS_CONFIG_DESC" 152 | printf '%-7s %-13s %-35s %-24s %-13s\n' "OVPNC4:" "$OVPNC4_STATE_DESC" "$OVPNC4_ADDR" "$OVPNC4_DESC" "$OVPNC4_DNS_CONFIG_DESC" 153 | printf '%-7s %-13s %-35s %-24s %-13s\n' "OVPNC5:" "$OVPNC5_STATE_DESC" "$OVPNC5_ADDR" "$OVPNC5_DESC" "$OVPNC5_DNS_CONFIG_DESC" 154 | printf '\n' 155 | } 156 | listifaces 157 | 158 | if [ -d "/opt/share/diversion" ]; then 159 | printf 'Diversion installation detected\n' 160 | printf 'Checking for potential conflicts with active OpenVPN Clients\n' 161 | printf '\n' 162 | 163 | # For clients that are in a connected state, see if ADNS=3 (Exclusive) 164 | # If Accept DNS Cofiguration = "Exclusive", give warning message about DNSMASQ 165 | # being bypassed which prevents Diversion from working 166 | 167 | for OPENVPN_CLIENT in 1 2 3 4 5 168 | do 169 | if [ "$(nvram get vpn_client${OPENVPN_CLIENT}_state)" -ne "2" ]; then 170 | printf 'OpenVPN Client %s is not in a connected state. Skipping check for OpenVPN Client %s\n\n' "$OPENVPN_CLIENT" "$OPENVPN_CLIENT" 171 | elif [ "$(nvram get vpn_client${OPENVPN_CLIENT}_state)" -eq "2" ] && [ "$(nvram get vpn_client${OPENVPN_CLIENT}_adns)" -eq "3" ] && [ "$(nvram get vpn_client${OPENVPN_CLIENT}_rgw)" -eq "3" ] || [ "$(nvram get vpn_client${OPENVPN_CLIENT}_rgw)" -eq "4" ]; then 172 | printf 'Warning! Potential configuration conflict found with OpenVPN Client %s\n\n' "$OPENVPN_CLIENT" 173 | printf '%bAccept DNS Configuration%b setting is set to %bExclusive%b\n' "$COLOR_GREEN" "$COLOR_WHITE" "$COLOR_GREEN" "$COLOR_WHITE" 174 | printf 'When %bAccept DNS Configuration%b is set to %bExclusive%b and %bRedirect Internet Traffic%b is set to\n%bPolicy Rules%b or %bPolicy Rules (Strict)%b DNSMASQ is bypassed which will prevent Diversion from working\n' "$COLOR_GREEN" "$COLOR_WHITE" "$COLOR_GREEN" "$COLOR_WHITE" "$COLOR_GREEN" "$COLOR_WHITE" "$COLOR_GREEN" "$COLOR_WHITE" "$COLOR_GREEN" "$COLOR_WHITE" 175 | printf '\n' 176 | printf 'The work-around solution is to set %bAccept DNS Configuration%b to %bStrict%b AND\n' "$COLOR_GREEN" "$COLOR_WHITE" "$COLOR_GREEN" "$COLOR_WHITE" 177 | printf 'in the %bCustom Config Section%b add the entry: %bdhcp-option DNS dns.server.ip.address%b\n' "$COLOR_GREEN" "$COLOR_WHITE" "$COLOR_GREEN" "$COLOR_WHITE" 178 | printf 'where %bdns.server.ip.address%b is a DNS server of your choice\n' "$COLOR_GREEN" "$COLOR_WHITE" 179 | printf 'e.g. dhcp-option DNS 9.9.9.9\n' 180 | printf 'This will result in DNS leaking. But it will allow Diversion to work over the VPN tunnel\n' 181 | printf 'To learn more about the issue, see\n' 182 | printf '%bhttps://x3mtek.com/torguard-openvpn-2-4-client-setup-for-asuswrt-merlin-firmware/%b\n' "$COLOR_GREEN" "$COLOR_WHITE" 183 | printf 'and navigate to the section %bDNSmasq and OpenVPN DNS%b\n\n' "$COLOR_GREEN" "$COLOR_WHITE" 184 | else 185 | printf 'Good news! No configuration conflicts found with OpenVPN Client %s\n\n' "$OPENVPN_CLIENT" 186 | fi 187 | done 188 | fi 189 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Xentrk 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /NETFLIX-DNS: -------------------------------------------------------------------------------- 1 | create NETFLIX-DNS hash:net family inet hashsize 1024 maxelem 65536 2 | add NETFLIX-DNS 54.213.122.159 3 | add NETFLIX-DNS 52.216.20.40 4 | add NETFLIX-DNS 52.39.9.167 5 | add NETFLIX-DNS 52.216.132.43 6 | add NETFLIX-DNS 52.10.200.73 7 | add NETFLIX-DNS 54.71.172.181 8 | add NETFLIX-DNS 34.213.58.255 9 | add NETFLIX-DNS 54.218.9.201 10 | add NETFLIX-DNS 54.187.254.209 11 | add NETFLIX-DNS 54.69.212.227 12 | add NETFLIX-DNS 52.24.197.182 13 | add NETFLIX-DNS 52.34.255.169 14 | add NETFLIX-DNS 34.218.157.194 15 | add NETFLIX-DNS 34.230.237.199 16 | add NETFLIX-DNS 52.217.84.140 17 | add NETFLIX-DNS 52.26.211.209 18 | add NETFLIX-DNS 52.216.228.176 19 | add NETFLIX-DNS 52.216.161.3 20 | add NETFLIX-DNS 52.88.19.204 21 | add NETFLIX-DNS 34.205.222.36 22 | add NETFLIX-DNS 54.191.122.172 23 | add NETFLIX-DNS 52.216.171.51 24 | add NETFLIX-DNS 3.223.183.105 25 | add NETFLIX-DNS 52.33.132.171 26 | add NETFLIX-DNS 54.85.66.204 27 | add NETFLIX-DNS 52.43.89.151 28 | add NETFLIX-DNS 52.22.199.217 29 | add NETFLIX-DNS 52.216.240.36 30 | add NETFLIX-DNS 52.35.60.64 31 | add NETFLIX-DNS 13.224.153.81 32 | add NETFLIX-DNS 52.218.205.1 33 | add NETFLIX-DNS 54.187.50.141 34 | add NETFLIX-DNS 52.216.136.156 35 | add NETFLIX-DNS 52.216.25.222 36 | add NETFLIX-DNS 54.164.49.61 37 | add NETFLIX-DNS 34.210.212.224 38 | add NETFLIX-DNS 13.33.199.80 39 | add NETFLIX-DNS 34.234.6.183 40 | add NETFLIX-DNS 54.186.29.213 41 | add NETFLIX-DNS 52.43.242.246 42 | add NETFLIX-DNS 52.43.225.255 43 | add NETFLIX-DNS 52.70.52.166 44 | add NETFLIX-DNS 52.216.114.204 45 | add NETFLIX-DNS 54.213.36.201 46 | add NETFLIX-DNS 52.41.217.163 47 | add NETFLIX-DNS 52.3.143.94 48 | add NETFLIX-DNS 52.217.37.12 49 | add NETFLIX-DNS 52.86.25.111 50 | add NETFLIX-DNS 54.236.212.10 51 | add NETFLIX-DNS 52.216.164.235 52 | add NETFLIX-DNS 54.68.31.82 53 | add NETFLIX-DNS 52.206.59.116 54 | add NETFLIX-DNS 52.20.179.126 55 | add NETFLIX-DNS 52.32.129.39 56 | add NETFLIX-DNS 52.218.193.121 57 | add NETFLIX-DNS 52.10.138.251 58 | add NETFLIX-DNS 52.216.100.91 59 | add NETFLIX-DNS 52.7.221.212 60 | add NETFLIX-DNS 52.3.121.27 61 | add NETFLIX-DNS 34.192.203.167 62 | add NETFLIX-DNS 52.10.234.17 63 | add NETFLIX-DNS 54.148.251.242 64 | add NETFLIX-DNS 54.209.38.126 65 | add NETFLIX-DNS 34.235.98.12 66 | add NETFLIX-DNS 35.165.189.126 67 | add NETFLIX-DNS 52.217.41.44 68 | add NETFLIX-DNS 52.38.170.55 69 | add NETFLIX-DNS 52.72.221.179 70 | add NETFLIX-DNS 52.218.197.9 71 | add NETFLIX-DNS 54.165.182.1 72 | add NETFLIX-DNS 34.208.131.21 73 | add NETFLIX-DNS 52.72.148.2 74 | add NETFLIX-DNS 52.216.140.36 75 | add NETFLIX-DNS 52.216.17.40 76 | add NETFLIX-DNS 54.191.98.7 77 | add NETFLIX-DNS 54.148.219.168 78 | add NETFLIX-DNS 52.216.30.140 79 | add NETFLIX-DNS 52.42.108.224 80 | add NETFLIX-DNS 54.186.194.37 81 | add NETFLIX-DNS 34.200.107.186 82 | add NETFLIX-DNS 52.216.133.59 83 | add NETFLIX-DNS 52.24.44.164 84 | add NETFLIX-DNS 54.213.155.94 85 | add NETFLIX-DNS 52.39.226.227 86 | add NETFLIX-DNS 54.186.139.93 87 | add NETFLIX-DNS 52.216.26.244 88 | add NETFLIX-DNS 52.216.107.4 89 | add NETFLIX-DNS 34.202.90.25 90 | add NETFLIX-DNS 54.245.71.217 91 | add NETFLIX-DNS 52.41.140.170 92 | add NETFLIX-DNS 54.71.37.129 93 | add NETFLIX-DNS 52.217.97.76 94 | add NETFLIX-DNS 54.172.246.68 95 | add NETFLIX-DNS 52.216.115.19 96 | add NETFLIX-DNS 52.216.200.235 97 | add NETFLIX-DNS 52.34.216.216 98 | add NETFLIX-DNS 52.35.64.215 99 | add NETFLIX-DNS 34.210.174.62 100 | add NETFLIX-DNS 45.57.40.1 101 | add NETFLIX-DNS 54.148.101.78 102 | add NETFLIX-DNS 52.216.229.51 103 | add NETFLIX-DNS 34.214.18.114 104 | add NETFLIX-DNS 54.191.204.31 105 | add NETFLIX-DNS 52.10.193.62 106 | add NETFLIX-DNS 52.216.112.3 107 | add NETFLIX-DNS 52.21.167.43 108 | add NETFLIX-DNS 52.216.129.75 109 | add NETFLIX-DNS 52.21.158.86 110 | add NETFLIX-DNS 52.216.128.27 111 | add NETFLIX-DNS 99.84.238.92 112 | add NETFLIX-DNS 35.167.224.219 113 | add NETFLIX-DNS 54.69.96.208 114 | add NETFLIX-DNS 52.216.184.187 115 | add NETFLIX-DNS 52.216.179.19 116 | add NETFLIX-DNS 54.88.253.197 117 | add NETFLIX-DNS 52.25.29.244 118 | add NETFLIX-DNS 35.163.126.206 119 | add NETFLIX-DNS 54.68.212.25 120 | add NETFLIX-DNS 52.218.216.105 121 | add NETFLIX-DNS 52.217.16.188 122 | add NETFLIX-DNS 35.163.17.237 123 | add NETFLIX-DNS 52.216.132.27 124 | add NETFLIX-DNS 52.10.204.224 125 | add NETFLIX-DNS 52.200.140.10 126 | add NETFLIX-DNS 34.213.139.185 127 | add NETFLIX-DNS 34.214.165.21 128 | add NETFLIX-DNS 34.230.143.250 129 | add NETFLIX-DNS 34.213.64.90 130 | add NETFLIX-DNS 18.141.104.90 131 | add NETFLIX-DNS 52.216.97.51 132 | add NETFLIX-DNS 54.165.212.32 133 | add NETFLIX-DNS 52.88.92.159 134 | add NETFLIX-DNS 52.200.19.0 135 | add NETFLIX-DNS 35.160.198.8 136 | add NETFLIX-DNS 52.216.128.99 137 | add NETFLIX-DNS 3.216.131.38 138 | add NETFLIX-DNS 54.68.132.98 139 | add NETFLIX-DNS 35.164.73.193 140 | add NETFLIX-DNS 52.0.24.7 141 | add NETFLIX-DNS 52.216.142.164 142 | add NETFLIX-DNS 52.217.64.28 143 | add NETFLIX-DNS 52.88.196.140 144 | add NETFLIX-DNS 34.236.223.24 145 | add NETFLIX-DNS 52.217.46.68 146 | add NETFLIX-DNS 54.191.76.69 147 | add NETFLIX-DNS 52.89.233.127 148 | add NETFLIX-DNS 34.238.64.24 149 | add NETFLIX-DNS 35.163.51.22 150 | add NETFLIX-DNS 52.43.20.204 151 | add NETFLIX-DNS 52.8.226.55 152 | add NETFLIX-DNS 52.34.171.115 153 | add NETFLIX-DNS 13.226.214.16 154 | add NETFLIX-DNS 52.27.4.198 155 | add NETFLIX-DNS 52.206.56.198 156 | add NETFLIX-DNS 52.44.33.36 157 | add NETFLIX-DNS 52.216.81.177 158 | add NETFLIX-DNS 52.42.223.113 159 | add NETFLIX-DNS 35.155.29.180 160 | add NETFLIX-DNS 52.216.177.139 161 | add NETFLIX-DNS 35.161.215.164 162 | add NETFLIX-DNS 52.43.207.20 163 | add NETFLIX-DNS 52.217.19.44 164 | add NETFLIX-DNS 52.42.147.178 165 | add NETFLIX-DNS 54.186.227.38 166 | add NETFLIX-DNS 52.5.61.180 167 | add NETFLIX-DNS 52.217.85.172 168 | add NETFLIX-DNS 35.162.10.179 169 | add NETFLIX-DNS 52.32.118.157 170 | add NETFLIX-DNS 34.215.160.161 171 | add NETFLIX-DNS 52.26.234.70 172 | add NETFLIX-DNS 54.71.115.204 173 | add NETFLIX-DNS 35.161.112.54 174 | add NETFLIX-DNS 52.205.160.89 175 | add NETFLIX-DNS 52.216.178.203 176 | add NETFLIX-DNS 35.169.138.52 177 | add NETFLIX-DNS 54.208.220.178 178 | add NETFLIX-DNS 34.214.192.216 179 | add NETFLIX-DNS 3.94.140.191 180 | add NETFLIX-DNS 52.216.138.243 181 | add NETFLIX-DNS 34.210.122.29 182 | add NETFLIX-DNS 52.76.151.106 183 | add NETFLIX-DNS 52.20.91.56 184 | add NETFLIX-DNS 52.218.197.128 185 | add NETFLIX-DNS 34.233.176.133 186 | add NETFLIX-DNS 52.27.244.189 187 | add NETFLIX-DNS 52.27.112.82 188 | add NETFLIX-DNS 52.25.99.95 189 | add NETFLIX-DNS 52.44.107.86 190 | add NETFLIX-DNS 52.216.142.220 191 | add NETFLIX-DNS 52.216.226.96 192 | add NETFLIX-DNS 13.226.210.93 193 | add NETFLIX-DNS 35.160.175.215 194 | add NETFLIX-DNS 52.20.88.195 195 | add NETFLIX-DNS 54.213.161.16 196 | add NETFLIX-DNS 52.70.208.199 197 | add NETFLIX-DNS 35.172.93.4 198 | add NETFLIX-DNS 52.11.95.0 199 | add NETFLIX-DNS 99.86.181.10 200 | add NETFLIX-DNS 52.3.66.78 201 | add NETFLIX-DNS 34.196.193.116 202 | add NETFLIX-DNS 52.25.64.107 203 | add NETFLIX-DNS 54.218.39.121 204 | add NETFLIX-DNS 52.217.14.4 205 | add NETFLIX-DNS 52.216.0.248 206 | add NETFLIX-DNS 34.194.12.130 207 | add NETFLIX-DNS 52.217.43.140 208 | add NETFLIX-DNS 52.216.165.59 209 | add NETFLIX-DNS 54.69.35.21 210 | add NETFLIX-DNS 52.22.151.103 211 | add NETFLIX-DNS 52.218.235.25 212 | add NETFLIX-DNS 54.152.52.119 213 | add NETFLIX-DNS 23.223.57.225 214 | add NETFLIX-DNS 34.215.74.98 215 | add NETFLIX-DNS 54.148.233.120 216 | add NETFLIX-DNS 34.236.209.183 217 | add NETFLIX-DNS 52.217.65.20 218 | add NETFLIX-DNS 13.226.217.110 219 | add NETFLIX-DNS 52.43.16.133 220 | add NETFLIX-DNS 34.215.34.17 221 | add NETFLIX-DNS 54.236.87.27 222 | add NETFLIX-DNS 35.174.67.140 223 | add NETFLIX-DNS 52.40.223.95 224 | add NETFLIX-DNS 34.216.165.62 225 | add NETFLIX-DNS 34.232.33.212 226 | add NETFLIX-DNS 52.216.164.5 227 | add NETFLIX-DNS 34.214.151.32 228 | add NETFLIX-DNS 52.32.224.35 229 | add NETFLIX-DNS 34.210.143.255 230 | add NETFLIX-DNS 52.72.253.233 231 | add NETFLIX-DNS 52.216.109.131 232 | add NETFLIX-DNS 52.218.224.25 233 | add NETFLIX-DNS 52.216.246.4 234 | add NETFLIX-DNS 34.233.61.204 235 | add NETFLIX-DNS 34.213.95.111 236 | add NETFLIX-DNS 52.200.173.10 237 | add NETFLIX-DNS 107.23.108.111 238 | add NETFLIX-DNS 13.225.143.13 239 | add NETFLIX-DNS 34.213.120.92 240 | add NETFLIX-DNS 52.216.239.163 241 | add NETFLIX-DNS 52.42.160.86 242 | add NETFLIX-DNS 54.202.108.103 243 | add NETFLIX-DNS 52.1.253.103 244 | add NETFLIX-DNS 54.187.50.110 245 | add NETFLIX-DNS 52.20.113.99 246 | add NETFLIX-DNS 52.217.10.36 247 | add NETFLIX-DNS 52.10.57.27 248 | add NETFLIX-DNS 54.70.233.123 249 | add NETFLIX-DNS 52.23.2.94 250 | add NETFLIX-DNS 52.20.63.239 251 | add NETFLIX-DNS 34.211.88.57 252 | add NETFLIX-DNS 52.216.248.92 253 | add NETFLIX-DNS 54.244.143.13 254 | add NETFLIX-DNS 52.216.76.244 255 | add NETFLIX-DNS 34.196.1.65 256 | add NETFLIX-DNS 52.216.177.181 257 | add NETFLIX-DNS 52.216.9.75 258 | add NETFLIX-DNS 54.190.193.129 259 | add NETFLIX-DNS 52.207.200.47 260 | add NETFLIX-DNS 52.217.38.157 261 | add NETFLIX-DNS 54.148.232.85 262 | add NETFLIX-DNS 34.218.35.153 263 | add NETFLIX-DNS 172.232.15.147 264 | add NETFLIX-DNS 52.26.6.42 265 | add NETFLIX-DNS 52.43.37.126 266 | add NETFLIX-DNS 52.33.246.232 267 | add NETFLIX-DNS 54.149.6.234 268 | add NETFLIX-DNS 52.218.228.129 269 | add NETFLIX-DNS 34.206.92.36 270 | add NETFLIX-DNS 52.216.77.84 271 | add NETFLIX-DNS 52.24.179.146 272 | add NETFLIX-DNS 52.216.93.67 273 | add NETFLIX-DNS 52.216.242.60 274 | add NETFLIX-DNS 3.231.239.138 275 | add NETFLIX-DNS 52.216.133.91 276 | add NETFLIX-DNS 54.83.184.212 277 | add NETFLIX-DNS 34.206.232.111 278 | add NETFLIX-DNS 35.164.244.233 279 | add NETFLIX-DNS 52.0.140.227 280 | add NETFLIX-DNS 52.216.110.235 281 | add NETFLIX-DNS 52.216.77.108 282 | add NETFLIX-DNS 52.25.175.217 283 | add NETFLIX-DNS 52.42.239.65 284 | add NETFLIX-DNS 35.165.152.221 285 | add NETFLIX-DNS 50.112.224.176 286 | add NETFLIX-DNS 52.37.113.89 287 | add NETFLIX-DNS 52.6.127.5 288 | add NETFLIX-DNS 52.216.136.141 289 | add NETFLIX-DNS 35.161.222.69 290 | add NETFLIX-DNS 52.5.185.3 291 | add NETFLIX-DNS 52.217.100.116 292 | add NETFLIX-DNS 52.216.141.236 293 | add NETFLIX-DNS 198.38.112.188 294 | add NETFLIX-DNS 52.218.201.73 295 | add NETFLIX-DNS 34.232.225.126 296 | add NETFLIX-DNS 54.212.49.94 297 | add NETFLIX-DNS 54.148.207.23 298 | add NETFLIX-DNS 52.217.33.220 299 | add NETFLIX-DNS 34.218.160.45 300 | add NETFLIX-DNS 52.2.183.213 301 | add NETFLIX-DNS 54.148.125.37 302 | add NETFLIX-DNS 52.55.13.122 303 | add NETFLIX-DNS 52.34.216.22 304 | add NETFLIX-DNS 52.216.26.12 305 | add NETFLIX-DNS 52.216.179.27 306 | add NETFLIX-DNS 54.208.30.245 307 | add NETFLIX-DNS 34.208.145.26 308 | add NETFLIX-DNS 35.160.85.191 309 | add NETFLIX-DNS 52.217.42.156 310 | add NETFLIX-DNS 34.237.57.210 311 | add NETFLIX-DNS 54.236.83.103 312 | add NETFLIX-DNS 54.164.224.30 313 | add NETFLIX-DNS 52.218.224.193 314 | add NETFLIX-DNS 35.166.227.43 315 | add NETFLIX-DNS 52.217.36.148 316 | add NETFLIX-DNS 45.57.41.1 317 | add NETFLIX-DNS 52.216.168.243 318 | add NETFLIX-DNS 52.33.72.208 319 | add NETFLIX-DNS 52.216.227.144 320 | add NETFLIX-DNS 35.161.79.97 321 | add NETFLIX-DNS 3.81.178.3 322 | add NETFLIX-DNS 34.215.122.171 323 | add NETFLIX-DNS 52.37.255.137 324 | add NETFLIX-DNS 99.86.181.61 325 | add NETFLIX-DNS 34.237.20.184 326 | add NETFLIX-DNS 3.215.227.228 327 | add NETFLIX-DNS 34.209.77.158 328 | add NETFLIX-DNS 54.186.109.108 329 | add NETFLIX-DNS 52.202.126.50 330 | add NETFLIX-DNS 52.40.176.96 331 | add NETFLIX-DNS 54.69.137.244 332 | add NETFLIX-DNS 52.217.1.108 333 | add NETFLIX-DNS 52.217.10.132 334 | add NETFLIX-DNS 54.213.169.141 335 | add NETFLIX-DNS 34.223.210.244 336 | add NETFLIX-DNS 52.217.12.244 337 | add NETFLIX-DNS 52.22.114.235 338 | add NETFLIX-DNS 52.34.124.138 339 | add NETFLIX-DNS 3.224.242.122 340 | add NETFLIX-DNS 52.216.206.67 341 | add NETFLIX-DNS 54.210.219.57 342 | add NETFLIX-DNS 52.217.32.100 343 | add NETFLIX-DNS 54.149.144.131 344 | add NETFLIX-DNS 44.232.10.224 345 | add NETFLIX-DNS 34.208.172.127 346 | add NETFLIX-DNS 35.163.13.81 347 | add NETFLIX-DNS 34.215.88.180 348 | add NETFLIX-DNS 52.216.112.35 349 | add NETFLIX-DNS 52.33.193.39 350 | add NETFLIX-DNS 52.217.41.124 351 | add NETFLIX-DNS 52.45.39.225 352 | add NETFLIX-DNS 34.210.203.188 353 | add NETFLIX-DNS 52.216.100.67 354 | add NETFLIX-DNS 52.216.230.163 355 | add NETFLIX-DNS 52.216.130.67 356 | add NETFLIX-DNS 52.201.141.197 357 | add NETFLIX-DNS 52.25.220.101 358 | add NETFLIX-DNS 52.42.194.172 359 | add NETFLIX-DNS 52.216.102.75 360 | add NETFLIX-DNS 34.198.7.0 361 | add NETFLIX-DNS 34.216.200.143 362 | add NETFLIX-DNS 35.163.82.195 363 | add NETFLIX-DNS 52.216.228.8 364 | add NETFLIX-DNS 54.174.73.99 365 | add NETFLIX-DNS 52.217.80.228 366 | add NETFLIX-DNS 35.165.230.101 367 | add NETFLIX-DNS 52.38.209.245 368 | add NETFLIX-DNS 35.166.131.228 369 | add NETFLIX-DNS 35.166.249.252 370 | add NETFLIX-DNS 35.162.51.5 371 | add NETFLIX-DNS 34.215.6.52 372 | add NETFLIX-DNS 34.214.244.41 373 | add NETFLIX-DNS 50.19.205.119 374 | add NETFLIX-DNS 52.42.187.169 375 | add NETFLIX-DNS 52.35.55.104 376 | add NETFLIX-DNS 52.216.110.139 377 | add NETFLIX-DNS 54.80.210.169 378 | add NETFLIX-DNS 198.38.112.186 379 | add NETFLIX-DNS 34.211.93.112 380 | add NETFLIX-DNS 52.205.198.186 381 | add NETFLIX-DNS 52.216.144.67 382 | add NETFLIX-DNS 54.209.130.98 383 | add NETFLIX-DNS 3.232.230.236 384 | add NETFLIX-DNS 52.45.36.90 385 | add NETFLIX-DNS 52.207.122.21 386 | add NETFLIX-DNS 52.216.207.220 387 | add NETFLIX-DNS 52.216.243.132 388 | add NETFLIX-DNS 52.217.32.188 389 | add NETFLIX-DNS 34.215.90.195 390 | add NETFLIX-DNS 54.88.59.75 391 | add NETFLIX-DNS 52.35.248.213 392 | add NETFLIX-DNS 34.223.174.111 393 | add NETFLIX-DNS 54.200.107.199 394 | add NETFLIX-DNS 54.148.226.99 395 | add NETFLIX-DNS 52.45.169.168 396 | add NETFLIX-DNS 52.202.121.132 397 | add NETFLIX-DNS 54.68.201.173 398 | add NETFLIX-DNS 52.216.78.108 399 | add NETFLIX-DNS 52.216.77.220 400 | add NETFLIX-DNS 52.216.229.123 401 | add NETFLIX-DNS 34.205.102.167 402 | add NETFLIX-DNS 52.217.9.132 403 | add NETFLIX-DNS 18.136.88.2 404 | add NETFLIX-DNS 34.231.75.87 405 | add NETFLIX-DNS 54.175.177.212 406 | add NETFLIX-DNS 52.201.8.44 407 | add NETFLIX-DNS 52.216.165.35 408 | add NETFLIX-DNS 52.203.74.29 409 | add NETFLIX-DNS 52.33.161.173 410 | add NETFLIX-DNS 52.205.69.91 411 | add NETFLIX-DNS 54.187.195.41 412 | add NETFLIX-DNS 52.216.136.123 413 | add NETFLIX-DNS 34.235.33.151 414 | add NETFLIX-DNS 34.236.162.222 415 | add NETFLIX-DNS 54.152.88.53 416 | add NETFLIX-DNS 52.72.60.253 417 | add NETFLIX-DNS 54.148.12.134 418 | add NETFLIX-DNS 35.161.51.136 419 | add NETFLIX-DNS 52.217.14.214 420 | add NETFLIX-DNS 34.206.177.91 421 | add NETFLIX-DNS 52.216.244.100 422 | add NETFLIX-DNS 52.216.104.59 423 | add NETFLIX-DNS 52.216.249.196 424 | add NETFLIX-DNS 54.165.138.52 425 | add NETFLIX-DNS 52.217.64.181 426 | add NETFLIX-DNS 52.216.136.67 427 | add NETFLIX-DNS 54.145.137.216 428 | add NETFLIX-DNS 52.216.170.195 429 | add NETFLIX-DNS 52.201.139.15 430 | add NETFLIX-DNS 34.212.241.208 431 | add NETFLIX-DNS 52.88.80.161 432 | add NETFLIX-DNS 54.209.179.129 433 | add NETFLIX-DNS 34.233.55.129 434 | add NETFLIX-DNS 52.216.226.104 435 | add NETFLIX-DNS 52.217.43.60 436 | add NETFLIX-DNS 52.38.178.137 437 | add NETFLIX-DNS 52.13.199.4 438 | add NETFLIX-DNS 54.244.81.94 439 | add NETFLIX-DNS 52.216.128.163 440 | add NETFLIX-DNS 52.27.150.17 441 | add NETFLIX-DNS 54.174.74.109 442 | add NETFLIX-DNS 52.21.45.48 443 | add NETFLIX-DNS 52.27.184.225 444 | add NETFLIX-DNS 35.167.237.37 445 | add NETFLIX-DNS 35.160.220.137 446 | add NETFLIX-DNS 34.210.242.174 447 | add NETFLIX-DNS 54.201.104.28 448 | add NETFLIX-DNS 52.206.219.76 449 | add NETFLIX-DNS 34.208.28.151 450 | add NETFLIX-DNS 34.228.67.96 451 | add NETFLIX-DNS 52.216.186.75 452 | add NETFLIX-DNS 13.224.153.62 453 | add NETFLIX-DNS 54.84.139.205 454 | add NETFLIX-DNS 52.10.59.119 455 | add NETFLIX-DNS 52.200.129.120 456 | add NETFLIX-DNS 52.34.255.66 457 | add NETFLIX-DNS 54.191.144.103 458 | add NETFLIX-DNS 52.40.110.115 459 | add NETFLIX-DNS 54.86.221.34 460 | add NETFLIX-DNS 54.85.242.184 461 | add NETFLIX-DNS 54.84.161.196 462 | add NETFLIX-DNS 52.216.97.243 463 | add NETFLIX-DNS 52.216.162.243 464 | add NETFLIX-DNS 52.42.39.110 465 | add NETFLIX-DNS 52.218.216.217 466 | add NETFLIX-DNS 52.200.241.5 467 | add NETFLIX-DNS 34.211.165.134 468 | add NETFLIX-DNS 52.217.42.172 469 | add NETFLIX-DNS 3.220.149.193 470 | add NETFLIX-DNS 52.216.99.27 471 | add NETFLIX-DNS 52.216.30.116 472 | add NETFLIX-DNS 52.4.213.223 473 | add NETFLIX-DNS 34.210.197.86 474 | add NETFLIX-DNS 52.4.166.237 475 | add NETFLIX-DNS 3.92.109.131 476 | add NETFLIX-DNS 52.36.229.246 477 | add NETFLIX-DNS 52.217.47.148 478 | add NETFLIX-DNS 54.88.137.60 479 | add NETFLIX-DNS 52.73.251.28 480 | add NETFLIX-DNS 52.40.78.6 481 | add NETFLIX-DNS 99.86.181.67 482 | add NETFLIX-DNS 52.10.234.197 483 | add NETFLIX-DNS 35.162.4.99 484 | add NETFLIX-DNS 52.37.126.231 485 | add NETFLIX-DNS 34.233.61.4 486 | add NETFLIX-DNS 52.35.94.153 487 | add NETFLIX-DNS 52.216.19.56 488 | add NETFLIX-DNS 99.86.181.102 489 | add NETFLIX-DNS 52.217.80.220 490 | add NETFLIX-DNS 52.217.65.12 491 | add NETFLIX-DNS 50.112.37.141 492 | add NETFLIX-DNS 99.86.181.117 493 | add NETFLIX-DNS 52.217.18.124 494 | add NETFLIX-DNS 34.212.54.34 495 | add NETFLIX-DNS 52.2.18.6 496 | add NETFLIX-DNS 52.216.239.11 497 | add NETFLIX-DNS 52.200.232.25 498 | add NETFLIX-DNS 52.35.250.55 499 | add NETFLIX-DNS 54.71.62.223 500 | add NETFLIX-DNS 34.214.90.132 501 | add NETFLIX-DNS 54.219.159.71 502 | add NETFLIX-DNS 54.213.39.40 503 | add NETFLIX-DNS 52.27.127.243 504 | add NETFLIX-DNS 54.81.43.220 505 | add NETFLIX-DNS 34.199.98.223 506 | add NETFLIX-DNS 34.211.247.244 507 | add NETFLIX-DNS 34.202.133.11 508 | add NETFLIX-DNS 54.213.56.190 509 | add NETFLIX-DNS 52.218.219.9 510 | add NETFLIX-DNS 54.149.127.238 511 | add NETFLIX-DNS 52.216.240.172 512 | add NETFLIX-DNS 34.215.125.88 513 | add NETFLIX-DNS 52.216.142.20 514 | add NETFLIX-DNS 52.25.55.16 515 | add NETFLIX-DNS 52.12.20.213 516 | add NETFLIX-DNS 52.36.144.134 517 | add NETFLIX-DNS 54.200.116.48 518 | add NETFLIX-DNS 52.205.132.129 519 | add NETFLIX-DNS 34.208.97.138 520 | add NETFLIX-DNS 54.200.123.0 521 | add NETFLIX-DNS 54.165.252.77 522 | add NETFLIX-DNS 52.216.19.64 523 | add NETFLIX-DNS 34.198.120.29 524 | add NETFLIX-DNS 34.232.226.142 525 | add NETFLIX-DNS 34.192.243.11 526 | add NETFLIX-DNS 52.45.220.35 527 | add NETFLIX-DNS 52.216.184.163 528 | add NETFLIX-DNS 52.217.19.20 529 | add NETFLIX-DNS 35.164.106.194 530 | add NETFLIX-DNS 23.63.75.74 531 | add NETFLIX-DNS 54.148.79.78 532 | add NETFLIX-DNS 52.216.228.187 533 | add NETFLIX-DNS 34.210.156.241 534 | add NETFLIX-DNS 52.217.65.117 535 | add NETFLIX-DNS 52.43.119.225 536 | add NETFLIX-DNS 52.40.233.8 537 | add NETFLIX-DNS 52.217.45.148 538 | add NETFLIX-DNS 52.41.228.214 539 | add NETFLIX-DNS 54.149.106.232 540 | add NETFLIX-DNS 35.167.92.223 541 | add NETFLIX-DNS 52.218.197.81 542 | add NETFLIX-DNS 52.7.128.248 543 | add NETFLIX-DNS 34.206.28.96 544 | add NETFLIX-DNS 34.212.41.226 545 | add NETFLIX-DNS 54.209.169.201 546 | add NETFLIX-DNS 54.148.81.9 547 | add NETFLIX-DNS 54.148.235.0 548 | add NETFLIX-DNS 52.40.94.49 549 | add NETFLIX-DNS 52.35.93.213 550 | add NETFLIX-DNS 52.201.15.247 551 | add NETFLIX-DNS 13.57.111.79 552 | add NETFLIX-DNS 35.162.192.117 553 | add NETFLIX-DNS 52.39.52.106 554 | add NETFLIX-DNS 52.216.104.83 555 | add NETFLIX-DNS 52.216.130.99 556 | add NETFLIX-DNS 3.211.121.109 557 | add NETFLIX-DNS 34.237.180.64 558 | add NETFLIX-DNS 52.43.208.48 559 | add NETFLIX-DNS 34.234.112.224 560 | add NETFLIX-DNS 34.210.139.136 561 | add NETFLIX-DNS 23.223.57.224 562 | add NETFLIX-DNS 34.216.139.98 563 | add NETFLIX-DNS 52.27.176.188 564 | add NETFLIX-DNS 52.45.38.64 565 | add NETFLIX-DNS 34.212.15.3 566 | add NETFLIX-DNS 34.226.58.232 567 | add NETFLIX-DNS 54.175.138.90 568 | add NETFLIX-DNS 52.216.130.235 569 | add NETFLIX-DNS 34.209.117.160 570 | add NETFLIX-DNS 52.73.124.150 571 | add NETFLIX-DNS 52.0.179.246 572 | add NETFLIX-DNS 52.217.16.164 573 | add NETFLIX-DNS 52.206.12.195 574 | add NETFLIX-DNS 54.68.144.2 575 | add NETFLIX-DNS 52.217.40.156 576 | add NETFLIX-DNS 54.208.136.135 577 | add NETFLIX-DNS 52.34.149.162 578 | add NETFLIX-DNS 99.84.238.128 579 | add NETFLIX-DNS 35.163.206.234 580 | add NETFLIX-DNS 52.43.98.163 581 | add NETFLIX-DNS 3.91.171.150 582 | add NETFLIX-DNS 54.234.123.75 583 | add NETFLIX-DNS 52.22.101.142 584 | add NETFLIX-DNS 52.40.50.171 585 | add NETFLIX-DNS 52.206.150.244 586 | add NETFLIX-DNS 34.202.116.46 587 | add NETFLIX-DNS 54.68.77.235 588 | add NETFLIX-DNS 52.25.186.93 589 | add NETFLIX-DNS 198.38.112.185 590 | add NETFLIX-DNS 54.149.150.5 591 | add NETFLIX-DNS 52.217.46.14 592 | add NETFLIX-DNS 44.226.45.195 593 | add NETFLIX-DNS 104.123.71.252 594 | add NETFLIX-DNS 54.148.178.249 595 | add NETFLIX-DNS 52.216.233.163 596 | add NETFLIX-DNS 34.232.49.156 597 | add NETFLIX-DNS 34.217.160.207 598 | add NETFLIX-DNS 107.23.184.37 599 | add NETFLIX-DNS 34.232.35.42 600 | add NETFLIX-DNS 34.196.148.99 601 | add NETFLIX-DNS 52.205.56.162 602 | add NETFLIX-DNS 52.217.101.101 603 | add NETFLIX-DNS 34.199.142.242 604 | add NETFLIX-DNS 52.207.42.97 605 | add NETFLIX-DNS 54.203.165.82 606 | add NETFLIX-DNS 52.216.241.92 607 | add NETFLIX-DNS 34.208.5.72 608 | add NETFLIX-DNS 52.37.59.250 609 | add NETFLIX-DNS 52.216.107.36 610 | add NETFLIX-DNS 52.216.30.124 611 | add NETFLIX-DNS 54.149.71.153 612 | add NETFLIX-DNS 34.196.63.80 613 | add NETFLIX-DNS 52.36.39.216 614 | add NETFLIX-DNS 52.216.147.164 615 | add NETFLIX-DNS 45.57.90.1 616 | add NETFLIX-DNS 52.216.238.35 617 | add NETFLIX-DNS 52.73.183.179 618 | add NETFLIX-DNS 52.34.228.64 619 | add NETFLIX-DNS 52.42.153.22 620 | add NETFLIX-DNS 52.33.0.205 621 | add NETFLIX-DNS 54.189.204.162 622 | add NETFLIX-DNS 50.112.206.246 623 | add NETFLIX-DNS 52.216.138.219 624 | add NETFLIX-DNS 184.73.72.167 625 | add NETFLIX-DNS 52.10.94.10 626 | add NETFLIX-DNS 35.166.141.2 627 | add NETFLIX-DNS 34.212.65.229 628 | add NETFLIX-DNS 54.69.162.124 629 | add NETFLIX-DNS 52.216.163.3 630 | add NETFLIX-DNS 34.212.213.165 631 | add NETFLIX-DNS 34.215.6.35 632 | add NETFLIX-DNS 35.165.13.216 633 | add NETFLIX-DNS 52.216.146.19 634 | add NETFLIX-DNS 52.22.195.81 635 | add NETFLIX-DNS 52.216.93.43 636 | add NETFLIX-DNS 184.28.221.74 637 | add NETFLIX-DNS 34.218.145.16 638 | add NETFLIX-DNS 34.231.126.71 639 | add NETFLIX-DNS 34.233.10.88 640 | add NETFLIX-DNS 34.208.135.230 641 | add NETFLIX-DNS 52.216.28.156 642 | add NETFLIX-DNS 3.211.88.25 643 | add NETFLIX-DNS 35.164.121.189 644 | add NETFLIX-DNS 52.10.97.109 645 | add NETFLIX-DNS 52.24.109.147 646 | add NETFLIX-DNS 34.204.238.125 647 | add NETFLIX-DNS 35.162.111.156 648 | add NETFLIX-DNS 54.148.15.83 649 | add NETFLIX-DNS 52.217.14.196 650 | add NETFLIX-DNS 35.166.140.171 651 | add NETFLIX-DNS 52.216.110.19 652 | add NETFLIX-DNS 52.27.178.113 653 | add NETFLIX-DNS 3.92.116.203 654 | add NETFLIX-DNS 34.214.206.76 655 | add NETFLIX-DNS 99.84.238.18 656 | add NETFLIX-DNS 52.216.145.171 657 | add NETFLIX-DNS 52.218.180.73 658 | add NETFLIX-DNS 13.33.198.112 659 | add NETFLIX-DNS 54.149.218.16 660 | add NETFLIX-DNS 34.213.234.154 661 | add NETFLIX-DNS 54.192.150.22 662 | add NETFLIX-DNS 52.43.252.112 663 | add NETFLIX-DNS 54.191.198.37 664 | add NETFLIX-DNS 52.41.112.18 665 | add NETFLIX-DNS 52.216.163.83 666 | add NETFLIX-DNS 54.200.73.185 667 | add NETFLIX-DNS 34.214.252.215 668 | add NETFLIX-DNS 35.163.93.240 669 | add NETFLIX-DNS 34.209.220.251 670 | add NETFLIX-DNS 52.216.249.28 671 | add NETFLIX-DNS 35.164.118.96 672 | add NETFLIX-DNS 34.214.25.38 673 | add NETFLIX-DNS 52.217.100.124 674 | add NETFLIX-DNS 52.217.80.4 675 | add NETFLIX-DNS 52.216.140.4 676 | add NETFLIX-DNS 18.214.27.248 677 | add NETFLIX-DNS 52.216.177.203 678 | add NETFLIX-DNS 54.69.158.108 679 | add NETFLIX-DNS 52.216.229.147 680 | add NETFLIX-DNS 52.216.146.187 681 | add NETFLIX-DNS 52.217.32.132 682 | add NETFLIX-DNS 99.86.181.16 683 | add NETFLIX-DNS 52.45.72.87 684 | add NETFLIX-DNS 52.216.24.204 685 | add NETFLIX-DNS 52.217.15.172 686 | add NETFLIX-DNS 52.216.21.123 687 | add NETFLIX-DNS 52.207.57.195 688 | add NETFLIX-DNS 52.11.15.200 689 | add NETFLIX-DNS 34.218.179.120 690 | add NETFLIX-DNS 54.191.114.3 691 | add NETFLIX-DNS 52.45.46.76 692 | add NETFLIX-DNS 52.24.234.115 693 | add NETFLIX-DNS 52.216.109.3 694 | add NETFLIX-DNS 52.41.85.151 695 | add NETFLIX-DNS 13.33.198.196 696 | add NETFLIX-DNS 52.218.247.57 697 | add NETFLIX-DNS 54.231.114.203 698 | add NETFLIX-DNS 52.34.127.213 699 | add NETFLIX-DNS 3.213.95.208 700 | add NETFLIX-DNS 52.42.251.5 701 | add NETFLIX-DNS 52.89.136.203 702 | add NETFLIX-DNS 52.5.189.72 703 | add NETFLIX-DNS 52.42.72.1 704 | add NETFLIX-DNS 52.20.157.232 705 | add NETFLIX-DNS 34.237.109.106 706 | add NETFLIX-DNS 52.217.9.28 707 | add NETFLIX-DNS 34.195.73.108 708 | add NETFLIX-DNS 52.3.112.162 709 | add NETFLIX-DNS 34.214.40.179 710 | add NETFLIX-DNS 52.218.220.89 711 | add NETFLIX-DNS 54.191.9.226 712 | add NETFLIX-DNS 52.45.215.66 713 | add NETFLIX-DNS 54.149.20.41 714 | add NETFLIX-DNS 13.33.158.209 715 | add NETFLIX-DNS 52.216.160.211 716 | add NETFLIX-DNS 52.216.134.211 717 | add NETFLIX-DNS 34.212.191.115 718 | add NETFLIX-DNS 54.192.150.20 719 | add NETFLIX-DNS 34.225.73.106 720 | add NETFLIX-DNS 13.33.158.100 721 | add NETFLIX-DNS 52.216.238.147 722 | add NETFLIX-DNS 35.163.164.73 723 | add NETFLIX-DNS 52.1.167.97 724 | add NETFLIX-DNS 52.70.108.58 725 | add NETFLIX-DNS 52.216.18.128 726 | add NETFLIX-DNS 54.200.75.63 727 | add NETFLIX-DNS 18.215.18.117 728 | add NETFLIX-DNS 13.224.153.50 729 | add NETFLIX-DNS 35.160.212.44 730 | add NETFLIX-DNS 34.213.215.44 731 | add NETFLIX-DNS 52.204.213.123 732 | add NETFLIX-DNS 52.216.8.187 733 | add NETFLIX-DNS 34.208.94.25 734 | add NETFLIX-DNS 52.41.106.86 735 | add NETFLIX-DNS 52.216.86.181 736 | add NETFLIX-DNS 3.93.131.18 737 | add NETFLIX-DNS 52.7.95.81 738 | add NETFLIX-DNS 52.216.77.68 739 | add NETFLIX-DNS 52.25.130.122 740 | add NETFLIX-DNS 52.89.197.191 741 | add NETFLIX-DNS 34.199.190.21 742 | add NETFLIX-DNS 3.223.224.159 743 | add NETFLIX-DNS 34.209.74.60 744 | add NETFLIX-DNS 13.226.210.92 745 | add NETFLIX-DNS 13.226.214.64 746 | add NETFLIX-DNS 52.216.27.28 747 | add NETFLIX-DNS 13.250.164.183 748 | add NETFLIX-DNS 52.32.146.180 749 | add NETFLIX-DNS 52.217.47.70 750 | add NETFLIX-DNS 52.216.178.219 751 | add NETFLIX-DNS 54.148.208.164 752 | add NETFLIX-DNS 52.10.192.99 753 | add NETFLIX-DNS 198.38.112.187 754 | add NETFLIX-DNS 52.2.128.33 755 | add NETFLIX-DNS 34.199.77.120 756 | add NETFLIX-DNS 34.211.197.226 757 | add NETFLIX-DNS 54.70.185.157 758 | add NETFLIX-DNS 52.36.201.152 759 | add NETFLIX-DNS 52.217.11.164 760 | add NETFLIX-DNS 52.221.144.6 761 | add NETFLIX-DNS 54.186.83.81 762 | add NETFLIX-DNS 104.123.71.228 763 | add NETFLIX-DNS 52.89.89.33 764 | add NETFLIX-DNS 52.39.146.77 765 | add NETFLIX-DNS 3.208.127.47 766 | add NETFLIX-DNS 52.217.39.60 767 | add NETFLIX-DNS 35.165.211.205 768 | add NETFLIX-DNS 52.72.167.113 769 | add NETFLIX-DNS 52.1.0.95 770 | add NETFLIX-DNS 52.26.216.219 771 | add NETFLIX-DNS 52.0.209.138 772 | add NETFLIX-DNS 52.71.237.140 773 | add NETFLIX-DNS 34.215.65.170 774 | add NETFLIX-DNS 52.217.16.68 775 | add NETFLIX-DNS 54.69.177.249 776 | add NETFLIX-DNS 34.209.74.57 777 | add NETFLIX-DNS 52.35.163.79 778 | add NETFLIX-DNS 52.217.17.68 779 | add NETFLIX-DNS 52.216.131.59 780 | add NETFLIX-DNS 52.217.96.52 781 | add NETFLIX-DNS 13.226.210.16 782 | add NETFLIX-DNS 52.216.233.83 783 | add NETFLIX-DNS 34.227.204.174 784 | add NETFLIX-DNS 52.217.1.4 785 | add NETFLIX-DNS 34.211.21.201 786 | add NETFLIX-DNS 52.216.108.35 787 | add NETFLIX-DNS 34.236.115.41 788 | add NETFLIX-DNS 54.174.173.130 789 | add NETFLIX-DNS 34.212.87.58 790 | add NETFLIX-DNS 52.216.146.115 791 | add NETFLIX-DNS 52.36.165.87 792 | add NETFLIX-DNS 34.214.90.30 793 | add NETFLIX-DNS 52.45.242.247 794 | add NETFLIX-DNS 34.213.87.172 795 | add NETFLIX-DNS 52.24.76.88 796 | add NETFLIX-DNS 3.227.62.102 797 | add NETFLIX-DNS 52.72.146.254 798 | add NETFLIX-DNS 52.37.89.199 799 | add NETFLIX-DNS 52.7.76.10 800 | add NETFLIX-DNS 52.216.130.75 801 | add NETFLIX-DNS 52.26.27.5 802 | add NETFLIX-DNS 52.36.151.117 803 | add NETFLIX-DNS 52.216.128.251 804 | add NETFLIX-DNS 34.213.35.8 805 | add NETFLIX-DNS 52.11.5.199 806 | add NETFLIX-DNS 34.193.68.73 807 | add NETFLIX-DNS 34.211.85.85 808 | add NETFLIX-DNS 34.210.234.127 809 | add NETFLIX-DNS 52.217.80.116 810 | add NETFLIX-DNS 34.223.159.135 811 | add NETFLIX-DNS 34.230.169.31 812 | add NETFLIX-DNS 35.164.58.121 813 | add NETFLIX-DNS 52.39.28.68 814 | add NETFLIX-DNS 34.210.46.205 815 | add NETFLIX-DNS 52.22.192.101 816 | add NETFLIX-DNS 52.4.9.96 817 | add NETFLIX-DNS 52.216.83.64 818 | add NETFLIX-DNS 52.217.8.156 819 | add NETFLIX-DNS 54.227.200.18 820 | add NETFLIX-DNS 104.123.71.222 821 | add NETFLIX-DNS 52.33.183.30 822 | add NETFLIX-DNS 52.216.107.188 823 | add NETFLIX-DNS 35.155.98.77 824 | add NETFLIX-DNS 34.213.210.37 825 | add NETFLIX-DNS 52.218.209.169 826 | add NETFLIX-DNS 52.216.131.187 827 | add NETFLIX-DNS 34.225.96.219 828 | add NETFLIX-DNS 34.210.64.46 829 | add NETFLIX-DNS 54.186.203.141 830 | add NETFLIX-DNS 34.193.152.158 831 | add NETFLIX-DNS 54.69.24.6 832 | add NETFLIX-DNS 34.209.200.89 833 | add NETFLIX-DNS 52.217.10.60 834 | add NETFLIX-DNS 52.42.115.121 835 | add NETFLIX-DNS 52.218.216.153 836 | add NETFLIX-DNS 52.70.16.138 837 | add NETFLIX-DNS 52.27.140.32 838 | add NETFLIX-DNS 52.217.64.156 839 | add NETFLIX-DNS 52.217.82.164 840 | add NETFLIX-DNS 52.5.171.20 841 | add NETFLIX-DNS 54.68.48.136 842 | add NETFLIX-DNS 34.214.31.1 843 | add NETFLIX-DNS 52.217.4.100 844 | add NETFLIX-DNS 54.173.117.194 845 | add NETFLIX-DNS 54.68.249.237 846 | add NETFLIX-DNS 52.216.139.187 847 | add NETFLIX-DNS 54.218.114.23 848 | add NETFLIX-DNS 54.152.94.157 849 | add NETFLIX-DNS 52.218.144.33 850 | add NETFLIX-DNS 3.92.140.154 851 | add NETFLIX-DNS 54.173.39.246 852 | add NETFLIX-DNS 54.189.66.42 853 | add NETFLIX-DNS 52.216.185.163 854 | add NETFLIX-DNS 34.215.54.126 855 | add NETFLIX-DNS 52.10.173.232 856 | add NETFLIX-DNS 52.41.140.216 857 | add NETFLIX-DNS 34.236.202.175 858 | add NETFLIX-DNS 34.214.135.41 859 | add NETFLIX-DNS 52.42.49.230 860 | add NETFLIX-DNS 52.216.165.43 861 | add NETFLIX-DNS 34.226.50.151 862 | add NETFLIX-DNS 35.167.171.163 863 | add NETFLIX-DNS 52.27.63.143 864 | add NETFLIX-DNS 52.207.52.76 865 | add NETFLIX-DNS 34.236.160.128 866 | add NETFLIX-DNS 52.217.1.100 867 | add NETFLIX-DNS 52.216.111.27 868 | add NETFLIX-DNS 52.216.162.195 869 | add NETFLIX-DNS 34.230.120.150 870 | add NETFLIX-DNS 34.236.72.130 871 | add NETFLIX-DNS 34.215.0.248 872 | add NETFLIX-DNS 52.4.74.111 873 | add NETFLIX-DNS 45.57.91.1 874 | add NETFLIX-DNS 34.212.214.240 875 | add NETFLIX-DNS 3.214.19.188 876 | add NETFLIX-DNS 34.209.42.8 877 | add NETFLIX-DNS 3.233.0.34 878 | add NETFLIX-DNS 35.162.98.170 879 | add NETFLIX-DNS 34.193.24.72 880 | add NETFLIX-DNS 52.1.77.130 881 | add NETFLIX-DNS 52.32.205.4 882 | add NETFLIX-DNS 52.35.126.3 883 | add NETFLIX-DNS 52.2.249.117 884 | add NETFLIX-DNS 52.89.129.150 885 | add NETFLIX-DNS 52.88.227.191 886 | add NETFLIX-DNS 198.38.112.182 887 | add NETFLIX-DNS 54.149.89.171 888 | add NETFLIX-DNS 52.42.187.105 889 | add NETFLIX-DNS 54.186.113.248 890 | add NETFLIX-DNS 3.210.212.235 891 | add NETFLIX-DNS 52.216.110.147 892 | add NETFLIX-DNS 52.1.221.71 893 | add NETFLIX-DNS 54.200.227.150 894 | add NETFLIX-DNS 54.152.183.236 895 | add NETFLIX-DNS 52.216.170.99 896 | add NETFLIX-DNS 52.26.173.21 897 | add NETFLIX-DNS 35.166.93.55 898 | add NETFLIX-DNS 52.201.127.203 899 | add NETFLIX-DNS 34.215.9.240 900 | add NETFLIX-DNS 52.20.126.149 901 | add NETFLIX-DNS 54.84.117.239 902 | add NETFLIX-DNS 52.216.114.195 903 | add NETFLIX-DNS 52.10.94.155 904 | add NETFLIX-DNS 52.216.28.100 905 | add NETFLIX-DNS 54.71.250.11 906 | add NETFLIX-DNS 3.230.157.112 907 | add NETFLIX-DNS 34.210.212.152 908 | add NETFLIX-DNS 3.93.122.130 909 | add NETFLIX-DNS 54.186.225.241 910 | add NETFLIX-DNS 52.88.237.244 911 | add NETFLIX-DNS 34.239.234.21 912 | add NETFLIX-DNS 50.112.210.232 913 | add NETFLIX-DNS 52.71.17.16 914 | add NETFLIX-DNS 99.84.238.116 915 | add NETFLIX-DNS 52.25.226.150 916 | add NETFLIX-DNS 52.217.46.236 917 | add NETFLIX-DNS 54.201.206.254 918 | add NETFLIX-DNS 54.200.214.231 919 | add NETFLIX-DNS 52.26.14.105 920 | add NETFLIX-DNS 52.202.25.104 921 | add NETFLIX-DNS 52.217.16.92 922 | add NETFLIX-DNS 52.33.233.73 923 | add NETFLIX-DNS 52.217.44.236 924 | add NETFLIX-DNS 52.72.152.251 925 | add NETFLIX-DNS 107.23.225.194 926 | add NETFLIX-DNS 54.202.141.185 927 | add NETFLIX-DNS 100.21.33.171 928 | add NETFLIX-DNS 54.236.201.74 929 | add NETFLIX-DNS 52.38.250.249 930 | add NETFLIX-DNS 54.201.202.152 931 | add NETFLIX-DNS 54.187.226.31 932 | add NETFLIX-DNS 34.210.180.193 933 | add NETFLIX-DNS 52.36.82.188 934 | add NETFLIX-DNS 52.26.41.83 935 | add NETFLIX-DNS 34.214.209.38 936 | add NETFLIX-DNS 3.91.171.213 937 | add NETFLIX-DNS 52.27.151.115 938 | add NETFLIX-DNS 35.165.252.42 939 | add NETFLIX-DNS 52.216.78.28 940 | add NETFLIX-DNS 54.160.213.25 941 | add NETFLIX-DNS 34.213.82.154 942 | add NETFLIX-DNS 198.38.112.189 943 | add NETFLIX-DNS 54.191.21.49 944 | add NETFLIX-DNS 13.225.143.83 945 | add NETFLIX-DNS 34.206.15.160 946 | add NETFLIX-DNS 54.236.116.150 947 | add NETFLIX-DNS 52.33.37.206 948 | add NETFLIX-DNS 198.38.112.162 949 | add NETFLIX-DNS 54.218.5.203 950 | add NETFLIX-DNS 52.5.221.219 951 | add NETFLIX-DNS 198.38.113.138 952 | add NETFLIX-DNS 54.68.158.230 953 | add NETFLIX-DNS 52.71.112.148 954 | add NETFLIX-DNS 52.216.28.124 955 | add NETFLIX-DNS 52.10.246.46 956 | add NETFLIX-DNS 52.216.141.148 957 | add NETFLIX-DNS 35.161.160.130 958 | add NETFLIX-DNS 52.216.228.248 959 | add NETFLIX-DNS 52.216.132.3 960 | add NETFLIX-DNS 52.39.223.27 961 | add NETFLIX-DNS 54.148.26.65 962 | add NETFLIX-DNS 34.192.37.141 963 | add NETFLIX-DNS 52.217.10.44 964 | add NETFLIX-DNS 52.0.247.113 965 | add NETFLIX-DNS 34.213.145.164 966 | add NETFLIX-DNS 52.11.226.154 967 | add NETFLIX-DNS 52.216.9.219 968 | add NETFLIX-DNS 52.216.99.75 969 | add NETFLIX-DNS 52.33.88.195 970 | add NETFLIX-DNS 34.208.66.203 971 | add NETFLIX-DNS 52.11.56.46 972 | add NETFLIX-DNS 54.152.98.186 973 | add NETFLIX-DNS 34.213.8.73 974 | add NETFLIX-DNS 34.210.173.84 975 | add NETFLIX-DNS 54.69.59.247 976 | add NETFLIX-DNS 52.216.176.211 977 | add NETFLIX-DNS 35.164.172.250 978 | add NETFLIX-DNS 52.216.140.172 979 | add NETFLIX-DNS 52.217.84.4 980 | add NETFLIX-DNS 52.11.76.87 981 | add NETFLIX-DNS 52.217.36.36 982 | add NETFLIX-DNS 52.206.92.126 983 | add NETFLIX-DNS 52.6.59.123 984 | add NETFLIX-DNS 52.6.77.226 985 | add NETFLIX-DNS 44.225.250.166 986 | add NETFLIX-DNS 54.174.67.76 987 | add NETFLIX-DNS 13.33.158.145 988 | add NETFLIX-DNS 52.22.204.99 989 | add NETFLIX-DNS 52.86.0.53 990 | add NETFLIX-DNS 34.231.37.8 991 | add NETFLIX-DNS 52.88.200.237 992 | add NETFLIX-DNS 34.215.34.73 993 | add NETFLIX-DNS 52.88.201.222 994 | add NETFLIX-DNS 34.208.19.66 995 | add NETFLIX-DNS 52.216.185.101 996 | add NETFLIX-DNS 35.167.151.139 997 | add NETFLIX-DNS 54.82.169.222 998 | add NETFLIX-DNS 52.206.143.8 999 | add NETFLIX-DNS 52.44.197.215 1000 | add NETFLIX-DNS 52.43.140.31 1001 | add NETFLIX-DNS 44.229.77.98 1002 | add NETFLIX-DNS 54.85.27.27 1003 | add NETFLIX-DNS 52.43.98.73 1004 | add NETFLIX-DNS 54.68.192.74 1005 | add NETFLIX-DNS 52.25.230.252 1006 | add NETFLIX-DNS 52.216.78.156 1007 | add NETFLIX-DNS 52.216.113.51 1008 | add NETFLIX-DNS 52.33.30.104 1009 | add NETFLIX-DNS 52.43.211.159 1010 | add NETFLIX-DNS 52.22.214.231 1011 | add NETFLIX-DNS 52.44.143.101 1012 | add NETFLIX-DNS 52.40.130.252 1013 | add NETFLIX-DNS 52.40.30.225 1014 | add NETFLIX-DNS 52.216.185.147 1015 | add NETFLIX-DNS 52.217.12.68 1016 | add NETFLIX-DNS 3.91.171.217 1017 | add NETFLIX-DNS 52.11.21.155 1018 | add NETFLIX-DNS 52.216.88.147 1019 | add NETFLIX-DNS 52.217.42.68 1020 | add NETFLIX-DNS 52.218.225.1 1021 | add NETFLIX-DNS 52.53.67.125 1022 | add NETFLIX-DNS 52.0.99.169 1023 | add NETFLIX-DNS 34.196.215.5 1024 | add NETFLIX-DNS 52.37.8.131 1025 | add NETFLIX-DNS 52.216.207.227 1026 | add NETFLIX-DNS 34.216.192.56 1027 | add NETFLIX-DNS 52.89.116.136 1028 | add NETFLIX-DNS 52.40.204.124 1029 | add NETFLIX-DNS 35.166.24.89 1030 | add NETFLIX-DNS 52.73.224.7 1031 | add NETFLIX-DNS 13.226.254.63 1032 | add NETFLIX-DNS 54.231.73.67 1033 | add NETFLIX-DNS 52.217.45.188 1034 | add NETFLIX-DNS 52.216.176.19 1035 | add NETFLIX-DNS 52.217.88.108 1036 | add NETFLIX-DNS 34.198.53.80 1037 | add NETFLIX-DNS 52.45.199.150 1038 | add NETFLIX-DNS 34.202.250.167 1039 | add NETFLIX-DNS 52.217.15.36 1040 | add NETFLIX-DNS 52.35.11.41 1041 | add NETFLIX-DNS 52.216.144.155 1042 | add NETFLIX-DNS 34.227.4.26 1043 | add NETFLIX-DNS 52.33.123.188 1044 | add NETFLIX-DNS 52.87.18.74 1045 | add NETFLIX-DNS 52.202.228.125 1046 | add NETFLIX-DNS 54.158.31.146 1047 | add NETFLIX-DNS 52.218.248.185 1048 | add NETFLIX-DNS 52.216.229.16 1049 | add NETFLIX-DNS 54.187.29.102 1050 | add NETFLIX-DNS 35.161.23.238 1051 | add NETFLIX-DNS 52.35.178.0 1052 | add NETFLIX-DNS 52.33.234.5 1053 | add NETFLIX-DNS 52.216.29.124 1054 | add NETFLIX-DNS 52.32.173.208 1055 | add NETFLIX-DNS 52.217.17.148 1056 | add NETFLIX-DNS 52.217.40.188 1057 | add NETFLIX-DNS 52.217.18.228 1058 | add NETFLIX-DNS 34.230.103.80 1059 | add NETFLIX-DNS 52.3.123.204 1060 | add NETFLIX-DNS 52.217.45.108 1061 | add NETFLIX-DNS 54.148.89.232 1062 | add NETFLIX-DNS 52.216.186.221 1063 | add NETFLIX-DNS 52.216.128.155 1064 | add NETFLIX-DNS 52.216.200.147 1065 | add NETFLIX-DNS 52.217.4.94 1066 | add NETFLIX-DNS 44.230.34.236 1067 | add NETFLIX-DNS 3.210.34.220 1068 | add NETFLIX-DNS 52.207.119.102 1069 | add NETFLIX-DNS 54.218.127.159 1070 | add NETFLIX-DNS 34.215.143.13 1071 | add NETFLIX-DNS 35.169.119.39 1072 | add NETFLIX-DNS 34.201.199.128 1073 | add NETFLIX-DNS 34.205.180.183 1074 | add NETFLIX-DNS 52.216.110.219 1075 | add NETFLIX-DNS 52.217.38.76 1076 | add NETFLIX-DNS 52.216.179.67 1077 | add NETFLIX-DNS 52.32.43.210 1078 | add NETFLIX-DNS 52.10.162.81 1079 | add NETFLIX-DNS 34.233.22.215 1080 | add NETFLIX-DNS 34.230.249.56 1081 | add NETFLIX-DNS 52.202.161.76 1082 | add NETFLIX-DNS 52.218.196.216 1083 | add NETFLIX-DNS 52.217.33.60 1084 | add NETFLIX-DNS 52.5.237.4 1085 | add NETFLIX-DNS 35.155.195.227 1086 | add NETFLIX-DNS 52.217.42.116 1087 | add NETFLIX-DNS 52.44.61.142 1088 | add NETFLIX-DNS 34.218.103.138 1089 | add NETFLIX-DNS 52.217.85.20 1090 | add NETFLIX-DNS 34.213.249.154 1091 | add NETFLIX-DNS 54.71.150.28 1092 | add NETFLIX-DNS 52.216.94.179 1093 | add NETFLIX-DNS 52.216.21.3 1094 | add NETFLIX-DNS 35.166.140.225 1095 | add NETFLIX-DNS 54.173.178.127 1096 | add NETFLIX-DNS 52.32.144.67 1097 | add NETFLIX-DNS 35.165.25.72 1098 | add NETFLIX-DNS 52.216.77.236 1099 | add NETFLIX-DNS 52.217.80.164 1100 | add NETFLIX-DNS 52.35.232.43 1101 | add NETFLIX-DNS 52.217.46.252 1102 | add NETFLIX-DNS 54.213.53.83 1103 | add NETFLIX-DNS 52.1.44.140 1104 | add NETFLIX-DNS 52.216.109.187 1105 | add NETFLIX-DNS 34.213.100.195 1106 | add NETFLIX-DNS 52.26.81.217 1107 | add NETFLIX-DNS 54.68.243.109 1108 | add NETFLIX-DNS 54.209.145.143 1109 | add NETFLIX-DNS 52.218.217.57 1110 | add NETFLIX-DNS 34.212.145.152 1111 | add NETFLIX-DNS 54.201.53.186 1112 | add NETFLIX-DNS 52.9.4.99 1113 | add NETFLIX-DNS 52.216.113.43 1114 | add NETFLIX-DNS 13.33.158.57 1115 | add NETFLIX-DNS 35.164.193.35 1116 | add NETFLIX-DNS 52.207.62.186 1117 | add NETFLIX-DNS 34.208.5.126 1118 | add NETFLIX-DNS 52.35.62.75 1119 | add NETFLIX-DNS 54.186.225.211 1120 | add NETFLIX-DNS 54.148.12.190 1121 | add NETFLIX-DNS 52.217.96.180 1122 | add NETFLIX-DNS 52.54.159.66 1123 | add NETFLIX-DNS 54.69.116.211 1124 | add NETFLIX-DNS 52.216.100.19 1125 | add NETFLIX-DNS 34.233.53.220 1126 | add NETFLIX-DNS 52.41.136.34 1127 | add NETFLIX-DNS 52.38.4.195 1128 | add NETFLIX-DNS 52.89.18.61 1129 | add NETFLIX-DNS 54.187.73.73 1130 | add NETFLIX-DNS 34.230.201.128 1131 | add NETFLIX-DNS 52.34.159.244 1132 | add NETFLIX-DNS 52.216.200.92 1133 | add NETFLIX-DNS 52.216.88.155 1134 | add NETFLIX-DNS 35.165.132.55 1135 | add NETFLIX-DNS 54.86.115.134 1136 | add NETFLIX-DNS 52.44.161.201 1137 | add NETFLIX-DNS 52.54.253.160 1138 | add NETFLIX-DNS 54.187.153.183 1139 | add NETFLIX-DNS 52.216.141.4 1140 | add NETFLIX-DNS 52.216.100.243 1141 | add NETFLIX-DNS 198.38.113.182 1142 | add NETFLIX-DNS 35.170.32.32 1143 | add NETFLIX-DNS 35.167.144.130 1144 | add NETFLIX-DNS 52.34.174.127 1145 | add NETFLIX-DNS 52.89.118.140 1146 | add NETFLIX-DNS 35.162.213.230 1147 | add NETFLIX-DNS 52.20.152.222 1148 | add NETFLIX-DNS 52.7.148.43 1149 | add NETFLIX-DNS 34.208.111.197 1150 | add NETFLIX-DNS 35.162.155.14 1151 | add NETFLIX-DNS 13.226.210.62 1152 | add NETFLIX-DNS 13.33.158.218 1153 | add NETFLIX-DNS 99.86.181.26 1154 | add NETFLIX-DNS 34.208.163.109 1155 | add NETFLIX-DNS 54.213.85.233 1156 | add NETFLIX-DNS 110.164.253.155 1157 | add NETFLIX-DNS 35.175.160.121 1158 | add NETFLIX-DNS 35.164.214.63 1159 | add NETFLIX-DNS 34.213.154.35 1160 | add NETFLIX-DNS 34.227.236.161 1161 | add NETFLIX-DNS 52.216.164.115 1162 | add NETFLIX-DNS 35.165.129.200 1163 | add NETFLIX-DNS 52.36.236.227 1164 | add NETFLIX-DNS 54.148.25.32 1165 | add NETFLIX-DNS 52.26.188.211 1166 | add NETFLIX-DNS 34.215.21.17 1167 | add NETFLIX-DNS 52.38.223.150 1168 | add NETFLIX-DNS 34.210.119.60 1169 | add NETFLIX-DNS 52.34.49.49 1170 | add NETFLIX-DNS 35.166.29.122 1171 | add NETFLIX-DNS 52.10.254.179 1172 | add NETFLIX-DNS 52.88.24.146 1173 | add NETFLIX-DNS 52.32.130.253 1174 | add NETFLIX-DNS 99.84.238.120 1175 | add NETFLIX-DNS 52.216.242.236 1176 | add NETFLIX-DNS 52.73.138.5 1177 | add NETFLIX-DNS 52.39.55.155 1178 | add NETFLIX-DNS 35.161.114.183 1179 | add NETFLIX-DNS 50.112.191.162 1180 | add NETFLIX-DNS 52.26.32.201 1181 | add NETFLIX-DNS 52.216.146.3 1182 | add NETFLIX-DNS 52.33.63.175 1183 | add NETFLIX-DNS 52.216.65.145 1184 | add NETFLIX-DNS 52.216.204.51 1185 | add NETFLIX-DNS 52.216.25.4 1186 | add NETFLIX-DNS 52.38.40.97 1187 | add NETFLIX-DNS 54.187.74.119 1188 | add NETFLIX-DNS 3.91.171.131 1189 | add NETFLIX-DNS 13.33.198.230 1190 | add NETFLIX-DNS 54.201.82.210 1191 | add NETFLIX-DNS 52.217.64.244 1192 | add NETFLIX-DNS 34.218.131.0 1193 | add NETFLIX-DNS 35.162.230.65 1194 | add NETFLIX-DNS 54.69.204.241 1195 | add NETFLIX-DNS 54.164.223.190 1196 | add NETFLIX-DNS 52.216.112.69 1197 | add NETFLIX-DNS 52.217.17.180 1198 | add NETFLIX-DNS 50.112.150.184 1199 | add NETFLIX-DNS 52.54.156.182 1200 | add NETFLIX-DNS 52.206.52.66 1201 | add NETFLIX-DNS 52.202.26.238 1202 | add NETFLIX-DNS 34.225.35.205 1203 | add NETFLIX-DNS 35.165.28.84 1204 | add NETFLIX-DNS 34.215.75.178 1205 | add NETFLIX-DNS 52.216.21.235 1206 | add NETFLIX-DNS 100.20.31.224 1207 | add NETFLIX-DNS 34.208.118.225 1208 | add NETFLIX-DNS 54.231.81.176 1209 | add NETFLIX-DNS 52.217.13.228 1210 | add NETFLIX-DNS 52.88.22.0 1211 | add NETFLIX-DNS 52.26.77.98 1212 | add NETFLIX-DNS 35.167.178.185 1213 | add NETFLIX-DNS 13.33.198.9 1214 | add NETFLIX-DNS 35.166.37.231 1215 | add NETFLIX-DNS 13.56.35.98 1216 | add NETFLIX-DNS 34.216.87.254 1217 | add NETFLIX-DNS 34.225.135.220 1218 | add NETFLIX-DNS 34.210.179.137 1219 | add NETFLIX-DNS 13.225.143.21 1220 | add NETFLIX-DNS 52.40.251.202 1221 | add NETFLIX-DNS 35.167.186.123 1222 | add NETFLIX-DNS 52.45.205.220 1223 | add NETFLIX-DNS 52.88.96.226 1224 | add NETFLIX-DNS 54.68.98.202 1225 | add NETFLIX-DNS 54.165.230.173 1226 | add NETFLIX-DNS 34.202.232.122 1227 | add NETFLIX-DNS 34.211.153.169 1228 | add NETFLIX-DNS 52.26.64.185 1229 | add NETFLIX-DNS 35.166.21.135 1230 | add NETFLIX-DNS 52.217.0.212 1231 | add NETFLIX-DNS 52.33.255.130 1232 | add NETFLIX-DNS 34.208.23.234 1233 | add NETFLIX-DNS 52.216.132.67 1234 | add NETFLIX-DNS 52.216.230.35 1235 | add NETFLIX-DNS 52.216.21.195 1236 | add NETFLIX-DNS 34.230.123.73 1237 | add NETFLIX-DNS 52.44.160.223 1238 | add NETFLIX-DNS 52.71.211.51 1239 | add NETFLIX-DNS 54.186.244.101 1240 | add NETFLIX-DNS 52.39.181.219 1241 | add NETFLIX-DNS 52.216.161.91 1242 | add NETFLIX-DNS 52.216.100.171 1243 | add NETFLIX-DNS 35.165.40.247 1244 | add NETFLIX-DNS 52.24.72.66 1245 | add NETFLIX-DNS 13.33.198.72 1246 | add NETFLIX-DNS 52.33.176.57 1247 | add NETFLIX-DNS 54.148.61.85 1248 | add NETFLIX-DNS 52.216.228.168 1249 | add NETFLIX-DNS 54.191.88.96 1250 | add NETFLIX-DNS 52.203.196.7 1251 | add NETFLIX-DNS 52.11.181.57 1252 | add NETFLIX-DNS 3.224.95.29 1253 | add NETFLIX-DNS 52.216.177.147 1254 | add NETFLIX-DNS 54.213.197.51 1255 | add NETFLIX-DNS 52.40.145.183 1256 | add NETFLIX-DNS 34.213.232.247 1257 | add NETFLIX-DNS 52.216.8.27 1258 | add NETFLIX-DNS 52.40.89.218 1259 | add NETFLIX-DNS 34.233.233.6 1260 | add NETFLIX-DNS 52.216.130.195 1261 | add NETFLIX-DNS 54.231.41.75 1262 | add NETFLIX-DNS 52.217.42.76 1263 | add NETFLIX-DNS 52.53.138.239 1264 | add NETFLIX-DNS 54.157.67.3 1265 | add NETFLIX-DNS 52.218.224.81 1266 | add NETFLIX-DNS 52.217.101.52 1267 | add NETFLIX-DNS 52.22.126.108 1268 | add NETFLIX-DNS 34.237.168.8 1269 | add NETFLIX-DNS 54.84.171.234 1270 | add NETFLIX-DNS 52.218.160.65 1271 | add NETFLIX-DNS 52.216.80.113 1272 | add NETFLIX-DNS 54.149.89.34 1273 | add NETFLIX-DNS 52.216.186.51 1274 | add NETFLIX-DNS 34.208.223.173 1275 | add NETFLIX-DNS 52.36.243.167 1276 | add NETFLIX-DNS 52.72.188.171 1277 | add NETFLIX-DNS 3.214.255.165 1278 | add NETFLIX-DNS 52.5.115.82 1279 | add NETFLIX-DNS 52.216.29.30 1280 | add NETFLIX-DNS 35.167.64.205 1281 | add NETFLIX-DNS 52.1.229.236 1282 | add NETFLIX-DNS 13.33.198.157 1283 | add NETFLIX-DNS 52.216.65.64 1284 | add NETFLIX-DNS 54.88.245.98 1285 | add NETFLIX-DNS 52.89.176.40 1286 | add NETFLIX-DNS 99.86.181.51 1287 | add NETFLIX-DNS 35.166.112.118 1288 | add NETFLIX-DNS 52.11.22.125 1289 | add NETFLIX-DNS 52.216.164.243 1290 | add NETFLIX-DNS 52.73.53.78 1291 | add NETFLIX-DNS 52.216.229.59 1292 | add NETFLIX-DNS 52.13.153.185 1293 | add NETFLIX-DNS 34.223.151.80 1294 | add NETFLIX-DNS 35.162.178.32 1295 | add NETFLIX-DNS 52.216.112.19 1296 | add NETFLIX-DNS 54.208.154.79 1297 | add NETFLIX-DNS 52.216.110.51 1298 | add NETFLIX-DNS 35.161.47.221 1299 | add NETFLIX-DNS 35.171.242.24 1300 | add NETFLIX-DNS 198.38.112.183 1301 | add NETFLIX-DNS 99.84.238.94 1302 | add NETFLIX-DNS 52.44.156.185 1303 | add NETFLIX-DNS 52.216.131.43 1304 | add NETFLIX-DNS 52.216.160.213 1305 | add NETFLIX-DNS 34.208.90.4 1306 | add NETFLIX-DNS 54.255.199.54 1307 | add NETFLIX-DNS 34.227.139.59 1308 | add NETFLIX-DNS 34.236.123.135 1309 | add NETFLIX-DNS 52.34.40.193 1310 | add NETFLIX-DNS 34.212.106.52 1311 | add NETFLIX-DNS 35.164.142.251 1312 | add NETFLIX-DNS 52.11.28.31 1313 | add NETFLIX-DNS 52.0.159.170 1314 | add NETFLIX-DNS 54.197.190.85 1315 | add NETFLIX-DNS 35.162.42.10 1316 | add NETFLIX-DNS 52.25.43.84 1317 | add NETFLIX-DNS 54.164.148.1 1318 | add NETFLIX-DNS 99.86.181.109 1319 | add NETFLIX-DNS 52.216.134.75 1320 | add NETFLIX-DNS 52.34.66.118 1321 | add NETFLIX-DNS 35.166.151.2 1322 | add NETFLIX-DNS 54.192.150.125 1323 | add NETFLIX-DNS 52.216.132.139 1324 | add NETFLIX-DNS 35.164.73.123 1325 | add NETFLIX-DNS 34.211.182.151 1326 | add NETFLIX-DNS 52.216.137.44 1327 | add NETFLIX-DNS 34.208.219.102 1328 | add NETFLIX-DNS 52.27.226.19 1329 | add NETFLIX-DNS 52.7.201.204 1330 | add NETFLIX-DNS 52.216.28.212 1331 | add NETFLIX-DNS 3.221.48.148 1332 | add NETFLIX-DNS 54.148.119.110 1333 | add NETFLIX-DNS 52.216.249.173 1334 | add NETFLIX-DNS 52.25.241.4 1335 | add NETFLIX-DNS 34.201.234.122 1336 | add NETFLIX-DNS 52.34.255.120 1337 | add NETFLIX-DNS 44.225.184.57 1338 | add NETFLIX-DNS 52.24.110.210 1339 | add NETFLIX-DNS 35.161.76.200 1340 | add NETFLIX-DNS 52.55.153.128 1341 | add NETFLIX-DNS 52.216.138.27 1342 | add NETFLIX-DNS 52.217.64.100 1343 | add NETFLIX-DNS 52.39.18.6 1344 | add NETFLIX-DNS 52.26.150.190 1345 | add NETFLIX-DNS 52.217.100.52 1346 | add NETFLIX-DNS 35.163.71.114 1347 | add NETFLIX-DNS 54.187.129.62 1348 | add NETFLIX-DNS 52.89.81.217 1349 | add NETFLIX-DNS 34.224.196.98 1350 | add NETFLIX-DNS 34.200.37.26 1351 | add NETFLIX-DNS 52.35.90.247 1352 | add NETFLIX-DNS 52.218.176.73 1353 | add NETFLIX-DNS 52.24.187.172 1354 | add NETFLIX-DNS 52.88.205.224 1355 | add NETFLIX-DNS 52.33.239.114 1356 | add NETFLIX-DNS 13.33.199.38 1357 | add NETFLIX-DNS 54.68.33.104 1358 | add NETFLIX-DNS 52.216.142.108 1359 | add NETFLIX-DNS 34.208.130.96 1360 | add NETFLIX-DNS 52.201.142.38 1361 | add NETFLIX-DNS 34.234.42.132 1362 | add NETFLIX-DNS 52.26.22.158 1363 | add NETFLIX-DNS 52.206.46.199 1364 | add NETFLIX-DNS 54.86.125.3 1365 | add NETFLIX-DNS 54.213.134.52 1366 | add NETFLIX-DNS 52.216.20.24 1367 | add NETFLIX-DNS 52.39.87.36 1368 | add NETFLIX-DNS 52.41.49.52 1369 | add NETFLIX-DNS 52.217.41.116 1370 | add NETFLIX-DNS 52.72.125.108 1371 | add NETFLIX-DNS 52.216.94.45 1372 | add NETFLIX-DNS 52.89.160.190 1373 | add NETFLIX-DNS 54.186.176.74 1374 | add NETFLIX-DNS 52.54.192.57 1375 | add NETFLIX-DNS 52.217.65.116 1376 | add NETFLIX-DNS 52.89.115.10 1377 | add NETFLIX-DNS 34.206.209.190 1378 | add NETFLIX-DNS 52.0.122.36 1379 | add NETFLIX-DNS 52.45.141.2 1380 | add NETFLIX-DNS 52.24.189.244 1381 | add NETFLIX-DNS 52.216.245.12 1382 | add NETFLIX-DNS 52.218.192.49 1383 | add NETFLIX-DNS 35.165.241.163 1384 | add NETFLIX-DNS 52.38.224.68 1385 | add NETFLIX-DNS 52.21.54.132 1386 | add NETFLIX-DNS 198.38.112.164 1387 | add NETFLIX-DNS 35.161.13.240 1388 | add NETFLIX-DNS 52.218.244.17 1389 | add NETFLIX-DNS 35.163.11.25 1390 | add NETFLIX-DNS 34.230.248.70 1391 | add NETFLIX-DNS 52.89.116.222 1392 | add NETFLIX-DNS 34.237.208.216 1393 | add NETFLIX-DNS 52.24.122.189 1394 | add NETFLIX-DNS 52.216.111.67 1395 | add NETFLIX-DNS 52.216.29.196 1396 | add NETFLIX-DNS 35.155.128.67 1397 | add NETFLIX-DNS 52.216.77.44 1398 | add NETFLIX-DNS 34.197.28.172 1399 | add NETFLIX-DNS 3.224.67.251 1400 | add NETFLIX-DNS 3.231.247.234 1401 | add NETFLIX-DNS 34.212.78.158 1402 | add NETFLIX-DNS 52.216.82.56 1403 | add NETFLIX-DNS 35.163.93.105 1404 | add NETFLIX-DNS 54.191.190.31 1405 | add NETFLIX-DNS 35.163.244.13 1406 | add NETFLIX-DNS 52.44.232.159 1407 | add NETFLIX-DNS 52.217.45.156 1408 | add NETFLIX-DNS 52.217.32.4 1409 | add NETFLIX-DNS 13.226.217.6 1410 | add NETFLIX-DNS 35.160.143.185 1411 | add NETFLIX-DNS 52.206.161.63 1412 | add NETFLIX-DNS 34.209.46.21 1413 | add NETFLIX-DNS 35.167.199.238 1414 | add NETFLIX-DNS 52.42.21.117 1415 | add NETFLIX-DNS 52.33.238.150 1416 | add NETFLIX-DNS 50.16.150.176 1417 | add NETFLIX-DNS 52.89.46.74 1418 | add NETFLIX-DNS 13.226.254.96 1419 | add NETFLIX-DNS 52.39.97.13 1420 | add NETFLIX-DNS 52.24.32.199 1421 | add NETFLIX-DNS 52.20.35.94 1422 | add NETFLIX-DNS 54.186.36.120 1423 | add NETFLIX-DNS 52.89.183.237 1424 | add NETFLIX-DNS 54.201.191.132 1425 | add NETFLIX-DNS 54.148.240.212 1426 | add NETFLIX-DNS 52.218.245.113 1427 | add NETFLIX-DNS 52.217.40.140 1428 | add NETFLIX-DNS 35.166.109.65 1429 | add NETFLIX-DNS 52.32.93.149 1430 | add NETFLIX-DNS 52.36.25.1 1431 | add NETFLIX-DNS 52.88.129.113 1432 | add NETFLIX-DNS 34.211.130.187 1433 | add NETFLIX-DNS 52.36.31.115 1434 | add NETFLIX-DNS 52.40.8.5 1435 | add NETFLIX-DNS 52.216.133.195 1436 | add NETFLIX-DNS 3.230.7.206 1437 | add NETFLIX-DNS 34.235.222.134 1438 | add NETFLIX-DNS 35.164.212.187 1439 | add NETFLIX-DNS 50.112.210.10 1440 | add NETFLIX-DNS 52.217.0.237 1441 | add NETFLIX-DNS 52.216.168.131 1442 | add NETFLIX-DNS 52.7.184.66 1443 | add NETFLIX-DNS 50.112.224.191 1444 | add NETFLIX-DNS 52.32.118.244 1445 | add NETFLIX-DNS 52.34.193.2 1446 | add NETFLIX-DNS 34.214.212.240 1447 | add NETFLIX-DNS 34.215.103.171 1448 | add NETFLIX-DNS 52.41.75.150 1449 | add NETFLIX-DNS 52.0.146.122 1450 | add NETFLIX-DNS 52.216.106.164 1451 | add NETFLIX-DNS 52.216.78.244 1452 | add NETFLIX-DNS 52.89.57.240 1453 | add NETFLIX-DNS 52.216.134.245 1454 | add NETFLIX-DNS 52.26.193.134 1455 | add NETFLIX-DNS 34.213.75.165 1456 | add NETFLIX-DNS 52.5.49.85 1457 | add NETFLIX-DNS 52.216.145.43 1458 | add NETFLIX-DNS 52.216.248.132 1459 | add NETFLIX-DNS 34.204.207.155 1460 | add NETFLIX-DNS 35.162.157.134 1461 | add NETFLIX-DNS 52.55.249.31 1462 | add NETFLIX-DNS 52.73.211.18 1463 | add NETFLIX-DNS 13.224.153.79 1464 | add NETFLIX-DNS 54.231.115.51 1465 | add NETFLIX-DNS 52.216.249.236 1466 | add NETFLIX-DNS 52.202.69.222 1467 | add NETFLIX-DNS 52.41.37.211 1468 | add NETFLIX-DNS 34.200.5.115 1469 | add NETFLIX-DNS 52.216.140.92 1470 | add NETFLIX-DNS 52.216.1.248 1471 | add NETFLIX-DNS 52.22.215.45 1472 | add NETFLIX-DNS 54.236.197.98 1473 | add NETFLIX-DNS 54.149.174.156 1474 | add NETFLIX-DNS 52.36.8.35 1475 | add NETFLIX-DNS 52.32.111.190 1476 | add NETFLIX-DNS 52.217.65.172 1477 | add NETFLIX-DNS 52.89.127.0 1478 | add NETFLIX-DNS 13.33.198.6 1479 | add NETFLIX-DNS 52.217.42.180 1480 | add NETFLIX-DNS 52.216.2.51 1481 | add NETFLIX-DNS 52.216.238.3 1482 | add NETFLIX-DNS 54.68.18.62 1483 | add NETFLIX-DNS 34.205.153.241 1484 | add NETFLIX-DNS 52.201.152.21 1485 | add NETFLIX-DNS 54.71.100.138 1486 | add NETFLIX-DNS 34.193.221.137 1487 | add NETFLIX-DNS 34.206.169.162 1488 | add NETFLIX-DNS 52.43.139.208 1489 | add NETFLIX-DNS 34.227.232.107 1490 | add NETFLIX-DNS 34.215.16.54 1491 | add NETFLIX-DNS 52.216.114.147 1492 | add NETFLIX-DNS 52.25.166.191 1493 | add NETFLIX-DNS 35.153.87.22 1494 | add NETFLIX-DNS 52.216.178.51 1495 | add NETFLIX-DNS 52.201.83.149 1496 | add NETFLIX-DNS 52.26.110.96 1497 | add NETFLIX-DNS 50.112.132.195 1498 | add NETFLIX-DNS 52.26.10.162 1499 | add NETFLIX-DNS 34.238.95.176 1500 | add NETFLIX-DNS 52.34.215.154 1501 | add NETFLIX-DNS 52.204.217.0 1502 | add NETFLIX-DNS 54.70.116.184 1503 | add NETFLIX-DNS 54.70.142.79 1504 | add NETFLIX-DNS 52.216.77.124 1505 | add NETFLIX-DNS 52.10.94.193 1506 | add NETFLIX-DNS 34.211.18.10 1507 | add NETFLIX-DNS 3.92.252.253 1508 | add NETFLIX-DNS 52.216.133.227 1509 | add NETFLIX-DNS 52.34.165.205 1510 | add NETFLIX-DNS 34.208.15.242 1511 | add NETFLIX-DNS 34.233.116.90 1512 | add NETFLIX-DNS 52.217.4.92 1513 | add NETFLIX-DNS 52.70.156.56 1514 | add NETFLIX-DNS 52.11.87.0 1515 | add NETFLIX-DNS 52.217.45.4 1516 | add NETFLIX-DNS 54.68.34.100 1517 | add NETFLIX-DNS 52.217.83.44 1518 | add NETFLIX-DNS 54.173.69.222 1519 | add NETFLIX-DNS 34.192.114.43 1520 | add NETFLIX-DNS 52.7.50.130 1521 | add NETFLIX-DNS 52.206.238.100 1522 | add NETFLIX-DNS 52.216.207.75 1523 | add NETFLIX-DNS 52.217.36.188 1524 | add NETFLIX-DNS 52.218.253.1 1525 | add NETFLIX-DNS 52.216.137.140 1526 | add NETFLIX-DNS 34.224.204.11 1527 | add NETFLIX-DNS 52.54.138.141 1528 | add NETFLIX-DNS 34.214.47.228 1529 | add NETFLIX-DNS 52.218.180.241 1530 | add NETFLIX-DNS 35.167.203.80 1531 | add NETFLIX-DNS 52.217.36.54 1532 | add NETFLIX-DNS 52.217.39.228 1533 | add NETFLIX-DNS 52.37.51.64 1534 | add NETFLIX-DNS 52.39.74.236 1535 | add NETFLIX-DNS 52.201.4.61 1536 | add NETFLIX-DNS 34.215.69.119 1537 | add NETFLIX-DNS 54.202.217.229 1538 | add NETFLIX-DNS 34.214.1.29 1539 | add NETFLIX-DNS 34.211.242.4 1540 | add NETFLIX-DNS 52.216.133.83 1541 | add NETFLIX-DNS 34.217.182.35 1542 | add NETFLIX-DNS 52.217.33.204 1543 | add NETFLIX-DNS 52.24.178.148 1544 | add NETFLIX-DNS 54.209.43.136 1545 | add NETFLIX-DNS 3.234.108.176 1546 | add NETFLIX-DNS 52.35.241.24 1547 | add NETFLIX-DNS 52.72.50.135 1548 | add NETFLIX-DNS 3.221.69.44 1549 | add NETFLIX-DNS 52.216.82.57 1550 | add NETFLIX-DNS 52.43.67.250 1551 | add NETFLIX-DNS 52.21.112.4 1552 | add NETFLIX-DNS 52.218.225.145 1553 | add NETFLIX-DNS 34.196.47.72 1554 | add NETFLIX-DNS 52.40.120.237 1555 | add NETFLIX-DNS 52.216.233.35 1556 | add NETFLIX-DNS 54.201.229.0 1557 | add NETFLIX-DNS 52.34.154.16 1558 | add NETFLIX-DNS 52.37.114.0 1559 | add NETFLIX-DNS 13.33.198.35 1560 | add NETFLIX-DNS 52.34.156.65 1561 | add NETFLIX-DNS 34.192.101.131 1562 | add NETFLIX-DNS 35.161.116.72 1563 | add NETFLIX-DNS 34.224.254.35 1564 | add NETFLIX-DNS 52.25.167.230 1565 | add NETFLIX-DNS 52.217.33.196 1566 | add NETFLIX-DNS 35.165.166.247 1567 | add NETFLIX-DNS 52.40.129.56 1568 | add NETFLIX-DNS 35.153.46.111 1569 | add NETFLIX-DNS 52.217.42.118 1570 | add NETFLIX-DNS 52.24.21.77 1571 | add NETFLIX-DNS 52.54.22.121 1572 | add NETFLIX-DNS 52.38.175.46 1573 | add NETFLIX-DNS 52.38.42.150 1574 | add NETFLIX-DNS 52.10.37.66 1575 | add NETFLIX-DNS 52.205.9.57 1576 | add NETFLIX-DNS 34.215.83.14 1577 | add NETFLIX-DNS 52.216.146.235 1578 | add NETFLIX-DNS 52.35.14.150 1579 | add NETFLIX-DNS 52.44.193.76 1580 | add NETFLIX-DNS 52.23.140.135 1581 | add NETFLIX-DNS 52.7.169.58 1582 | add NETFLIX-DNS 52.35.207.85 1583 | add NETFLIX-DNS 52.89.190.6 1584 | add NETFLIX-DNS 34.211.154.143 1585 | add NETFLIX-DNS 52.216.176.61 1586 | add NETFLIX-DNS 35.165.102.2 1587 | add NETFLIX-DNS 52.216.20.99 1588 | add NETFLIX-DNS 54.203.196.66 1589 | add NETFLIX-DNS 50.112.212.151 1590 | add NETFLIX-DNS 35.172.76.123 1591 | add NETFLIX-DNS 52.216.24.84 1592 | add NETFLIX-DNS 52.216.185.19 1593 | add NETFLIX-DNS 52.216.241.4 1594 | add NETFLIX-DNS 35.168.226.32 1595 | add NETFLIX-DNS 13.33.199.90 1596 | add NETFLIX-DNS 34.213.76.114 1597 | add NETFLIX-DNS 52.1.56.105 1598 | add NETFLIX-DNS 54.191.162.71 1599 | add NETFLIX-DNS 52.217.42.84 1600 | add NETFLIX-DNS 52.44.178.230 1601 | add NETFLIX-DNS 3.92.129.59 1602 | add NETFLIX-DNS 52.40.94.131 1603 | add NETFLIX-DNS 13.33.198.42 1604 | add NETFLIX-DNS 52.39.188.68 1605 | add NETFLIX-DNS 54.87.189.243 1606 | add NETFLIX-DNS 52.88.236.185 1607 | add NETFLIX-DNS 52.217.82.140 1608 | add NETFLIX-DNS 100.20.31.35 1609 | add NETFLIX-DNS 54.148.2.121 1610 | add NETFLIX-DNS 54.68.78.3 1611 | add NETFLIX-DNS 34.213.36.29 1612 | add NETFLIX-DNS 52.216.244.228 1613 | add NETFLIX-DNS 54.200.178.54 1614 | add NETFLIX-DNS 52.38.6.210 1615 | add NETFLIX-DNS 34.236.11.217 1616 | add NETFLIX-DNS 13.226.254.32 1617 | add NETFLIX-DNS 35.167.32.4 1618 | add NETFLIX-DNS 52.216.146.227 1619 | add NETFLIX-DNS 34.213.234.219 1620 | add NETFLIX-DNS 34.232.117.231 1621 | add NETFLIX-DNS 34.212.73.202 1622 | add NETFLIX-DNS 52.36.102.209 1623 | add NETFLIX-DNS 54.175.238.199 1624 | add NETFLIX-DNS 52.216.165.211 1625 | add NETFLIX-DNS 52.26.61.133 1626 | add NETFLIX-DNS 52.217.0.75 1627 | add NETFLIX-DNS 34.223.130.2 1628 | add NETFLIX-DNS 52.217.39.204 1629 | add NETFLIX-DNS 52.20.230.101 1630 | add NETFLIX-DNS 52.40.216.249 1631 | add NETFLIX-DNS 54.148.18.2 1632 | add NETFLIX-DNS 52.42.212.74 1633 | add NETFLIX-DNS 54.82.110.63 1634 | add NETFLIX-DNS 35.164.210.118 1635 | add NETFLIX-DNS 44.228.81.194 1636 | add NETFLIX-DNS 34.213.114.22 1637 | add NETFLIX-DNS 52.40.47.226 1638 | add NETFLIX-DNS 52.216.108.187 1639 | add NETFLIX-DNS 52.41.71.111 1640 | add NETFLIX-DNS 34.213.106.164 1641 | add NETFLIX-DNS 35.167.99.115 1642 | add NETFLIX-DNS 54.71.189.183 1643 | add NETFLIX-DNS 52.205.92.194 1644 | add NETFLIX-DNS 34.203.173.146 1645 | add NETFLIX-DNS 35.161.212.43 1646 | add NETFLIX-DNS 54.71.187.89 1647 | add NETFLIX-DNS 52.42.32.212 1648 | add NETFLIX-DNS 184.28.221.80 1649 | add NETFLIX-DNS 18.136.78.251 1650 | add NETFLIX-DNS 52.27.28.40 1651 | add NETFLIX-DNS 54.173.250.49 1652 | add NETFLIX-DNS 35.161.95.52 1653 | add NETFLIX-DNS 34.234.99.131 1654 | add NETFLIX-DNS 52.0.38.79 1655 | add NETFLIX-DNS 54.148.186.22 1656 | add NETFLIX-DNS 198.38.112.184 1657 | add NETFLIX-DNS 52.216.244.76 1658 | add NETFLIX-DNS 54.218.34.252 1659 | add NETFLIX-DNS 52.39.58.147 1660 | add NETFLIX-DNS 34.215.23.227 1661 | add NETFLIX-DNS 13.226.210.109 1662 | add NETFLIX-DNS 52.216.81.248 1663 | add NETFLIX-DNS 52.6.1.153 1664 | add NETFLIX-DNS 52.217.80.20 1665 | add NETFLIX-DNS 52.216.146.69 1666 | add NETFLIX-DNS 34.197.160.123 1667 | add NETFLIX-DNS 52.216.147.148 1668 | add NETFLIX-DNS 18.214.74.181 1669 | add NETFLIX-DNS 52.10.45.81 1670 | add NETFLIX-DNS 52.42.108.30 1671 | add NETFLIX-DNS 52.25.6.253 1672 | add NETFLIX-DNS 34.230.209.57 1673 | add NETFLIX-DNS 34.232.132.191 1674 | add NETFLIX-DNS 52.43.72.11 1675 | add NETFLIX-DNS 54.210.102.80 1676 | add NETFLIX-DNS 54.227.208.12 1677 | add NETFLIX-DNS 52.40.90.190 1678 | add NETFLIX-DNS 52.216.82.75 1679 | add NETFLIX-DNS 52.4.124.146 1680 | add NETFLIX-DNS 35.161.34.12 1681 | add NETFLIX-DNS 52.32.0.209 1682 | add NETFLIX-DNS 52.27.160.235 1683 | add NETFLIX-DNS 52.207.115.251 1684 | add NETFLIX-DNS 52.217.15.92 1685 | add NETFLIX-DNS 13.33.158.144 1686 | add NETFLIX-DNS 34.234.209.251 1687 | add NETFLIX-DNS 35.160.25.5 1688 | add NETFLIX-DNS 52.206.198.141 1689 | add NETFLIX-DNS 52.27.61.208 1690 | add NETFLIX-DNS 54.191.126.249 1691 | add NETFLIX-DNS 52.216.86.139 1692 | add NETFLIX-DNS 52.88.221.191 1693 | add NETFLIX-DNS 52.216.114.139 1694 | add NETFLIX-DNS 52.89.205.32 1695 | add NETFLIX-DNS 52.216.244.164 1696 | add NETFLIX-DNS 54.200.111.73 1697 | add NETFLIX-DNS 52.216.93.243 1698 | add NETFLIX-DNS 52.40.33.157 1699 | add NETFLIX-DNS 35.167.147.180 1700 | add NETFLIX-DNS 52.42.245.144 1701 | add NETFLIX-DNS 52.33.164.149 1702 | add NETFLIX-DNS 34.215.27.227 1703 | add NETFLIX-DNS 34.215.77.65 1704 | add NETFLIX-DNS 52.73.138.113 1705 | add NETFLIX-DNS 52.216.112.83 1706 | add NETFLIX-DNS 52.25.198.66 1707 | add NETFLIX-DNS 52.42.21.98 1708 | add NETFLIX-DNS 34.234.206.251 1709 | add NETFLIX-DNS 52.216.114.83 1710 | add NETFLIX-DNS 52.217.88.28 1711 | add NETFLIX-DNS 34.198.41.78 1712 | add NETFLIX-DNS 34.236.102.213 1713 | add NETFLIX-DNS 52.218.230.41 1714 | add NETFLIX-DNS 34.208.184.143 1715 | add NETFLIX-DNS 52.202.111.178 1716 | add NETFLIX-DNS 52.25.219.219 1717 | add NETFLIX-DNS 52.88.249.126 1718 | add NETFLIX-DNS 35.155.232.226 1719 | add NETFLIX-DNS 54.68.234.134 1720 | add NETFLIX-DNS 52.10.107.113 1721 | add NETFLIX-DNS 52.11.60.223 1722 | add NETFLIX-DNS 54.209.200.219 1723 | add NETFLIX-DNS 52.6.98.78 1724 | add NETFLIX-DNS 34.210.171.188 1725 | add NETFLIX-DNS 35.165.252.127 1726 | add NETFLIX-DNS 52.216.145.251 1727 | add NETFLIX-DNS 35.160.202.197 1728 | add NETFLIX-DNS 52.72.187.94 1729 | add NETFLIX-DNS 52.88.74.36 1730 | add NETFLIX-DNS 52.34.202.173 1731 | add NETFLIX-DNS 52.41.79.88 1732 | add NETFLIX-DNS 34.206.5.173 1733 | add NETFLIX-DNS 34.215.40.117 1734 | add NETFLIX-DNS 52.218.228.33 1735 | add NETFLIX-DNS 52.217.46.132 1736 | add NETFLIX-DNS 54.173.156.189 1737 | add NETFLIX-DNS 35.163.161.233 1738 | add NETFLIX-DNS 52.26.32.164 1739 | add NETFLIX-DNS 54.70.111.46 1740 | add NETFLIX-DNS 52.216.145.35 1741 | add NETFLIX-DNS 52.216.93.196 1742 | add NETFLIX-DNS 52.86.83.113 1743 | add NETFLIX-DNS 54.152.58.131 1744 | add NETFLIX-DNS 52.218.249.33 1745 | add NETFLIX-DNS 52.217.43.100 1746 | add NETFLIX-DNS 54.201.149.101 1747 | add NETFLIX-DNS 54.189.245.108 1748 | add NETFLIX-DNS 52.41.138.8 1749 | add NETFLIX-DNS 52.40.66.89 1750 | add NETFLIX-DNS 52.40.58.197 1751 | add NETFLIX-DNS 54.68.67.36 1752 | add NETFLIX-DNS 54.70.49.3 1753 | add NETFLIX-DNS 52.11.38.167 1754 | add NETFLIX-DNS 52.216.27.12 1755 | add NETFLIX-DNS 34.194.68.143 1756 | add NETFLIX-DNS 3.221.13.230 1757 | add NETFLIX-DNS 35.165.189.191 1758 | add NETFLIX-DNS 34.216.128.46 1759 | add NETFLIX-DNS 35.160.247.12 1760 | add NETFLIX-DNS 3.222.225.80 1761 | add NETFLIX-DNS 52.34.133.109 1762 | add NETFLIX-DNS 52.3.149.126 1763 | add NETFLIX-DNS 52.25.135.146 1764 | add NETFLIX-DNS 52.218.241.193 1765 | add NETFLIX-DNS 107.23.209.173 1766 | add NETFLIX-DNS 52.26.79.174 1767 | add NETFLIX-DNS 52.217.45.68 1768 | add NETFLIX-DNS 52.216.232.147 1769 | add NETFLIX-DNS 52.216.179.163 1770 | add NETFLIX-DNS 52.7.130.136 1771 | add NETFLIX-DNS 34.227.233.255 1772 | add NETFLIX-DNS 52.38.253.114 1773 | add NETFLIX-DNS 54.200.70.42 1774 | add NETFLIX-DNS 52.216.170.27 1775 | add NETFLIX-DNS 35.162.35.255 1776 | add NETFLIX-DNS 52.11.150.110 1777 | add NETFLIX-DNS 52.86.30.175 1778 | add NETFLIX-DNS 34.214.223.171 1779 | add NETFLIX-DNS 34.214.72.167 1780 | add NETFLIX-DNS 52.218.242.241 1781 | add NETFLIX-DNS 52.216.186.236 1782 | add NETFLIX-DNS 3.224.157.240 1783 | add NETFLIX-DNS 52.44.1.81 1784 | add NETFLIX-DNS 35.166.47.65 1785 | add NETFLIX-DNS 52.217.37.4 1786 | add NETFLIX-DNS 50.19.236.170 1787 | add NETFLIX-DNS 52.216.134.229 1788 | add NETFLIX-DNS 34.233.159.73 1789 | add NETFLIX-DNS 34.197.110.3 1790 | add NETFLIX-DNS 35.161.236.81 1791 | add NETFLIX-DNS 52.216.99.91 1792 | add NETFLIX-DNS 52.35.81.82 1793 | add NETFLIX-DNS 52.86.92.226 1794 | add NETFLIX-DNS 34.211.243.76 1795 | add NETFLIX-DNS 52.5.119.51 1796 | add NETFLIX-DNS 54.186.130.46 1797 | add NETFLIX-DNS 52.33.47.163 1798 | add NETFLIX-DNS 54.148.82.144 1799 | add NETFLIX-DNS 34.229.28.235 1800 | add NETFLIX-DNS 35.167.202.100 1801 | add NETFLIX-DNS 52.7.92.16 1802 | add NETFLIX-DNS 34.234.109.38 1803 | add NETFLIX-DNS 54.68.166.120 1804 | add NETFLIX-DNS 35.160.143.251 1805 | add NETFLIX-DNS 54.191.131.211 1806 | add NETFLIX-DNS 23.22.5.53 1807 | add NETFLIX-DNS 52.11.116.132 1808 | add NETFLIX-DNS 52.217.16.84 1809 | add NETFLIX-DNS 52.2.85.54 1810 | add NETFLIX-DNS 34.193.166.37 1811 | add NETFLIX-DNS 52.32.137.9 1812 | add NETFLIX-DNS 54.192.150.47 1813 | add NETFLIX-DNS 52.76.24.130 1814 | add NETFLIX-DNS 52.41.168.84 1815 | add NETFLIX-DNS 23.223.57.232 1816 | add NETFLIX-DNS 52.38.247.61 1817 | add NETFLIX-DNS 52.34.168.254 1818 | add NETFLIX-DNS 35.167.99.241 1819 | add NETFLIX-DNS 34.208.31.176 1820 | add NETFLIX-DNS 52.217.81.172 1821 | add NETFLIX-DNS 34.228.100.217 1822 | add NETFLIX-DNS 34.196.21.148 1823 | add NETFLIX-DNS 52.216.248.84 1824 | add NETFLIX-DNS 54.164.205.93 1825 | add NETFLIX-DNS 52.2.79.14 1826 | add NETFLIX-DNS 52.38.39.5 1827 | add NETFLIX-DNS 35.165.69.107 1828 | add NETFLIX-DNS 13.33.198.26 1829 | add NETFLIX-DNS 54.83.165.97 1830 | add NETFLIX-DNS 3.232.230.159 1831 | add NETFLIX-DNS 52.34.197.202 1832 | add NETFLIX-DNS 52.218.232.225 1833 | add NETFLIX-DNS 52.217.47.116 1834 | add NETFLIX-DNS 3.224.175.166 1835 | add NETFLIX-DNS 52.10.15.50 1836 | add NETFLIX-DNS 52.36.2.118 1837 | add NETFLIX-DNS 54.227.236.182 1838 | add NETFLIX-DNS 52.217.42.236 1839 | add NETFLIX-DNS 52.217.9.4 1840 | add NETFLIX-DNS 34.196.193.15 1841 | add NETFLIX-DNS 23.63.75.72 1842 | add NETFLIX-DNS 52.21.60.102 1843 | add NETFLIX-DNS 52.10.85.197 1844 | add NETFLIX-DNS 52.216.138.99 1845 | add NETFLIX-DNS 52.216.143.20 1846 | add NETFLIX-DNS 52.216.109.115 1847 | add NETFLIX-DNS 52.203.65.228 1848 | add NETFLIX-DNS 13.226.214.83 1849 | add NETFLIX-DNS 52.216.84.227 1850 | add NETFLIX-DNS 52.216.131.35 1851 | add NETFLIX-DNS 52.88.242.200 1852 | add NETFLIX-DNS 52.216.226.64 1853 | add NETFLIX-DNS 52.216.250.180 1854 | add NETFLIX-DNS 35.163.235.125 1855 | add NETFLIX-DNS 52.25.125.151 1856 | add NETFLIX-DNS 52.216.86.155 1857 | add NETFLIX-DNS 54.187.138.220 1858 | add NETFLIX-DNS 54.189.22.12 1859 | add NETFLIX-DNS 52.217.88.156 1860 | add NETFLIX-DNS 13.33.198.202 1861 | add NETFLIX-DNS 13.226.217.50 1862 | add NETFLIX-DNS 110.164.17.42 1863 | add NETFLIX-DNS 52.42.78.245 1864 | add NETFLIX-DNS 52.216.80.131 1865 | add NETFLIX-DNS 52.217.45.44 1866 | add NETFLIX-DNS 34.215.131.251 1867 | add NETFLIX-DNS 52.24.6.52 1868 | add NETFLIX-DNS 52.216.142.132 1869 | add NETFLIX-DNS 34.236.124.213 1870 | add NETFLIX-DNS 13.33.158.149 1871 | add NETFLIX-DNS 52.216.227.192 1872 | add NETFLIX-DNS 52.22.208.33 1873 | add NETFLIX-DNS 52.11.225.182 1874 | add NETFLIX-DNS 52.216.236.43 1875 | add NETFLIX-DNS 52.216.137.156 1876 | add NETFLIX-DNS 52.4.169.188 1877 | add NETFLIX-DNS 54.148.182.24 1878 | add NETFLIX-DNS 35.164.197.125 1879 | add NETFLIX-DNS 198.38.112.190 1880 | add NETFLIX-DNS 34.231.232.204 1881 | add NETFLIX-DNS 52.205.74.181 1882 | add NETFLIX-DNS 35.165.32.239 1883 | add NETFLIX-DNS 52.218.212.185 1884 | add NETFLIX-DNS 198.38.112.165 1885 | add NETFLIX-DNS 35.161.79.169 1886 | add NETFLIX-DNS 54.148.63.233 1887 | add NETFLIX-DNS 52.24.240.149 1888 | add NETFLIX-DNS 52.26.252.132 1889 | add NETFLIX-DNS 52.5.27.135 1890 | add NETFLIX-DNS 35.163.111.168 1891 | add NETFLIX-DNS 99.84.238.20 1892 | add NETFLIX-DNS 52.217.84.76 1893 | add NETFLIX-DNS 3.91.171.255 1894 | add NETFLIX-DNS 34.208.124.150 1895 | add NETFLIX-DNS 52.22.254.125 1896 | add NETFLIX-DNS 110.164.17.243 1897 | add NETFLIX-DNS 52.216.109.83 1898 | add NETFLIX-DNS 52.217.40.124 1899 | add NETFLIX-DNS 13.33.198.24 1900 | add NETFLIX-DNS 52.217.16.12 1901 | add NETFLIX-DNS 52.42.154.138 1902 | add NETFLIX-DNS 52.217.84.212 1903 | add NETFLIX-DNS 52.217.46.140 1904 | add NETFLIX-DNS 52.216.106.212 1905 | add NETFLIX-DNS 13.226.210.18 1906 | add NETFLIX-DNS 52.203.121.46 1907 | add NETFLIX-DNS 54.203.187.18 1908 | add NETFLIX-DNS 52.11.189.142 1909 | add NETFLIX-DNS 3.210.28.246 1910 | add NETFLIX-DNS 35.161.251.47 1911 | add NETFLIX-DNS 52.216.17.248 1912 | add NETFLIX-DNS 54.191.45.233 1913 | add NETFLIX-DNS 13.57.96.68 1914 | add NETFLIX-DNS 34.231.59.35 1915 | add NETFLIX-DNS 52.1.191.183 1916 | add NETFLIX-DNS 52.216.107.204 1917 | add NETFLIX-DNS 54.213.105.68 1918 | add NETFLIX-DNS 35.163.18.116 1919 | add NETFLIX-DNS 52.217.43.68 1920 | add NETFLIX-DNS 44.228.105.86 1921 | add NETFLIX-DNS 34.216.47.217 1922 | add NETFLIX-DNS 52.216.226.72 1923 | add NETFLIX-DNS 35.163.98.21 1924 | add NETFLIX-DNS 34.211.212.7 1925 | add NETFLIX-DNS 34.212.218.94 1926 | add NETFLIX-DNS 52.216.112.219 1927 | add NETFLIX-DNS 52.45.61.240 1928 | add NETFLIX-DNS 3.226.149.173 1929 | add NETFLIX-DNS 52.200.226.2 1930 | add NETFLIX-DNS 52.200.117.8 1931 | add NETFLIX-DNS 52.89.16.19 1932 | add NETFLIX-DNS 34.211.17.191 1933 | add NETFLIX-DNS 52.34.75.105 1934 | add NETFLIX-DNS 52.42.161.98 1935 | add NETFLIX-DNS 50.112.24.71 1936 | add NETFLIX-DNS 54.164.216.123 1937 | add NETFLIX-DNS 18.138.77.2 1938 | add NETFLIX-DNS 52.25.125.125 1939 | add NETFLIX-DNS 34.225.72.208 1940 | add NETFLIX-DNS 52.32.38.186 1941 | add NETFLIX-DNS 52.216.207.27 1942 | add NETFLIX-DNS 35.166.3.105 1943 | add NETFLIX-DNS 34.214.148.237 1944 | add NETFLIX-DNS 52.216.108.131 1945 | add NETFLIX-DNS 52.216.238.205 1946 | add NETFLIX-DNS 34.211.192.134 1947 | add NETFLIX-DNS 54.191.89.27 1948 | add NETFLIX-DNS 52.25.212.16 1949 | add NETFLIX-DNS 52.42.42.133 1950 | add NETFLIX-DNS 52.25.233.149 1951 | add NETFLIX-DNS 34.213.20.103 1952 | add NETFLIX-DNS 110.164.253.176 1953 | add NETFLIX-DNS 54.231.48.184 1954 | add NETFLIX-DNS 52.22.88.218 1955 | add NETFLIX-DNS 52.36.95.200 1956 | add NETFLIX-DNS 54.186.196.122 1957 | add NETFLIX-DNS 44.225.222.238 1958 | add NETFLIX-DNS 54.80.70.233 1959 | add NETFLIX-DNS 52.41.185.83 1960 | add NETFLIX-DNS 52.217.84.100 1961 | add NETFLIX-DNS 54.200.120.65 1962 | add NETFLIX-DNS 52.21.58.174 1963 | add NETFLIX-DNS 34.203.95.36 1964 | add NETFLIX-DNS 52.216.112.211 1965 | add NETFLIX-DNS 34.223.228.149 1966 | add NETFLIX-DNS 52.25.211.151 1967 | add NETFLIX-DNS 52.5.31.211 1968 | add NETFLIX-DNS 52.217.80.124 1969 | add NETFLIX-DNS 52.216.128.211 1970 | add NETFLIX-DNS 34.208.63.209 1971 | add NETFLIX-DNS 52.217.65.132 1972 | add NETFLIX-DNS 34.238.67.64 1973 | add NETFLIX-DNS 52.216.131.123 1974 | add NETFLIX-DNS 54.244.29.91 1975 | add NETFLIX-DNS 52.217.17.124 1976 | add NETFLIX-DNS 52.87.64.118 1977 | add NETFLIX-DNS 52.36.177.161 1978 | add NETFLIX-DNS 52.32.221.193 1979 | add NETFLIX-DNS 52.216.137.220 1980 | add NETFLIX-DNS 54.149.232.251 1981 | add NETFLIX-DNS 52.218.212.49 1982 | add NETFLIX-DNS 54.244.34.144 1983 | add NETFLIX-DNS 52.216.139.179 1984 | add NETFLIX-DNS 52.24.188.145 1985 | add NETFLIX-DNS 52.33.163.210 1986 | add NETFLIX-DNS 35.163.8.35 1987 | add NETFLIX-DNS 54.149.236.204 1988 | add NETFLIX-DNS 34.215.66.93 1989 | add NETFLIX-DNS 52.216.204.219 1990 | add NETFLIX-DNS 54.149.173.87 1991 | add NETFLIX-DNS 52.216.232.243 1992 | add NETFLIX-DNS 52.6.75.180 1993 | add NETFLIX-DNS 52.11.9.91 1994 | add NETFLIX-DNS 52.217.97.36 1995 | add NETFLIX-DNS 54.236.228.55 1996 | add NETFLIX-DNS 52.207.53.150 1997 | add NETFLIX-DNS 52.44.28.211 1998 | add NETFLIX-DNS 35.167.74.192 1999 | add NETFLIX-DNS 52.87.74.144 2000 | add NETFLIX-DNS 52.34.11.165 2001 | add NETFLIX-DNS 3.223.246.202 2002 | add NETFLIX-DNS 52.11.133.141 2003 | add NETFLIX-DNS 54.86.190.153 2004 | add NETFLIX-DNS 52.216.29.132 2005 | add NETFLIX-DNS 52.11.76.107 2006 | add NETFLIX-DNS 3.210.231.21 2007 | add NETFLIX-DNS 52.7.110.158 2008 | add NETFLIX-DNS 35.163.39.85 2009 | add NETFLIX-DNS 52.34.225.161 2010 | add NETFLIX-DNS 52.35.223.76 2011 | add NETFLIX-DNS 52.10.54.77 2012 | add NETFLIX-DNS 54.148.20.112 2013 | add NETFLIX-DNS 52.26.69.125 2014 | add NETFLIX-DNS 52.201.105.17 2015 | add NETFLIX-DNS 35.155.255.208 2016 | add NETFLIX-DNS 3.228.31.185 2017 | add NETFLIX-DNS 52.27.92.135 2018 | add NETFLIX-DNS 52.217.0.99 2019 | add NETFLIX-DNS 34.218.10.100 2020 | add NETFLIX-DNS 52.216.137.180 2021 | add NETFLIX-DNS 52.201.149.179 2022 | add NETFLIX-DNS 52.54.174.212 2023 | add NETFLIX-DNS 34.215.93.229 2024 | add NETFLIX-DNS 52.34.162.211 2025 | add NETFLIX-DNS 13.33.198.214 2026 | add NETFLIX-DNS 34.216.90.102 2027 | add NETFLIX-DNS 34.213.58.248 2028 | add NETFLIX-DNS 52.0.172.118 2029 | add NETFLIX-DNS 52.203.114.49 2030 | add NETFLIX-DNS 52.216.10.19 2031 | add NETFLIX-DNS 52.216.107.212 2032 | add NETFLIX-DNS 52.1.54.239 2033 | add NETFLIX-DNS 52.41.165.115 2034 | add NETFLIX-DNS 52.216.236.27 2035 | add NETFLIX-DNS 52.217.16.212 2036 | add NETFLIX-DNS 52.205.162.31 2037 | add NETFLIX-DNS 52.25.31.41 2038 | add NETFLIX-DNS 13.226.210.49 2039 | add NETFLIX-DNS 52.216.78.140 2040 | add NETFLIX-DNS 54.187.5.227 2041 | add NETFLIX-DNS 52.217.96.12 2042 | add NETFLIX-DNS 34.227.136.8 2043 | add NETFLIX-DNS 34.233.70.233 2044 | add NETFLIX-DNS 52.45.102.20 2045 | add NETFLIX-DNS 54.149.39.77 2046 | add NETFLIX-DNS 52.216.187.51 2047 | add NETFLIX-DNS 52.37.216.77 2048 | add NETFLIX-DNS 52.10.41.182 2049 | add NETFLIX-DNS 52.217.32.180 2050 | add NETFLIX-DNS 34.213.209.206 2051 | add NETFLIX-DNS 52.216.230.91 2052 | add NETFLIX-DNS 54.191.101.74 2053 | add NETFLIX-DNS 35.166.48.236 2054 | add NETFLIX-DNS 52.216.88.67 2055 | add NETFLIX-DNS 34.236.220.111 2056 | add NETFLIX-DNS 34.194.15.210 2057 | add NETFLIX-DNS 54.213.32.203 2058 | add NETFLIX-DNS 34.197.47.36 2059 | add NETFLIX-DNS 52.216.95.179 2060 | add NETFLIX-DNS 52.216.114.131 2061 | add NETFLIX-DNS 52.216.17.24 2062 | add NETFLIX-DNS 52.204.88.191 2063 | add NETFLIX-DNS 52.216.77.166 2064 | add NETFLIX-DNS 35.165.195.95 2065 | add NETFLIX-DNS 52.27.165.87 2066 | add NETFLIX-DNS 52.216.102.107 2067 | add NETFLIX-DNS 52.71.110.84 2068 | add NETFLIX-DNS 52.41.223.229 2069 | add NETFLIX-DNS 35.162.55.254 2070 | add NETFLIX-DNS 34.226.158.65 2071 | add NETFLIX-DNS 54.201.57.42 2072 | add NETFLIX-DNS 3.225.104.129 2073 | add NETFLIX-DNS 52.37.168.202 2074 | add NETFLIX-DNS 34.213.128.131 2075 | add NETFLIX-DNS 52.216.133.67 2076 | add NETFLIX-DNS 35.163.233.215 2077 | add NETFLIX-DNS 52.36.157.158 2078 | add NETFLIX-DNS 52.216.27.4 2079 | add NETFLIX-DNS 54.200.228.116 2080 | add NETFLIX-DNS 52.216.146.139 2081 | add NETFLIX-DNS 52.216.242.156 2082 | add NETFLIX-DNS 52.218.217.153 2083 | add NETFLIX-DNS 52.216.137.52 2084 | add NETFLIX-DNS 35.160.5.87 2085 | add NETFLIX-DNS 50.112.150.76 2086 | add NETFLIX-DNS 3.0.122.162 2087 | add NETFLIX-DNS 52.216.245.68 2088 | add NETFLIX-DNS 35.162.4.153 2089 | add NETFLIX-DNS 52.217.84.148 2090 | add NETFLIX-DNS 52.216.143.36 2091 | add NETFLIX-DNS 54.210.34.108 2092 | add NETFLIX-DNS 34.227.230.104 2093 | add NETFLIX-DNS 52.216.249.252 2094 | add NETFLIX-DNS 35.164.140.75 2095 | add NETFLIX-DNS 52.39.232.255 2096 | add NETFLIX-DNS 52.216.1.152 2097 | add NETFLIX-DNS 52.216.21.155 2098 | add NETFLIX-DNS 52.25.199.15 2099 | add NETFLIX-DNS 52.10.91.129 2100 | add NETFLIX-DNS 34.210.13.152 2101 | add NETFLIX-DNS 34.205.79.68 2102 | add NETFLIX-DNS 35.160.248.179 2103 | add NETFLIX-DNS 54.69.122.171 2104 | add NETFLIX-DNS 52.36.212.125 2105 | add NETFLIX-DNS 52.4.112.177 2106 | add NETFLIX-DNS 34.211.2.124 2107 | add NETFLIX-DNS 52.43.96.17 2108 | add NETFLIX-DNS 52.217.81.76 2109 | add NETFLIX-DNS 52.217.9.172 2110 | add NETFLIX-DNS 34.213.252.45 2111 | add NETFLIX-DNS 52.42.37.125 2112 | add NETFLIX-DNS 52.2.132.21 2113 | add NETFLIX-DNS 52.39.106.140 2114 | add NETFLIX-DNS 35.168.238.225 2115 | add NETFLIX-DNS 34.215.34.37 2116 | add NETFLIX-DNS 52.217.17.156 2117 | add NETFLIX-DNS 35.170.230.74 2118 | add NETFLIX-DNS 34.210.53.186 2119 | add NETFLIX-DNS 99.86.181.37 2120 | add NETFLIX-DNS 52.20.37.31 2121 | add NETFLIX-DNS 35.161.122.185 2122 | add NETFLIX-DNS 52.216.108.83 2123 | add NETFLIX-DNS 52.216.141.204 2124 | add NETFLIX-DNS 34.208.23.215 2125 | add NETFLIX-DNS 52.41.209.251 2126 | add NETFLIX-DNS 52.217.37.156 2127 | add NETFLIX-DNS 52.20.132.200 2128 | add NETFLIX-DNS 52.42.228.219 2129 | add NETFLIX-DNS 34.228.209.57 2130 | add NETFLIX-DNS 13.226.210.47 2131 | add NETFLIX-DNS 34.209.199.230 2132 | add NETFLIX-DNS 52.38.69.105 2133 | add NETFLIX-DNS 52.216.170.163 2134 | add NETFLIX-DNS 35.164.67.16 2135 | add NETFLIX-DNS 13.226.214.41 2136 | add NETFLIX-DNS 52.88.90.229 2137 | add NETFLIX-DNS 52.37.36.252 2138 | add NETFLIX-DNS 52.216.93.11 2139 | add NETFLIX-DNS 3.224.216.59 2140 | add NETFLIX-DNS 35.172.255.202 2141 | add NETFLIX-DNS 13.225.143.75 2142 | add NETFLIX-DNS 3.221.185.152 2143 | add NETFLIX-DNS 34.223.116.186 2144 | add NETFLIX-DNS 52.217.9.84 2145 | add NETFLIX-DNS 52.217.12.36 2146 | add NETFLIX-DNS 54.191.1.237 2147 | add NETFLIX-DNS 35.163.6.39 2148 | add NETFLIX-DNS 52.25.59.129 2149 | add NETFLIX-DNS 54.68.147.249 2150 | add NETFLIX-DNS 52.45.247.120 2151 | add NETFLIX-DNS 35.155.253.79 2152 | add NETFLIX-DNS 52.216.108.227 2153 | add NETFLIX-DNS 52.216.143.180 2154 | add NETFLIX-DNS 52.216.204.235 2155 | add NETFLIX-DNS 52.76.4.170 2156 | add NETFLIX-DNS 34.226.115.169 2157 | add NETFLIX-DNS 54.201.223.234 2158 | add NETFLIX-DNS 52.25.214.158 2159 | add NETFLIX-DNS 52.216.250.68 2160 | add NETFLIX-DNS 3.91.171.248 2161 | add NETFLIX-DNS 52.216.246.60 2162 | add NETFLIX-DNS 52.6.119.63 2163 | add NETFLIX-DNS 54.231.40.226 2164 | add NETFLIX-DNS 52.24.67.158 2165 | add NETFLIX-DNS 52.216.147.77 2166 | add NETFLIX-DNS 13.33.199.11 2167 | add NETFLIX-DNS 52.216.147.140 2168 | add NETFLIX-DNS 35.166.246.158 2169 | add NETFLIX-DNS 52.43.77.218 2170 | add NETFLIX-DNS 35.166.70.88 2171 | add NETFLIX-DNS 52.217.17.140 2172 | add NETFLIX-DNS 50.112.196.120 2173 | add NETFLIX-DNS 52.2.19.37 2174 | add NETFLIX-DNS 52.218.194.1 2175 | add NETFLIX-DNS 52.0.173.247 2176 | add NETFLIX-DNS 52.36.127.181 2177 | add NETFLIX-DNS 52.216.12.132 2178 | add NETFLIX-DNS 54.200.142.15 2179 | add NETFLIX-DNS 34.210.104.129 2180 | add NETFLIX-DNS 52.71.43.251 2181 | add NETFLIX-DNS 52.216.140.44 2182 | add NETFLIX-DNS 54.213.112.178 2183 | add NETFLIX-DNS 54.148.179.25 2184 | add NETFLIX-DNS 52.89.185.104 2185 | add NETFLIX-DNS 52.7.252.119 2186 | add NETFLIX-DNS 52.216.171.163 2187 | add NETFLIX-DNS 52.216.236.251 2188 | add NETFLIX-DNS 52.218.225.121 2189 | add NETFLIX-DNS 34.236.120.119 2190 | add NETFLIX-DNS 52.217.80.60 2191 | add NETFLIX-DNS 52.205.225.12 2192 | add NETFLIX-DNS 52.218.177.1 2193 | add NETFLIX-DNS 52.217.36.172 2194 | add NETFLIX-DNS 34.228.124.30 2195 | add NETFLIX-DNS 52.216.239.99 2196 | add NETFLIX-DNS 54.210.245.62 2197 | add NETFLIX-DNS 52.23.109.11 2198 | add NETFLIX-DNS 34.206.103.111 2199 | add NETFLIX-DNS 52.216.84.139 2200 | add NETFLIX-DNS 52.217.34.4 2201 | add NETFLIX-DNS 35.161.8.151 2202 | add NETFLIX-DNS 54.191.21.59 2203 | add NETFLIX-DNS 52.216.112.157 2204 | add NETFLIX-DNS 34.206.236.142 2205 | add NETFLIX-DNS 52.216.251.52 2206 | add NETFLIX-DNS 54.164.18.206 2207 | add NETFLIX-DNS 13.226.254.111 2208 | add NETFLIX-DNS 52.35.174.195 2209 | add NETFLIX-DNS 52.216.112.171 2210 | add NETFLIX-DNS 52.10.195.81 2211 | add NETFLIX-DNS 52.216.243.84 2212 | add NETFLIX-DNS 52.86.242.76 2213 | add NETFLIX-DNS 52.34.146.172 2214 | add NETFLIX-DNS 52.33.182.161 2215 | add NETFLIX-DNS 3.217.174.117 2216 | add NETFLIX-DNS 52.39.24.238 2217 | add NETFLIX-DNS 54.88.157.85 2218 | add NETFLIX-DNS 34.200.160.253 2219 | add NETFLIX-DNS 52.10.251.82 2220 | add NETFLIX-DNS 34.213.21.195 2221 | add NETFLIX-DNS 44.233.178.27 2222 | add NETFLIX-DNS 52.45.204.174 2223 | add NETFLIX-DNS 52.207.89.236 2224 | add NETFLIX-DNS 52.218.213.161 2225 | add NETFLIX-DNS 35.162.60.231 2226 | add NETFLIX-DNS 52.216.230.211 2227 | add NETFLIX-DNS 52.216.133.11 2228 | add NETFLIX-DNS 52.217.88.220 2229 | add NETFLIX-DNS 52.20.246.12 2230 | add NETFLIX-DNS 52.27.126.245 2231 | add NETFLIX-DNS 54.213.216.216 2232 | add NETFLIX-DNS 54.208.217.253 2233 | add NETFLIX-DNS 34.210.204.114 2234 | add NETFLIX-DNS 52.216.93.155 2235 | add NETFLIX-DNS 52.216.106.204 2236 | add NETFLIX-DNS 52.54.157.75 2237 | add NETFLIX-DNS 52.216.8.251 2238 | add NETFLIX-DNS 54.187.233.23 2239 | add NETFLIX-DNS 99.84.238.81 2240 | add NETFLIX-DNS 3.217.176.129 2241 | add NETFLIX-DNS 52.216.136.107 2242 | add NETFLIX-DNS 52.33.158.98 2243 | add NETFLIX-DNS 52.216.141.28 2244 | add NETFLIX-DNS 3.85.251.231 2245 | add NETFLIX-DNS 52.216.238.123 2246 | add NETFLIX-DNS 52.89.190.93 2247 | add NETFLIX-DNS 34.237.157.76 2248 | add NETFLIX-DNS 52.206.160.171 2249 | add NETFLIX-DNS 52.200.112.96 2250 | add NETFLIX-DNS 172.232.15.179 2251 | add NETFLIX-DNS 52.10.215.213 2252 | add NETFLIX-DNS 52.217.96.116 2253 | add NETFLIX-DNS 52.218.197.105 2254 | add NETFLIX-DNS 54.148.175.240 2255 | add NETFLIX-DNS 34.237.170.150 2256 | add NETFLIX-DNS 13.226.217.129 2257 | add NETFLIX-DNS 34.231.12.232 2258 | add NETFLIX-DNS 52.43.102.20 2259 | add NETFLIX-DNS 54.191.18.150 2260 | add NETFLIX-DNS 44.229.82.134 2261 | add NETFLIX-DNS 54.236.197.249 2262 | add NETFLIX-DNS 52.217.32.244 2263 | add NETFLIX-DNS 52.42.109.58 2264 | add NETFLIX-DNS 52.5.49.104 2265 | add NETFLIX-DNS 52.72.50.217 2266 | add NETFLIX-DNS 34.212.104.252 2267 | add NETFLIX-DNS 54.68.104.85 2268 | add NETFLIX-DNS 54.187.164.64 2269 | add NETFLIX-DNS 54.67.113.158 2270 | add NETFLIX-DNS 34.213.209.143 2271 | add NETFLIX-DNS 34.213.9.141 2272 | add NETFLIX-DNS 35.167.155.191 2273 | add NETFLIX-DNS 35.162.15.102 2274 | add NETFLIX-DNS 18.210.70.194 2275 | add NETFLIX-DNS 52.41.79.33 2276 | add NETFLIX-DNS 198.38.112.163 2277 | add NETFLIX-DNS 34.210.174.222 2278 | add NETFLIX-DNS 18.233.43.41 2279 | add NETFLIX-DNS 52.54.204.196 2280 | add NETFLIX-DNS 52.216.171.91 2281 | add NETFLIX-DNS 54.203.164.210 2282 | add NETFLIX-DNS 52.216.225.203 2283 | add NETFLIX-DNS 52.34.158.161 2284 | add NETFLIX-DNS 54.244.29.108 2285 | add NETFLIX-DNS 52.41.183.208 2286 | add NETFLIX-DNS 52.37.42.126 2287 | add NETFLIX-DNS 54.80.39.215 2288 | add NETFLIX-DNS 54.201.7.243 2289 | add NETFLIX-DNS 52.7.110.89 2290 | add NETFLIX-DNS 54.149.187.246 2291 | add NETFLIX-DNS 18.136.184.93 2292 | add NETFLIX-DNS 52.39.68.56 2293 | add NETFLIX-DNS 52.216.225.11 2294 | add NETFLIX-DNS 35.167.194.144 2295 | add NETFLIX-DNS 52.216.82.128 2296 | add NETFLIX-DNS 54.213.100.155 2297 | add NETFLIX-DNS 52.216.81.200 2298 | add NETFLIX-DNS 35.162.30.170 2299 | add NETFLIX-DNS 52.216.110.227 2300 | add NETFLIX-DNS 52.54.15.52 2301 | add NETFLIX-DNS 54.148.94.175 2302 | add NETFLIX-DNS 52.216.226.216 2303 | add NETFLIX-DNS 52.216.28.140 2304 | add NETFLIX-DNS 52.6.158.84 2305 | add NETFLIX-DNS 35.171.211.91 2306 | add NETFLIX-DNS 52.41.1.243 2307 | add NETFLIX-DNS 52.11.227.30 2308 | add NETFLIX-DNS 52.216.108.123 2309 | add NETFLIX-DNS 52.24.234.11 2310 | add NETFLIX-DNS 52.89.83.216 2311 | add NETFLIX-DNS 52.52.208.22 2312 | add NETFLIX-DNS 35.160.18.14 2313 | add NETFLIX-DNS 52.200.218.240 2314 | add NETFLIX-DNS 52.216.17.56 2315 | add NETFLIX-DNS 52.200.187.74 2316 | add NETFLIX-DNS 52.39.200.39 2317 | add NETFLIX-DNS 198.38.112.161 2318 | add NETFLIX-DNS 34.202.125.76 2319 | add NETFLIX-DNS 35.166.140.196 2320 | add NETFLIX-DNS 52.217.39.172 2321 | add NETFLIX-DNS 35.164.166.245 2322 | add NETFLIX-DNS 54.148.234.196 2323 | add NETFLIX-DNS 52.216.187.83 2324 | add NETFLIX-DNS 54.173.217.51 2325 | add NETFLIX-DNS 52.86.84.186 2326 | add NETFLIX-DNS 34.238.8.137 2327 | add NETFLIX-DNS 52.216.10.123 2328 | add NETFLIX-DNS 35.162.94.83 2329 | add NETFLIX-DNS 52.201.134.188 2330 | add NETFLIX-DNS 54.149.232.167 2331 | add NETFLIX-DNS 52.23.116.232 2332 | add NETFLIX-DNS 34.216.97.202 2333 | add NETFLIX-DNS 34.225.210.36 2334 | add NETFLIX-DNS 52.37.34.51 2335 | add NETFLIX-DNS 52.216.163.139 2336 | add NETFLIX-DNS 52.216.237.204 2337 | add NETFLIX-DNS 34.217.152.74 2338 | add NETFLIX-DNS 34.211.34.249 2339 | add NETFLIX-DNS 13.33.158.44 2340 | add NETFLIX-DNS 52.32.245.56 2341 | add NETFLIX-DNS 54.191.231.116 2342 | add NETFLIX-DNS 52.25.153.180 2343 | add NETFLIX-DNS 54.190.250.198 2344 | add NETFLIX-DNS 35.162.45.64 2345 | add NETFLIX-DNS 34.205.200.146 2346 | add NETFLIX-DNS 52.87.117.69 2347 | add NETFLIX-DNS 52.1.124.170 2348 | add NETFLIX-DNS 52.3.175.140 2349 | add NETFLIX-DNS 52.0.69.147 2350 | add NETFLIX-DNS 52.72.166.101 2351 | add NETFLIX-DNS 34.211.72.66 2352 | add NETFLIX-DNS 52.216.113.171 2353 | add NETFLIX-DNS 54.203.225.28 2354 | add NETFLIX-DNS 35.167.112.100 2355 | add NETFLIX-DNS 34.210.59.243 2356 | add NETFLIX-DNS 52.216.107.180 2357 | add NETFLIX-DNS 52.216.131.99 2358 | add NETFLIX-DNS 34.235.177.97 2359 | add NETFLIX-DNS 52.33.42.200 2360 | add NETFLIX-DNS 34.231.15.171 2361 | add NETFLIX-DNS 52.219.80.208 2362 | add NETFLIX-DNS 52.23.116.34 2363 | add NETFLIX-DNS 52.216.96.187 2364 | add NETFLIX-DNS 34.208.55.230 2365 | add NETFLIX-DNS 52.11.85.98 2366 | add NETFLIX-DNS 52.32.124.153 2367 | add NETFLIX-DNS 34.192.7.170 2368 | add NETFLIX-DNS 35.153.64.242 2369 | add NETFLIX-DNS 35.166.49.54 2370 | add NETFLIX-DNS 52.207.177.211 2371 | add NETFLIX-DNS 34.216.247.133 2372 | add NETFLIX-DNS 52.200.32.126 2373 | add NETFLIX-DNS 50.112.88.56 2374 | add NETFLIX-DNS 54.83.178.203 2375 | add NETFLIX-DNS 52.37.160.223 2376 | add NETFLIX-DNS 35.165.2.218 2377 | add NETFLIX-DNS 52.11.95.208 2378 | add NETFLIX-DNS 52.216.248.140 2379 | add NETFLIX-DNS 52.41.26.87 2380 | add NETFLIX-DNS 52.10.238.187 2381 | add NETFLIX-DNS 44.229.140.192 2382 | add NETFLIX-DNS 34.210.41.185 2383 | add NETFLIX-DNS 52.217.81.84 2384 | add NETFLIX-DNS 52.32.205.119 2385 | add NETFLIX-DNS 52.216.90.93 2386 | add NETFLIX-DNS 34.217.160.161 2387 | add NETFLIX-DNS 52.216.97.3 2388 | add NETFLIX-DNS 52.216.104.19 2389 | add NETFLIX-DNS 35.164.19.86 2390 | add NETFLIX-DNS 52.216.89.204 2391 | add NETFLIX-DNS 3.232.171.79 2392 | add NETFLIX-DNS 34.215.18.221 2393 | add NETFLIX-DNS 52.216.237.219 2394 | add NETFLIX-DNS 52.202.70.119 2395 | add NETFLIX-DNS 52.24.27.240 2396 | add NETFLIX-DNS 52.216.165.251 2397 | add NETFLIX-DNS 34.211.31.156 2398 | add NETFLIX-DNS 54.68.70.80 2399 | add NETFLIX-DNS 52.203.173.113 2400 | add NETFLIX-DNS 54.218.5.146 2401 | add NETFLIX-DNS 54.86.15.147 2402 | add NETFLIX-DNS 52.86.201.160 2403 | add NETFLIX-DNS 99.86.181.38 2404 | add NETFLIX-DNS 52.40.39.202 2405 | add NETFLIX-DNS 52.40.181.51 2406 | add NETFLIX-DNS 52.216.239.107 2407 | add NETFLIX-DNS 52.216.9.83 2408 | add NETFLIX-DNS 52.216.104.35 2409 | add NETFLIX-DNS 54.173.228.163 2410 | add NETFLIX-DNS 52.35.182.245 2411 | add NETFLIX-DNS 52.33.16.86 2412 | add NETFLIX-DNS 52.206.224.152 2413 | add NETFLIX-DNS 52.216.138.195 2414 | add NETFLIX-DNS 52.216.169.187 2415 | add NETFLIX-DNS 54.231.82.34 2416 | add NETFLIX-DNS 52.217.82.85 2417 | add NETFLIX-DNS 52.216.143.196 2418 | add NETFLIX-DNS 52.36.70.210 2419 | add NETFLIX-DNS 52.216.137.188 2420 | add NETFLIX-DNS 44.232.27.16 2421 | add NETFLIX-DNS 54.149.232.47 2422 | add NETFLIX-DNS 54.69.217.131 2423 | add NETFLIX-DNS 34.208.144.145 2424 | add NETFLIX-DNS 52.217.37.180 2425 | add NETFLIX-DNS 52.10.83.101 2426 | add NETFLIX-DNS 52.201.117.39 2427 | add NETFLIX-DNS 35.166.90.73 2428 | add NETFLIX-DNS 52.6.79.230 2429 | add NETFLIX-DNS 34.228.48.51 2430 | add NETFLIX-DNS 198.38.112.191 2431 | add NETFLIX-DNS 52.216.95.59 2432 | add NETFLIX-DNS 52.26.247.203 2433 | add NETFLIX-DNS 52.42.41.159 2434 | add NETFLIX-DNS 54.186.120.37 2435 | add NETFLIX-DNS 34.235.243.122 2436 | add NETFLIX-DNS 107.23.113.69 2437 | add NETFLIX-DNS 52.72.97.1 2438 | add NETFLIX-DNS 52.10.170.249 2439 | add NETFLIX-DNS 52.216.142.100 2440 | add NETFLIX-DNS 52.216.110.3 2441 | add NETFLIX-DNS 52.41.1.56 2442 | add NETFLIX-DNS 34.232.250.248 2443 | add NETFLIX-DNS 52.216.141.220 2444 | add NETFLIX-DNS 52.55.162.107 2445 | add NETFLIX-DNS 34.233.63.138 2446 | add NETFLIX-DNS 34.231.219.195 2447 | add NETFLIX-DNS 52.217.37.244 2448 | add NETFLIX-DNS 54.209.231.45 2449 | add NETFLIX-DNS 35.166.77.3 2450 | add NETFLIX-DNS 35.166.129.34 2451 | add NETFLIX-DNS 52.34.15.160 2452 | add NETFLIX-DNS 34.235.74.168 2453 | add NETFLIX-DNS 52.11.238.124 2454 | add NETFLIX-DNS 52.207.91.135 2455 | add NETFLIX-DNS 52.43.39.147 2456 | add NETFLIX-DNS 52.216.233.155 2457 | add NETFLIX-DNS 52.217.86.6 2458 | add NETFLIX-DNS 52.202.120.85 2459 | add NETFLIX-DNS 34.206.137.106 2460 | add NETFLIX-DNS 34.210.239.225 2461 | add NETFLIX-DNS 52.22.161.82 2462 | add NETFLIX-DNS 54.164.207.213 2463 | add NETFLIX-DNS 3.94.58.239 2464 | add NETFLIX-DNS 35.165.95.135 2465 | add NETFLIX-DNS 52.216.29.68 2466 | add NETFLIX-DNS 52.216.236.219 2467 | add NETFLIX-DNS 52.216.25.28 2468 | add NETFLIX-DNS 54.148.229.18 2469 | add NETFLIX-DNS 34.218.143.9 2470 | add NETFLIX-DNS 52.42.14.5 2471 | add NETFLIX-DNS 52.25.251.96 2472 | add NETFLIX-DNS 54.208.250.186 2473 | add NETFLIX-DNS 52.217.80.12 2474 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Asuswrt-Merlin-Linux-Shell-Scripts 2 | Miscellaneous Linux Shell Scripts developed for Asuswrt-Merlin firmware 3 | 4 | # profile.add 5 | 6 | profile.add adds environment variables when a user logs in over an SSH session. This is a good place to create command line short cuts or custom commands that you can run from an SSH command line. 7 | 8 | #### Command Line Short Cuts 9 | Usage: ```help``` 10 | 11 | ``` 12 | Command List: 13 | 14 | Chk_ADNS List OpenVPN DNS Settings 15 | clients List hostname, IP address and MAC address for LAN clients 16 | js cd /jffs/scripts 17 | jc cd /jffs/configs 18 | ld cd /opt/var/log 19 | liststats List number of entries in each IPSET list 20 | listiface List status of WAN and OpenVPN interfaces 21 | MatchIP Check IP against IPSET lists to see if the IP address exists 22 | Usage: MactchIP 111.222.333.444 23 | purge_routes Purge policy routing rules 24 | routes Alternative to 'ip routes' command 25 | tree Similar to the Unix 'tree' command to list directories 26 | ltree List directories and files in each directory 27 | ``` 28 | 29 | ### profile.add Installation 30 | ```` 31 | /usr/sbin/curl --retry 3 "https://raw.githubusercontent.com/Xentrk/Asuswrt-Merlin-Linux-Shell-Scripts/master/profile.add" -o "/jffs/configs/profile.add" 32 | ```` 33 | You must open up a new SSH session to run the commands. 34 | 35 | # Chk_ADNS.sh 36 | 37 | Displays WAN and OpenVPN Interfaces and their connectivity status. In addition, the script will check if the router uses the ad blocking software called [Diversion](https://diversion.ch). If Diversion is installed, the script will examine the **Accept DNS Configuration** OpenVPN client setting for active OpenVPN clients. 38 | 39 | If **Accept DNS Exclusive** is set to **Exclusive** and **Redirect Internet Traffic** is set to **Policy Rules** or 40 | **Policy Rules (Strict)**, instruct the user that Diversion will not work over the VPN tunnel and provide instructions for the work-around solution. 41 | 42 | ### Chk_ADNS.sh Installation 43 | ```` 44 | /usr/sbin/curl --retry 3 "https://raw.githubusercontent.com/Xentrk/Asuswrt-Merlin-Linux-Shell-Scripts/master/Chk_ADNS.sh" -o "/jffs/scripts/Chk_ADNS.sh" && chmod 755 /jffs/scripts/Chk_ADNS.sh && sh /jffs/scripts/Chk_ADNS.sh 45 | ```` 46 | 47 | # dhcpstaticlist.sh 48 | 49 | The 384 code base limits the total length of dhcp_staticlist to 2999 characters. As a result, the update of dhcp_staticlist will fail if it exceeds the 2999 character limit. A workaround to the size limit is to manually configure dhcp static leases in dnsmasq instead of using the Web GUI. Or, do that for just a few to reduce the 2999 character limit used by the Web GUI. In Ausswrt-Merlin, add the dhcp static leases to **/jffs/configs/dnsmasq.conf.add**. The format is below. 50 | 51 | ```` 52 | dhcp-host=49:EF:0C:24:7F:16,D-Link-AP,192.168.2.10,1440 53 | dhcp-host=11:20:AE:5E:86:63,Security-Camera-DVR,192.168.2.200,1440 54 | dhcp-host=94:C9:B2:5D:F5:04,D-Link_Switch,192.168.2.201,1440 55 | ```` 56 | 57 | 1440 minutes is the default lease time. Make sure to disable **Manual Assignment** of DHCP leases on the LAN page. Then, reboot the router for the settings to take effect. 58 | 59 | **dhcpstaticlist.sh** is a helpful utility script to manage DHCP static leases. The script displays a menu with the following functions: 60 | 61 | 1. Save nvram dhcp_staticlist and dhcp_hostnames to /opt/tmp. This will allow you to restore the values after performing a factory reset. 62 | 63 | 2. Restore nvram dhcp_staticlist and dhcp_hostnames from /opt/tmp/. 64 | 65 | 3. Preview dhcp_staticlist and dhcp_hostnames in dnsmasq format. 66 | 67 | 4. Append Output DHCP Static List to /jffs/configs/dnsmasq.conf.add & Disable Manual Assignment in the WAN GUI. You will then be prompted to reboot the router to have the settings take effect. 68 | 69 | 5. Disable DHCP Manual Assignment. 70 | 71 | 6. Enable DHCP Manual Assignment. 72 | 73 | 7. Backup nvram dhcp_staticlist and dhcp_hostnames to /opt/tmp/ and clear nvram values. 74 | 75 | 8. Display character size of dhcp_staticlist and dhcp_hostnames. 76 | 77 | ### dhcpstaticlist.sh Installation 78 | ```` 79 | /usr/sbin/curl --retry 3 "https://raw.githubusercontent.com/Xentrk/Asuswrt-Merlin-Linux-Shell-Scripts/master/dhcpstaticlist.sh" -o "/jffs/scripts/dhcpstaticlist.sh" && chmod 755 /jffs/scripts/dhcpstaticlist.sh && sh /jffs/scripts/dhcpstaticlist.sh 80 | ```` 81 | # wan-event script 82 | Firmware version 384.15 introduced the /jffs/scripts/wan-event script. 83 | 84 | The first parameter passed to **wan-event** will be the WAN unit (0 for first WAN, 1 for secondary). The second parameter passed to **wan-event** will be a string describing the type of event (init, connected, etc...). A wan-event of type "connected" will be identical to when the original wan-start script was being run. **wan-start** should be considered deprecated and will be removed in a future release. 85 | 86 | ``` 87 | wan-event {0 | 1} {connecting | connected | disconnected | init | stopped | stopping } 88 | ``` 89 | Example script names run by wan-event: 90 | 91 | wan0-stopping, wan0-stopped, wan0-connected, wan0-disconnected, wan0-init, wan0-stopped, wan0-stopping 92 | 93 | ### wan-event Installation 94 | ```` 95 | /usr/sbin/curl --retry 3 "https://raw.githubusercontent.com/Xentrk/Asuswrt-Merlin-Linux-Shell-Scripts/master/wan-event" -o "/jffs/scripts/wan-event" && chmod 755 /jffs/scripts/wan-event 96 | ```` 97 | -------------------------------------------------------------------------------- /dhcpstaticlist.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | #################################################################################################### 3 | # Script: dhcpstaticlist.sh 4 | # Original Author: Xentrk 5 | # Last Updated Date: 4-January-2019 6 | # Compatible with 384.14 7 | # Version 2.0.7 8 | # 9 | # Description: 10 | # Helpful utility to 11 | # 1) Save nvram dhcp_staticlist and dhcp_hostnames to /opt/tmp. This will allow you to restore the values after performing a factory reset. 12 | # 2) Restore nvram dhcp_staticlist and dhcp_hostnames from /opt/tmp/. 13 | # 3) PPreview dhcp_staticlist and dhcp_hostnames in dnsmasq format 14 | # 4) Append Output DHCP Static List to /jffs/configs/dnsmasq.conf.add & Disable Manual Assignment in the WAN GUI. You will then be prompted to reboot the router to have the settings take effect. 15 | # 5) Disable DHCP Manual Assignment 16 | # 6) Enable DHCP Manual Assignment 17 | # 7) Backup nvram dhcp_staticlist and dhcp_hostnames to /opt/tmp/ and clear nvram values. 18 | # 8) Display character size of dhcp_staticlist and dhcp_hostnames 19 | # 20 | #################################################################################################### 21 | 22 | # Uncomment for debugging 23 | #set -x 24 | 25 | COLOR_WHITE='\033[0m' 26 | COLOR_GREEN='\e[0;32m' 27 | DHCP_STATICLIST="/opt/tmp/dhcp_staticlist.txt" 28 | DHCP_HOSTNAMES="/opt/tmp/dhcp_hostnames.txt" 29 | MODEL=$(nvram get model) 30 | 31 | Menu_DHCP_Staticlist() { 32 | 33 | clear 34 | 35 | while true; do 36 | printf '\n\nUse this utility to save or restore dhcp_staticlist and dhcp_hostnames nvram values\n\n' 37 | printf '%b[1]%b - Save nvram dhcp_staticlist and dhcp_hostnames to /opt/tmp/\n' "${COLOR_GREEN}" "${COLOR_WHITE}" 38 | printf '%b[2]%b - Restore nvram dhcp_staticlist and dhcp_hostnames from /opt/tmp/\n' "${COLOR_GREEN}" "${COLOR_WHITE}" 39 | printf '%b[3]%b - Preview dhcp_staticlist and dhcp_hostnames in dnsmasq format\n' "${COLOR_GREEN}" "${COLOR_WHITE}" 40 | printf '%b[4]%b - Append dhcp_staticlist and dhcp_hostnames to dnsmasq.conf.add & Disable DHCP Manual Assignment\n' "${COLOR_GREEN}" "${COLOR_WHITE}" 41 | printf '%b[5]%b - Disable DHCP Manual Assignment\n' "${COLOR_GREEN}" "${COLOR_WHITE}" 42 | printf '%b[6]%b - Enable DHCP Manual Assignment\n' "${COLOR_GREEN}" "${COLOR_WHITE}" 43 | printf '%b[7]%b - Backup nvram dhcp_staticlist and dhcp_hostnames to /opt/tmp/ and clear nvram values\n' "${COLOR_GREEN}" "${COLOR_WHITE}" 44 | printf '%b[8]%b - Display character size of dhcp_staticlist and dhcp_hostnames (2999 is the limit)\n' "${COLOR_GREEN}" "${COLOR_WHITE}" 45 | printf '%b[e]%b - Exit\n' "${COLOR_GREEN}" "${COLOR_WHITE}" 46 | echo 47 | printf "==> " 48 | read -r option 49 | echo 50 | case "$option" in 51 | 1) 52 | Save_DHCP_Staticlist 53 | Save_DHCP_Hostnames 54 | echo 55 | echo "Press enter to continue" 56 | read -r 57 | Menu_DHCP_Staticlist 58 | break 59 | ;; 60 | 2) 61 | Restore_DHCP_Staticlist 62 | Restore_DHCP_Hostnames 63 | echo 64 | echo "Press enter to continue" 65 | read -r 66 | Menu_DHCP_Staticlist 67 | break 68 | ;; 69 | 3) 70 | Save_Dnsmasq_Format 71 | echo 72 | echo "Press enter to continue" 73 | read -r 74 | Menu_DHCP_Staticlist 75 | break 76 | ;; 77 | 4) 78 | printf '\n' #add return in case no blank line exists at end of file 79 | echo " " >>/jffs/configs/dnsmasq.conf.add 80 | Save_Dnsmasq_Format >>/jffs/configs/dnsmasq.conf.add 81 | nvram set dhcp_static_x=0 82 | nvram commit 83 | echo "In order for the DHCP static reservations to take affect" 84 | echo "you must reboot the router. Do so now?" 85 | echo 86 | echo "[y] - Yes" 87 | echo "[n] - No" 88 | echo 89 | printf "==> " 90 | read -r menu_option 91 | 92 | case "$menu_option" in 93 | y) 94 | reboot 95 | ;; 96 | n) 97 | break 98 | ;; 99 | *) 100 | echo "[*] $option Isn't An Option!" 101 | ;; 102 | esac 103 | 104 | echo 105 | echo "Press enter to continue" 106 | read -r 107 | Menu_DHCP_Staticlist 108 | break 109 | ;; 110 | 5) 111 | nvram set dhcp_static_x=0 112 | nvram commit 113 | echo 114 | echo "Press enter to continue" 115 | read -r 116 | Menu_DHCP_Staticlist 117 | break 118 | ;; 119 | 6) 120 | nvram set dhcp_static_x=1 121 | nvram commit 122 | echo 123 | echo "Press enter to continue" 124 | read -r 125 | Menu_DHCP_Staticlist 126 | break 127 | ;; 128 | 7) 129 | Save_DHCP_Staticlist 130 | Save_DHCP_Hostnames 131 | nvram unset dhcp_staticlist 132 | nvram unset dhcp_hostnames 133 | nvram set dhcp_static_x=0 134 | nvram commit 135 | echo 136 | echo "Press enter to continue" 137 | read -r 138 | Menu_DHCP_Staticlist 139 | break 140 | ;; 141 | 8) 142 | if [ -s /jffs/nvram/dhcp_staticlist ]; then # HND Routers store here 143 | wc_staticlist=$(wc -m /jffs/nvram/dhcp_staticlist | awk '{print $1}') 144 | # wc appears to count line return or extra line? 145 | wc_staticlist=$((wc_staticlist - 1)) 146 | else 147 | wc_staticlist=$(nvram get dhcp_staticlist | wc -m) 148 | # wc appears to count line return or extra line? 149 | wc_staticlist=$((wc_staticlist - 1)) 150 | fi 151 | 152 | echo 153 | echo "The current character size of dhcp_staticlist is: $wc_staticlist" 154 | echo 155 | 156 | if [ -s /jffs/nvram/dhcp_hostnames ]; then # HND Routers store here 157 | wc_hostnames=$(wc -m /jffs/nvram/dhcp_hostnames | awk '{print $1}') 158 | # wc appears to count line return or extra line? 159 | wc_hostnames=$((wc_hostnames - 1)) 160 | else 161 | wc_hostnames=$(nvram get dhcp_hostnames | wc -m) 162 | # wc appears to count line return or extra line? 163 | wc_hostnames=$((wc_hostnames - 1)) 164 | fi 165 | 166 | echo 167 | echo "The current character size of dhcp_hostnames is: $wc_hostnames" 168 | echo 169 | echo "Press enter to continue" 170 | read -r 171 | 172 | Menu_DHCP_Staticlist 173 | break 174 | ;; 175 | 176 | e) 177 | exit 0 178 | ;; 179 | *) 180 | printf '\nOption choice %b%s%b is not a valid option!\n' "${COLOR_GREEN}" "$option" "${COLOR_WHITE}" 181 | echo 182 | echo "Press enter to continue" 183 | read -r 184 | Menu_DHCP_Staticlist 185 | ;; 186 | esac 187 | done 188 | } 189 | 190 | Make_Backup() { 191 | 192 | FILE="$1" 193 | TIMESTAMP="$(date +%Y-%m-%d_%H-%M-%S)" 194 | BACKUP_FILE="${FILE}.${TIMESTAMP}" 195 | 196 | if [ -s "$FILE" ]; then 197 | if ! mv "$FILE" "$BACKUP_FILE" >/dev/null 2>&1; then 198 | printf 'Error backing up existing %b%s%b to %b%s%b\n' "$COLOR_GREEN" "$FILE" "$COLOR_WHITE" "$COLOR_GREEN" "$BACKUP_FILE" "$COLOR_WHITE" 199 | printf 'Exiting %s\n' "$(basename "$0")" 200 | exit 1 201 | else 202 | printf 'Existing %b%s%b found\n' "$COLOR_GREEN" "$FILE" "$COLOR_WHITE" 203 | printf '%b%s%b backed up to %b%s%b\n' "$COLOR_GREEN" "$FILE" "$COLOR_WHITE" "$COLOR_GREEN" "$BACKUP_FILE" "$COLOR_WHITE" 204 | fi 205 | fi 206 | } 207 | 208 | Save_DHCP_Staticlist() { 209 | if [ -s "$DHCP_STATICLIST" ]; then 210 | Make_Backup "$DHCP_STATICLIST" 211 | fi 212 | 213 | if [ -s /jffs/nvram/dhcp_staticlist ]; then #HND Routers store dhcp_staticlist in the file /jffs/nvram/dhcp_staticlist and the nvram variable dhcp_staticlist. They are the same format so only need to save one of them 214 | cp /jffs/nvram/dhcp_staticlist "$DHCP_STATICLIST" && echo "dhcp_staticlist nvram values successfully stored in $DHCP_STATICLIST" || echo "Unknown error occurred trying to save $DHCP_STATICLIST" 215 | else 216 | nvram get dhcp_staticlist >"$DHCP_STATICLIST" && echo "dhcp_staticlist nvram values successfully stored in $DHCP_STATICLIST" || echo "Unknown error occurred trying to save $DHCP_STATICLIST" 217 | fi 218 | } 219 | 220 | Save_DHCP_Hostnames() { 221 | if [ -s "$DHCP_HOSTNAMES" ]; then 222 | Make_Backup "$DHCP_HOSTNAMES" 223 | fi 224 | 225 | if [ -s /jffs/nvram/dhcp_hostnames ]; then #HND Routers store hostnames in a file 226 | cp /jffs/nvram/dhcp_hostnames "$DHCP_HOSTNAMES" && echo "dhcp_hostnames nvram values successfully stored in $DHCP_HOSTNAMES" || echo "Unknown error occurred trying to save $DHCP_HOSTNAMES" 227 | else 228 | nvram get dhcp_hostnames >"$DHCP_HOSTNAMES" && echo "dhcp_hostnames nvram values successfully stored in $DHCP_HOSTNAMES" || echo "Unknown error occurred trying to save $DHCP_HOSTNAMES" 229 | fi 230 | } 231 | 232 | Restore_DHCP_Staticlist_nvram() { 233 | nvram set dhcp_staticlist="$(cat /opt/tmp/dhcp_staticlist.txt)" 234 | nvram commit 235 | sleep 1 236 | if [ -n "$(nvram get dhcp_staticlist)" ]; then 237 | echo "dhcp_staticlist successfully restored" 238 | else 239 | echo "Unknown error occurred trying to restore dhcp_staticlist" 240 | fi 241 | } 242 | 243 | Restore_DHCP_Staticlist() { 244 | if [ "$MODEL" = "RT-AC86U" ] || [ "$MODEL" = "RT-AX88U" ]; then #HND Routers store hostnames in the file /jffs/nvram/dhcp_staticlist and the nvram variable dhcp_staticlist 245 | cp "$DHCP_STATICLIST" /jffs/nvram/dhcp_staticlist && echo "dhcp_staticlist nvram values successfully stored in $DHCP_STATICLIST" || echo "Unknown error occurred trying to save $DHCP_STATICLIST" 246 | if [ -s "/jffs/nvram/dhcp_staticlist" ]; then 247 | echo "dhcp_staticlist successfully restored" 248 | else 249 | echo "Unknown error occurred trying to restore dhcp_staticlist" 250 | fi 251 | Restore_DHCP_Staticlist_nvram 252 | else 253 | Restore_DHCP_Staticlist_nvram 254 | fi 255 | } 256 | 257 | Restore_DHCP_Hostnames() { 258 | if [ "$MODEL" = "RT-AC86U" ] || [ "$MODEL" = "RT-AX88U" ]; then #HND Routers store hostnames in a file 259 | cp "$DHCP_HOSTNAMES" /jffs/nvram/dhcp_hostnames 260 | if [ -s /jffs/nvram/dhcp_hostnames ]; then 261 | echo "dhcp_hostnames successfully restored" 262 | else 263 | echo "Unknown error occurred trying to restore dhcp_hostnames" 264 | fi 265 | else 266 | nvram set dhcp_hostnames="$(cat /opt/tmp/dhcp_hostnames.txt)" 267 | nvram commit 268 | sleep 1 269 | if [ -n "$(nvram get dhcp_hostnames)" ]; then 270 | echo "dhcp_hostnames successfully restored" 271 | else 272 | echo "Unknown error occurred trying to restore dhcp_hostnames" 273 | fi 274 | fi 275 | } 276 | 277 | Parse_Hostnames() { 278 | 279 | true >/tmp/hostnames.$$ 280 | OLDIFS=$IFS 281 | IFS="<" 282 | 283 | for ENTRY in $HOSTNAME_LIST; do 284 | if [ "$ENTRY" = "" ]; then 285 | continue 286 | fi 287 | MACID=$(echo "$ENTRY" | cut -d ">" -f 1) 288 | HOSTNAME=$(echo "$ENTRY" | cut -d ">" -f 2) 289 | echo "$MACID $HOSTNAME" >>/tmp/hostnames.$$ 290 | done 291 | 292 | IFS=$OLDIFS 293 | } 294 | 295 | Save_Dnsmasq_Format() { 296 | 297 | # Obtain MAC and IP address from dhcp_staticlist and exclude DNS field by filtering using the first three octets of the lan_ipaddr 298 | if [ -s /jffs/nvram/dhcp_staticlist ]; then #HND Routers store dhcp_staticlist in a file 299 | awk '{print $0}' /jffs/nvram/dhcp_staticlist | grep -oE "((([0-9a-fA-F]{2})[ :-]){5}[0-9a-fA-F]{2})|(([0-9a-fA-F]){6}[:-]([0-9a-fA-F]){6})|([0-9a-fA-F]{12})" >/tmp/static_mac.$$ 300 | awk '{print $0}' /jffs/nvram/dhcp_staticlist | grep -oE "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" | grep "$(nvram get lan_ipaddr | grep -Eo '([0-9]{1,3}\.[0-9]{1,3}(\.[0-9]{1,3}))')" >/tmp/static_ip.$$ 301 | else # non-HND Routers store dhcp_staticlist in nvram 302 | nvram get dhcp_staticlist | grep -oE "((([0-9a-fA-F]{2})[ :-]){5}[0-9a-fA-F]{2})|(([0-9a-fA-F]){6}[:-]([0-9a-fA-F]){6})|([0-9a-fA-F]{12})" >/tmp/static_mac.$$ 303 | nvram get dhcp_staticlist | grep -oE "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" | grep "$(nvram get lan_ipaddr | grep -Eo '([0-9]{1,3}\.[0-9]{1,3}(\.[0-9]{1,3}))')" >/tmp/static_ip.$$ 304 | fi 305 | 306 | # output /tmp/static_mac.$$ and /tmp/static_ip.$$ to /tmp/staticlist.$$ in two columns side by side 307 | #https://www.unix.com/shell-programming-and-scripting/161826-how-combine-2-files-into-1-file-2-columns.html 308 | awk 'NR==FNR{a[i++]=$0};{b[x++]=$0;};{k=x-i};END{for(j=0;j/tmp/staticlist.$$ 309 | 310 | # some users reported undefined//') 313 | else 314 | HOSTNAME_LIST=$(nvram get dhcp_hostnames | sed 's/>undefined//') 315 | fi 316 | 317 | # Have to parse by internal field separator since hostnames are not required 318 | Parse_Hostnames 319 | 320 | # Join the /tmp/hostnames.$$ and /tmp/staticlist.$$ files together to form one file containing MAC, IP, HOSTNAME 321 | awk ' 322 | NR==FNR { k[$1]=$2; next } 323 | { print $0, k[$1] } 324 | ' /tmp/hostnames.$$ /tmp/staticlist.$$ >/tmp/MACIPHOSTNAMES.$$ 325 | 326 | # write dhcp-host entry in /jffs/configs/dnsmasq.conf.add format 327 | sort -t . -k 3,3n -k 4,4n /tmp/MACIPHOSTNAMES.$$ | awk '{ print "dhcp-host="$1","$2","$3""; }' | sed 's/,$//' 328 | 329 | rm -rf /tmp/static_mac.$$ 330 | rm -rf /tmp/static_ip.$$ 331 | rm -rf /tmp/staticlist.$$ 332 | rm -rf /tmp/hostnames.$$ 333 | rm -rf /tmp/MACIPHOSTNAMES.$$ 334 | } 335 | 336 | clear 337 | Menu_DHCP_Staticlist 338 | -------------------------------------------------------------------------------- /nat-start-conv.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # This script will create a conversion file 3 | 4 | LOCAL_REPO=/jffs/scripts/x3mRouting 5 | 6 | # This is the old nat-start file that contains references to the prior version of x3mRouting scripts 7 | NAT_START=/jffs/scripts/nat-start 8 | 9 | # This is the conversion file. After running this script, review the file, make any necessary edits, save, and run to create the new nat-start file 10 | # and routing rules 11 | CONV_FILE=/jffs/scripts/x3mRouting/x3mRouting_Conversion.sh 12 | 13 | # START: Functions 14 | Conversion_Msg() { 15 | { 16 | echo "# Source File====> $FILE" 17 | echo "# Original Entry=> $LINE" 18 | echo "$LINE4" 19 | echo 20 | } >> "$CONV_FILE" 21 | } 22 | 23 | Warning_Msg() { 24 | { 25 | echo "# If the source VPN Client you want to bypass is '1', then no changes are required." 26 | echo "# Otherwise, edit the '1' to be a valid VPN Client number '1-5'" 27 | }>> "$CONV_FILE" 28 | } 29 | 30 | Process_File() { 31 | 32 | FILE=$1 33 | if [ "$(grep -c "load_" "$FILE")" -gt 0 ]; then 34 | grep "load_" "$FILE" | while read -r LINE; do 35 | 36 | # Skip comment lines 37 | LINETYPE=$(echo "$LINE" | awk '{ string=substr($0, 1, 1); print string;}') 38 | if [ "$LINETYPE" = "#" ]; then 39 | continue 40 | fi 41 | # AMAZON 42 | if [ "$(echo "$LINE" | grep -c load_AMAZON_ipset_iface.sh)" -ge 1 ]; then 43 | LINE2=$(echo "$LINE" | sed 's/load_AMAZON_ipset_iface.sh/x3mRouting.sh/' | sed 's/ 1/ ALL 1/' | sed 's/ 2/ ALL 2/' | sed 's/ 3/ ALL 3/' | sed 's/ 4/ ALL 4/'| sed 's/ 5/ ALL 5/' | sed 's/ 0/ 1 0/') 44 | AWS_REGION=$(echo "$LINE2" | awk '{ print substr( $0, length($0) - 1, length($0) ) }') 45 | [ "$AWS_REGION" = "AL" ] && AWS_REGION=GLOBAL 46 | LINE3=$(echo "$LINE2" | awk '{print $1, $2, $3, $4, $5}') 47 | LINE4="$LINE3 aws_region=$AWS_REGION" 48 | if [ "$(echo "$LINE4" | grep -c "1 0")" -ge 1 ]; then 49 | Warning_Msg 50 | fi 51 | Conversion_Msg 52 | continue 53 | fi 54 | 55 | if [ "$(echo "$LINE" | grep -c load_AMAZON_ipset.sh)" -ge 1 ]; then 56 | LINE2=$(echo "$LINE" | sed 's/load_AMAZON_ipset.sh/x3mRouting.sh/') 57 | IPSET=$(echo "$LINE2" | awk '{print $3}' ) 58 | AWS_REGION=$(echo "$LINE2" | awk '{ print substr( $0, length($0) - 1, length($0) ) }') 59 | LINE3=$(echo "$LINE2" | awk '{print $1, $2}') 60 | LINE4="$LINE3 ipset_name=$IPSET aws_region=$AWS_REGION" 61 | Conversion_Msg 62 | continue 63 | fi 64 | # ASN 65 | if [ "$(echo "$LINE" | grep -c load_ASN_ipset_iface.sh)" -ge 1 ]; then 66 | LINE2=$(echo "$LINE" | sed 's/load_ASN_ipset_iface.sh/x3mRouting.sh/' | sed 's/ 1/ ALL 1/' | sed 's/ 2/ ALL 2/' | sed 's/ 3/ ALL 3/' | sed 's/ 4/ ALL 4/'| sed 's/ 5/ ALL 5/' | sed 's/ 0/ 1 0/') 67 | ASNUM=$(echo "$LINE2" | sed -ne 's/^.*AS//p') 68 | ASN="AS${ASNUM}" 69 | LINE3=$(echo "$LINE2" | awk '{print $1, $2, $3, $4, $5}') 70 | LINE4="$LINE3 asnum=$ASN" 71 | if [ "$(echo "$LINE4" | grep -c "1 0")" -ge 1 ]; then 72 | Warning_Msg 73 | fi 74 | Conversion_Msg 75 | continue 76 | fi 77 | if [ "$(echo "$LINE" | grep -c load_ASN_ipset.sh)" -ge 1 ]; then 78 | LINE2=$(echo "$LINE" | sed 's/load_ASN_ipset.sh/x3mRouting.sh/') 79 | IPSET=$(echo "$LINE2" | awk '{print $3}') 80 | ASNUM=$(echo "$LINE2" | sed -ne 's/^.*AS//p') 81 | ASN="AS${ASNUM}" 82 | LINE3=$(echo "$LINE2" | awk '{print $1, $2}') 83 | LINE4="$LINE3 ipset_name=$IPSET asnum=$ASN" 84 | Conversion_Msg 85 | continue 86 | fi 87 | 88 | # DNSMASQ 89 | if [ "$(echo "$LINE" | grep -c load_DNSMASQ_ipset_iface.sh)" -ge 1 ]; then 90 | LINE2=$(echo "$LINE" | sed 's/load_DNSMASQ_ipset_iface.sh/x3mRouting.sh/' | sed 's/ 1/ ALL 1/' | sed 's/ 2/ ALL 2/' | sed 's/ 3/ ALL 3/' | sed 's/ 4/ ALL 4/'| sed 's/ 5/ ALL 5/' | sed 's/ 0/ 1 0/') 91 | IPSET=$(echo "$LINE2" | awk '{print $5}' ) 92 | DNSMASQ=$(echo "$LINE2" | awk '{print $6}' ) 93 | LINE3=$(echo "$LINE2" | awk '{print $1, $2, $3, $4, $5}') 94 | LINE4="$LINE3 dnsmasq=$DNSMASQ" 95 | if [ "$(echo "$LINE4" | grep -c "1 0")" -ge 1 ]; then 96 | Warning_Msg 97 | fi 98 | Conversion_Msg 99 | continue 100 | fi 101 | if [ "$(echo "$LINE" | grep -c load_DNSMASQ_ipset.sh)" -ge 1 ]; then 102 | LINE2=$(echo "$LINE" | sed 's/load_DNSMASQ_ipset.sh/x3mRouting.sh/') 103 | IPSET=$(echo "$LINE2" | awk '{print $3}' ) 104 | DNSMASQ=$(echo "$LINE2" | awk '{print $4}' ) 105 | LINE3=$(echo "$LINE2" | awk '{print $1, $2}') 106 | LINE4="$LINE3 ipset_name=$IPSET dnsmasq=$DNSMASQ" 107 | Conversion_Msg 108 | continue 109 | fi 110 | 111 | # MANUAL 112 | if [ "$(echo "$LINE" | grep -c load_MANUAL_ipset_iface.sh)" -ge 1 ]; then 113 | LINE2=$(echo "$LINE" | sed 's/load_MANUAL_ipset_iface.sh/x3mRouting.sh/' | sed 's/ 1/ ALL 1/' | sed 's/ 2/ ALL 2/' | sed 's/ 3/ ALL 3/' | sed 's/ 4/ ALL 4/'| sed 's/ 5/ ALL 5/' | sed 's/ 0/ 1 0/') 114 | LINE3=$(echo "$LINE2" | awk '{print $1, $2, $3, $4, $5}') 115 | LINE4="$LINE3" 116 | if [ "$(echo "$LINE4" | grep -c "1 0")" -ge 1 ]; then 117 | Warning_Msg 118 | fi 119 | Conversion_Msg 120 | continue 121 | fi 122 | if [ "$(echo "$LINE" | grep -c load_MANUAL_ipset.sh)" -ge 1 ]; then 123 | LINE2=$(echo "$LINE" | sed 's/load_MANUAL_ipset.sh/x3mRouting.sh/') 124 | IPSET=$(echo "$LINE2" | awk '{print $3}') 125 | LINE3=$(echo "$LINE2" | awk '{print $1, $2}') 126 | LINE4="$LINE3 ipset_name=$IPSET" 127 | Conversion_Msg 128 | continue 129 | fi 130 | 131 | done 132 | fi 133 | 134 | } 135 | # END: Functions 136 | # START: Process Conversion 137 | # If a previous version of the conversion file exists, back it up to prevent overwrite as a second run may corrupt it 138 | if [ -s "$LOCAL_REPO/x3mRouting_Conversion.sh" ]; then 139 | TIMESTAMP=$(date +"%Y-%m-%d-%H.%M.%S") 140 | if ! cp "$LOCAL_REPO/x3mRouting_Conversion.sh" "$LOCAL_REPO/x3mRouting_Conversion.sh.$TIMESTAMP"; then 141 | echo 142 | printf '\nBackup of the prior %s file could not be made.\n' "$LOCAL_REPO/x3mRouting_Conversion.sh" 143 | printf 'Exiting...\n' 144 | exit 0 145 | else 146 | echo 147 | printf '%s%b%s%b%s\n' "Existing " "$COLOR_GREEN" "$LOCAL_REPO/x3mRouting_Conversion.sh" "$COLOR_WHITE" " file found." 148 | printf '%s%b%s%b\n' "Backup file saved to " "$COLOR_GREEN" "$LOCAL_REPO/x3mRouting_Conversion.sh.$TIMESTAMP" "$COLOR_WHITE" 149 | true > "$CONV_FILE" && chmod 755 "$CONV_FILE" 150 | fi 151 | else 152 | true > "$CONV_FILE" && chmod 755 "$CONV_FILE" 153 | fi 154 | 155 | Process_File "$NAT_START" 156 | 157 | # add shebang to the first line before exiting 158 | if [ -s "$CONV_FILE" ]; then 159 | sed -i '1s~^~#!/bin/sh\n~' "$CONV_FILE" 160 | echo 161 | printf '%s%b%s%b%s\n' "Created " "$COLOR_GREEN" "$CONV_FILE" "$COLOR_WHITE" " script to assist with the conversion." 162 | printf '%s%b%s%b%s\n' "Please review the " "$COLOR_GREEN" "$CONV_FILE" "$COLOR_WHITE" " script before running" 163 | else 164 | printf '%b%s%b%s%b%s%b%s\n' "$COLOR_GREEN" "$CONV_FILE" "$COLOR_WHITE" " script not created. No valid x3mRouting entries found in" "$COLOR_GREEN" "$NAT_START" "$COLOR_WHITE" " or vpnclientX- route-up files." 165 | rm "$CONV_FILE" 166 | fi 167 | -------------------------------------------------------------------------------- /profile.add: -------------------------------------------------------------------------------- 1 | # /jffs/scripts/profile.add 2 | 3 | # Directory Aliases go in this section 4 | # 5 | help() { 6 | echo "Command List:" 7 | echo "" 8 | echo "Chk_ADNS List OpenVPN DNS Settings" 9 | echo "clients List hostname, IP address and MAC address for LAN clients" 10 | echo "js cd /jffs/scripts" 11 | echo "jc cd /jffs/configs" 12 | echo "ld cd /opt/var/log" 13 | echo "liststats List number of entries in each IPSET list" 14 | echo "listiface List status of WAN and OpenVPN interfaces" 15 | echo "MatchIP Check IP against IPSET lists to see if the IP address exists" 16 | echo " Usage: MactchIP 111.222.333.444" 17 | echo "purge_routes Purge policy routing rules" 18 | echo "routes Alternative to 'ip routes' command" 19 | echo "tree Similar to the Unix 'tree' command to list directories" 20 | echo "ltree List directories and files in each directory" 21 | echo "" 22 | } 23 | 24 | alias logdir='cd /opt/var/log' 25 | alias js='cd /jffs/scripts' 26 | alias jc='cd /jffs/configs' 27 | alias ld='cd /opt/var/log' 28 | 29 | ########### Martineau Hack: https://www.snbforums.com/threads/openvpn-multiple-client-default-behavior.57587/#post-504672 30 | routes() { 31 | for ID in 254 111 112 113 114 115; do 32 | echo "Table "$ID 33 | ip route show table $ID | grep -E "default|^128|^0" 34 | done 35 | } 36 | ########################################### 37 | 38 | # List active LAN Clients from the command line 39 | # Usage: clients 40 | clients() { 41 | GREEN='\033[0;32m' 42 | RED='\033[0;31m' 43 | NC='\033[0m' # No Color 44 | 45 | printf '%b%-23s %-15s %-17s%b\n' "$GREEN" "Description " "IP Address " "MAC Address " "$NC" 46 | arp | sed 's/(//;s/)//' | while read -r DESC IP AT MAC ETH ON IFACE; do 47 | printf '%-23s %-15s %-17s\n' "$DESC" "$IP" "$MAC" 48 | done 49 | } 50 | 51 | # Check IP against ipset lists to see if it exists 52 | # Usage: MactchIP 111.222.333.444 53 | MatchIP() { 54 | if [ -z "$1" ]; then 55 | echo "Specify IP to check through ipset lists. Exiting." 56 | else 57 | GREEN='\033[0;32m' 58 | RED='\033[0;31m' 59 | NC='\033[0m' # No Color 60 | # for TestList in $( (iptables -L -t raw && iptables -L) | grep "match-set" | tr -s ' ' | cut -d' ' -f7 | tr '\n' ' '); do 61 | for SETLIST in $(ipset -L -n); do 62 | # for 63 | ipset -q test $SETLIST $1 && echo -e "$1 found in ${GREEN}${SETLIST}${NC}" || echo -e "$1 not found in ${RED}${SETLIST}${NC}" 64 | done 65 | fi 66 | } 67 | #################################################### 68 | 69 | # List number of entries in each IPSET list 70 | # Usage: liststats 71 | liststats() { 72 | GREEN='\033[0;32m' 73 | RED='\033[0;31m' 74 | NC='\033[0m' # No Color 75 | true >/tmp/liststats 76 | for SETLIST in $(ipset -L -n); do 77 | printf '%s - %b%s%b\n' "$SETLIST" "$GREEN" "$(($(ipset -L "$SETLIST" | wc -l) - 8))" "$NC" >>/tmp/liststats 78 | done 79 | cat /tmp/liststats | sort 80 | rm /tmp/liststats 81 | } 82 | 83 | listiface() { 84 | OVPNC1_ADDR=$(nvram get vpn_client1_addr) 85 | OVPNC1_DESC=$(nvram get vpn_client1_desc) 86 | OVPNC1_STATE=$(nvram get vpn_client1_state) 87 | case "$OVPNC1_STATE" in 88 | 0) OVPNC1_STATE_DESC="Stopped" ;; 89 | 1) OVPNC1_STATE_DESC="Connecting" ;; 90 | 2) OVPNC1_STATE_DESC="Connected" ;; 91 | *) OVPNC1_STATE_DESC="Unknown State" ;; 92 | esac 93 | 94 | OVPNC2_ADDR=$(nvram get vpn_client2_addr) 95 | OVPNC2_DESC=$(nvram get vpn_client2_desc) 96 | OVPNC2_STATE=$(nvram get vpn_client2_state) 97 | case "$OVPNC2_STATE" in 98 | 0) OVPNC2_STATE_DESC="Stopped" ;; 99 | 1) OVPNC2_STATE_DESC="Connecting" ;; 100 | 2) OVPNC2_STATE_DESC="Connected" ;; 101 | *) OVPNC2_STATE_DESC="Unknown State" ;; 102 | esac 103 | 104 | OVPNC3_ADDR=$(nvram get vpn_client3_addr) 105 | OVPNC3_DESC=$(nvram get vpn_client3_desc) 106 | OVPNC3_STATE=$(nvram get vpn_client3_state) 107 | case "$OVPNC3_STATE" in 108 | 0) OVPNC3_STATE_DESC="Stopped" ;; 109 | 1) OVPNC3_STATE_DESC="Connecting" ;; 110 | 2) OVPNC3_STATE_DESC="Connected" ;; 111 | *) OVPNC3_STATE_DESC="Unknown State" ;; 112 | esac 113 | 114 | OVPNC4_ADDR=$(nvram get vpn_client4_addr) 115 | OVPNC4_DESC=$(nvram get vpn_client4_desc) 116 | OVPNC4_STATE=$(nvram get vpn_client4_state) 117 | case "$(nvram get vpn_client4_state)" in 118 | 0) OVPNC4_STATE_DESC="Stopped" ;; 119 | 1) OVPNC4_STATE_DESC="Connecting" ;; 120 | 2) OVPNC4_STATE_DESC="Connected" ;; 121 | *) OVPNC4_STATE_DESC="Unknown State" ;; 122 | esac 123 | 124 | OVPNC5_ADDR=$(nvram get vpn_client5_addr) 125 | OVPNC5_DESC=$(nvram get vpn_client5_desc) 126 | OVPNC5_STATE=$(nvram get vpn_client5_state) 127 | case "$(nvram get vpn_client5_state)" in 128 | 0) OVPNC5_STATE_DESC="Stopped" ;; 129 | 1) OVPNC5_STATE_DESC="Connecting" ;; 130 | 2) OVPNC5_STATE_DESC="Connected" ;; 131 | *) OVPNC5_STATE_DESC="Unknown State" ;; 132 | esac 133 | 134 | WAN_IP=$(nvram get wan0_ipaddr) 135 | WAN_GW_IFNAME=$(nvram get wan0_gw_ifname) 136 | WAN_IFNAME=$(nvram get wan0_ifname) 137 | case "$(nvram get wan0_state_t)" in 138 | 0) WAN0_STATE_DESC="Stopped" ;; 139 | 1) WAN0_STATE_DESC="Connecting" ;; 140 | 2) WAN0_STATE_DESC="Connected" ;; 141 | *) WAN0_STATE_DESC="Unknown State" ;; 142 | esac 143 | case "$(nvram get wan1_state_t)" in 144 | 0) WAN1_STATE_DESC="Stopped" ;; 145 | 1) WAN1_STATE_DESC="Connecting..." ;; 146 | 2) WAN1_STATE_DESC="Connected" ;; 147 | *) WAN1_STATE_DESC="Unknown State" ;; 148 | esac 149 | 150 | printf '\n' 151 | printf '******************************************************************************\n' 152 | printf '* WAN Interfaces *\n' 153 | printf '******************************************************************************\n' 154 | printf '%-6s %-9s %-15s %-4s %-6s\n' "WAN IF " "Status" "Address" "GW" "IFNAME" 155 | printf '%-6s %-9s %-15s %-4s %-6s\n' "------ " "---------" "---------------" "----" "------" 156 | printf '%-6s %-9s %-15s %-4s %-6s\n' "WAN0: " ${WAN0_STATE_DESC} $(nvram get wan0_ipaddr) $(nvram get wan0_gw_ifname) $(nvram get wan0_ifname) 157 | printf '%-6s %-9s %-15s %-4s %-6s\n' "WAN1: " ${WAN1_STATE_DESC} $(nvram get wan1_ipaddr) $(nvram get wan1_gw_ifname) $(nvram get wan1_ifname) 158 | #printf '%-11s %-9s %-7s %-9s %-7s %-4s %-11s %-4s\n' "WAN Status:" ${WAN_STATE_DESC} "WAN IP:" $(nvram get wan0_ipaddr) "WAN GW:" $(nvram get wan0_gw_ifname) "WAN IFNAME:" $(nvram get wan0_ifname) 159 | printf '******************************************************************************\n' 160 | printf '\n' 161 | printf '******************************************************************************\n' 162 | printf '* VPN Interfaces *\n' 163 | printf '******************************************************************************\n' 164 | printf '%-7s %-13s %-35s %-24s\n' "Client" "Status" "Address" "Description" 165 | printf '%-7s %-13s %-35s %-24s\n' "-------" "---------" "-----------------------------------" "------------------------" 166 | printf '%-7s %-13s %-35s %-24s\n' "OVPNC1:" ${OVPNC1_STATE_DESC} "${OVPNC1_ADDR:-" "}" "${OVPNC1_DESC}" 167 | printf '%-7s %-13s %-35s %-24s\n' "OVPNC2:" ${OVPNC2_STATE_DESC} "${OVPNC2_ADDR:-" "}" "${OVPNC2_DESC}" 168 | printf '%-7s %-13s %-35s %-24s\n' "OVPNC3:" ${OVPNC3_STATE_DESC} "${OVPNC3_ADDR:-" "}" "${OVPNC3_DESC}" 169 | printf '%-7s %-13s %-35s %-24s\n' "OVPNC4:" ${OVPNC4_STATE_DESC} "${OVPNC4_ADDR:-" "}" "${OVPNC4_DESC}" 170 | printf '%-7s %-13s %-35s %-24s\n' "OVPNC5:" ${OVPNC5_STATE_DESC} "${OVPNC5_ADDR:-" "}" "${OVPNC5_DESC}" 171 | printf '\n' 172 | } 173 | 174 | purge_routes() { 175 | # WAN 176 | ip rule del fwmark 0x8000/0x8000 >/dev/null 2>&1 177 | 178 | #VPN Client 1 179 | ip rule del fwmark 0x1000/0x1000 >/dev/null 2>&1 180 | 181 | #VPN Client 2 182 | ip rule del fwmark 0x2000/0x2000 >/dev/null 2>&1 183 | 184 | #VPN Client 3 185 | ip rule del fwmark 0x7000/0x7000 >/dev/null 2>&1 186 | 187 | #VPN Client 4 188 | ip rule del fwmark 0x4000/0x4000 >/dev/null 2>&1 189 | 190 | #VPN Client 5 191 | ip rule del fwmark 0x3000/0x3000 >/dev/null 2>&1 192 | 193 | ip route flush cache 194 | 195 | ip rule | grep -E "([0-9]{1,3}[\.]){3}[0-9]{1,3}" | grep ovpnc >/tmp/temp.$$ 196 | ip rule | grep -E "([0-9]{1,3}[\.]){3}[0-9]{1,3}" | grep main | grep all >>/tmp/temp.$$ 197 | if [ -s "/tmp/temp.$$" ]; then 198 | create_remove_routes_script 199 | else 200 | rm "/tmp/temp.$$" 2>/dev/null 201 | fi 202 | } 203 | 204 | create_remove_routes_script() { 205 | awk 'BEGIN{ 206 | FS=" "; 207 | } 208 | { 209 | if (NF == 7) { 210 | if ($7 == "ovpnc1") { 211 | table_no = "111"; 212 | } else if ($7 == "ovpnc2") { 213 | table_no = "112"; 214 | } else if ($7 == "ovpnc3") { 215 | table_no = "113"; 216 | } else if ($7 == "ovpnc4") { 217 | table_no = "114"; 218 | } else if ($7 == "ovpnc5") { 219 | table_no = "115"; 220 | } else if ($7 == "main") { 221 | table_no = "254"; 222 | } 223 | printf("ip rule del to %s table %s\n", $5, table_no ) >> "/tmp/remove_routes.sh"; 224 | } else if (NF == 5) { 225 | if ($5 == "ovpnc1") { 226 | table_no = "111"; 227 | } else if ($5 == "ovpnc2") { 228 | table_no = "112"; 229 | } else if ($5 == "ovpnc3") { 230 | table_no = "113"; 231 | } else if ($5 == "ovpnc4") { 232 | table_no = "114"; 233 | } else if ($5 == "ovpnc5") { 234 | table_no = "115"; 235 | } else if ($5 == "main") { 236 | table_no = "254"; 237 | } 238 | printf("ip rule del from %s table %s%s\n", $3, table_no ) >> "/tmp/remove_routes.sh"; 239 | } 240 | } 241 | END{}' "/tmp/temp.$$" 242 | 243 | sed -i '1i#!/bin/sh' "/tmp/remove_routes.sh" 244 | 245 | # Run script to purge any existing routes and delete temp files 246 | sh /tmp/remove_routes.sh && rm /tmp/remove_routes.sh && rm "/tmp/temp.$$" 247 | } 248 | 249 | Chk_ADNS() { 250 | COLOR_RED='\033[0;31m' 251 | COLOR_WHITE='\033[0m' 252 | COLOR_GREEN='\e[0;32m' 253 | 254 | listifaces() { 255 | # Process OpenVPN Client 1 Information 256 | OVPNC1_ADDR=$(nvram get vpn_client1_addr) 257 | OVPNC1_DESC=$(nvram get vpn_client1_desc) 258 | OVPNC1_STATE=$(nvram get vpn_client1_state) 259 | case "$OVPNC1_STATE" in 260 | 0) OVPNC1_STATE_DESC="Stopped" ;; 261 | 1) OVPNC1_STATE_DESC="Connecting..." ;; 262 | 2) OVPNC1_STATE_DESC="Connected" ;; 263 | *) OVPNC1_STATE_DESC="Unknown State" ;; 264 | esac 265 | OVPNNC1_DNS_CONFIG=$(nvram get vpn_client1_adns) 266 | case "$OVPNNC1_DNS_CONFIG" in 267 | 0) OVPNC1_DNS_CONFIG_DESC="Disabled" ;; 268 | 1) OVPNC1_DNS_CONFIG_DESC="Relaxed" ;; 269 | 2) OVPNC1_DNS_CONFIG_DESC="Strict" ;; 270 | 3) OVPNC1_DNS_CONFIG_DESC="Exclusive" ;; 271 | esac 272 | 273 | # Process OpenVPN Client 2 Information 274 | OVPNC2_ADDR=$(nvram get vpn_client2_addr) 275 | OVPNC2_DESC=$(nvram get vpn_client2_desc) 276 | OVPNC2_STATE=$(nvram get vpn_client2_state) 277 | 278 | case "$OVPNC2_STATE" in 279 | 0) OVPNC2_STATE_DESC="Stopped" ;; 280 | 1) OVPNC2_STATE_DESC="Connecting..." ;; 281 | 2) OVPNC2_STATE_DESC="Connected" ;; 282 | *) OVPNC2_STATE_DESC="Unknown State" ;; 283 | esac 284 | OVPNNC2_DNS_CONFIG=$(nvram get vpn_client2_adns) 285 | case "$OVPNNC2_DNS_CONFIG" in 286 | 0) OVPNC2_DNS_CONFIG_DESC="Disabled" ;; 287 | 1) OVPNC2_DNS_CONFIG_DESC="Relaxed" ;; 288 | 2) OVPNC2_DNS_CONFIG_DESC="Strict" ;; 289 | 3) OVPNC2_DNS_CONFIG_DESC="Exclusive" ;; 290 | esac 291 | 292 | # Process OpenVPN Client 3 Information 293 | OVPNC3_ADDR=$(nvram get vpn_client3_addr) 294 | OVPNC3_DESC=$(nvram get vpn_client3_desc) 295 | OVPNC3_STATE=$(nvram get vpn_client3_state) 296 | 297 | case "$OVPNC3_STATE" in 298 | 0) OVPNC3_STATE_DESC="Stopped" ;; 299 | 1) OVPNC3_STATE_DESC="Connecting..." ;; 300 | 2) OVPNC3_STATE_DESC="Connected" ;; 301 | *) OVPNC3_STATE_DESC="Unknown State" ;; 302 | esac 303 | OVPNNC3_DNS_CONFIG=$(nvram get vpn_client3_adns) 304 | case "$OVPNNC3_DNS_CONFIG" in 305 | 0) OVPNC3_DNS_CONFIG_DESC="Disabled" ;; 306 | 1) OVPNC3_DNS_CONFIG_DESC="Relaxed" ;; 307 | 2) OVPNC3_DNS_CONFIG_DESC="Strict" ;; 308 | 3) OVPNC3_DNS_CONFIG_DESC="Exclusive" ;; 309 | esac 310 | 311 | # Process OpenVPN Client 4 Information 312 | OVPNC4_ADDR=$(nvram get vpn_client4_addr) 313 | OVPNC4_DESC=$(nvram get vpn_client4_desc) 314 | OVPNC4_STATE=$(nvram get vpn_client4_state) 315 | case "$(nvram get vpn_client4_state)" in 316 | 0) OVPNC4_STATE_DESC="Stopped" ;; 317 | 1) OVPNC4_STATE_DESC="Connecting..." ;; 318 | 2) OVPNC4_STATE_DESC="Connected" ;; 319 | *) OVPNC4_STATE_DESC="Unknown State" ;; 320 | esac 321 | OVPNNC4_DNS_CONFIG=$(nvram get vpn_client4_adns) 322 | case "$OVPNNC4_DNS_CONFIG" in 323 | 0) OVPNC4_DNS_CONFIG_DESC="Disabled" ;; 324 | 1) OVPNC4_DNS_CONFIG_DESC="Relaxed" ;; 325 | 2) OVPNC4_DNS_CONFIG_DESC="Strict" ;; 326 | 3) OVPNC4_DNS_CONFIG_DESC="Exclusive" ;; 327 | esac 328 | 329 | # Process OpenVPN Client 5 Information 330 | OVPNC5_ADDR=$(nvram get vpn_client5_addr) 331 | OVPNC5_DESC=$(nvram get vpn_client5_desc) 332 | OVPNC5_STATE=$(nvram get vpn_client5_state) 333 | case "$(nvram get vpn_client5_state)" in 334 | 0) OVPNC5_STATE_DESC="Stopped" ;; 335 | 1) OVPNC5_STATE_DESC="Connecting..." ;; 336 | 2) OVPNC5_STATE_DESC="Connected" ;; 337 | *) OVPNC5_STATE_DESC="Unknown State" ;; 338 | esac 339 | OVPNNC5_DNS_CONFIG=$(nvram get vpn_client5_adns) 340 | case "$OVPNNC5_DNS_CONFIG" in 341 | 0) OVPNC5_DNS_CONFIG_DESC="Disabled" ;; 342 | 1) OVPNC5_DNS_CONFIG_DESC="Relaxed" ;; 343 | 2) OVPNC5_DNS_CONFIG_DESC="Strict" ;; 344 | 3) OVPNC5_DNS_CONFIG_DESC="Exclusive" ;; 345 | esac 346 | 347 | # WAN Interface Information 348 | WAN_IP=$(nvram get wan0_ipaddr) 349 | WAN_GW_IFNAME=$(nvram get wan0_gw_ifname) 350 | WAN_IFNAME=$(nvram get wan0_ifname) 351 | case "$(nvram get wan0_state_t)" in 352 | 0) WAN0_STATE_DESC="Stopped" ;; 353 | 1) WAN0_STATE_DESC="Connecting..." ;; 354 | 2) WAN0_STATE_DESC="Connected" ;; 355 | *) WAN0_STATE_DESC="Unknown State" ;; 356 | esac 357 | case "$(nvram get wan1_state_t)" in 358 | 0) WAN1_STATE_DESC="Stopped" ;; 359 | 1) WAN1_STATE_DESC="Connecting..." ;; 360 | 2) WAN1_STATE_DESC="Connected" ;; 361 | 4) WAN1_STATE_DESC="Unknown State" ;; 362 | esac 363 | 364 | printf '\n' 365 | printf '********************************************************************************************\n' 366 | printf '* WAN Interfaces *\n' 367 | printf '********************************************************************************************\n' 368 | printf '%-6s %-13s %-15s %-4s %-6s\n' "WAN IF " "Status" "Address" "GW" "IFNAME" 369 | printf '%-6s %-13s %-15s %-4s %-6s\n' "------ " "-------------" "---------------" "----" "------" 370 | printf '%-6s %-13s %-15s %-4s %-6s\n' "WAN0: " "$WAN0_STATE_DESC" "$(nvram get wan0_ipaddr)" "$(nvram get wan0_gw_ifname)" "$(nvram get wan0_ifname)" 371 | printf '%-6s %-13s %-15s %-4s %-6s\n' "WAN1: " "$WAN1_STATE_DESC" "$(nvram get wan1_ipaddr)" "$(nvram get wan1_gw_ifname)" "$(nvram get wan1_ifname)" 372 | printf '\n' 373 | printf '********************************************************************************************\n' 374 | printf '* VPN Interfaces *\n' 375 | printf '********************************************************************************************\n' 376 | printf '%+89s\n' "Accept" 377 | printf '%+86s\n' "DNS" 378 | printf '%-7s %-13s %-35s %-24s %-13s\n' "Client" "Status" "Address" "Description" "Configuration" 379 | printf '%-7s %-13s %-35s %-24s %-13s\n' "-------" "-------------" "-----------------------------------" "------------------------" "-------------" 380 | printf '%-7s %-13s %-35s %-24s %-13s\n' "OVPNC1:" "$OVPNC1_STATE_DESC" "$OVPNC1_ADDR" "$OVPNC1_DESC" "$OVPNC1_DNS_CONFIG_DESC" 381 | printf '%-7s %-13s %-35s %-24s %-13s\n' "OVPNC2:" "$OVPNC2_STATE_DESC" "$OVPNC2_ADDR" "$OVPNC2_DESC" "$OVPNC2_DNS_CONFIG_DESC" 382 | printf '%-7s %-13s %-35s %-24s %-13s\n' "OVPNC3:" "$OVPNC3_STATE_DESC" "$OVPNC3_ADDR" "$OVPNC3_DESC" "$OVPNC3_DNS_CONFIG_DESC" 383 | printf '%-7s %-13s %-35s %-24s %-13s\n' "OVPNC4:" "$OVPNC4_STATE_DESC" "$OVPNC4_ADDR" "$OVPNC4_DESC" "$OVPNC4_DNS_CONFIG_DESC" 384 | printf '%-7s %-13s %-35s %-24s %-13s\n' "OVPNC5:" "$OVPNC5_STATE_DESC" "$OVPNC5_ADDR" "$OVPNC5_DESC" "$OVPNC5_DNS_CONFIG_DESC" 385 | printf '\n' 386 | } 387 | listifaces 388 | 389 | if [ -d "/opt/share/diversion" ]; then 390 | printf 'Diversion installation detected\n' 391 | printf 'Checking for potential conflicts with active OpenVPN Clients\n' 392 | printf '\n' 393 | 394 | # For clients that are in a connected state, see if ADNS=3 (Exclusive) 395 | # If Accept DNS Cofiguration = "Exclusive", give warning message about DNSMASQ 396 | # being bypassed which prevents Diversion from working 397 | 398 | for OPENVPN_CLIENT in 1 2 3 4 5; do 399 | if [ "$(nvram get vpn_client${OPENVPN_CLIENT}_state)" -ne "2" ]; then 400 | printf 'OpenVPN Client %s is not in a connected state. Skipping check for OpenVPN Client %s\n\n' "$OPENVPN_CLIENT" "$OPENVPN_CLIENT" 401 | elif [ "$(nvram get vpn_client${OPENVPN_CLIENT}_state)" -eq "2" ] && [ "$(nvram get vpn_client${OPENVPN_CLIENT}_adns)" -eq "3" ] && [ "$(nvram get vpn_client${OPENVPN_CLIENT}_rgw)" -eq "3" ] || [ "$(nvram get vpn_client${OPENVPN_CLIENT}_rgw)" -eq "4" ]; then 402 | printf 'Warning! Potential configuration conflict found with OpenVPN Client %s\n\n' "$OPENVPN_CLIENT" 403 | printf '%bAccept DNS Configuration%b setting is set to %bExclusive%b\n' "$COLOR_GREEN" "$COLOR_WHITE" "$COLOR_GREEN" "$COLOR_WHITE" 404 | printf 'When %bAccept DNS Configuration%b is set to %bExclusive%b and %bRedirect Internet Traffic%b is set to\n%bPolicy Rules%b or %bPolicy Rules (Strict)%b DNSMASQ is bypassed which will prevent Diversion from working\n' "$COLOR_GREEN" "$COLOR_WHITE" "$COLOR_GREEN" "$COLOR_WHITE" "$COLOR_GREEN" "$COLOR_WHITE" "$COLOR_GREEN" "$COLOR_WHITE" "$COLOR_GREEN" "$COLOR_WHITE" 405 | printf '\n' 406 | printf 'The work-around solution is to set %bAccept DNS Configuration%b to %bStrict%b AND\n' "$COLOR_GREEN" "$COLOR_WHITE" "$COLOR_GREEN" "$COLOR_WHITE" 407 | printf 'in the %bCustom Config Section%b add the entry: %bdhcp-option DNS dns.server.ip.address%b\n' "$COLOR_GREEN" "$COLOR_WHITE" "$COLOR_GREEN" "$COLOR_WHITE" 408 | printf 'where %bdns.server.ip.address%b is a DNS server of your choice\n' "$COLOR_GREEN" "$COLOR_WHITE" 409 | printf 'e.g. dhcp-option DNS 9.9.9.9\n' 410 | printf 'This will result in DNS leaking. But it will allow Diversion to work over the VPN tunnel\n' 411 | printf 'To learn more about the issue, see\n' 412 | printf '%bhttps://x3mtek.com/torguard-openvpn-2-4-client-setup-for-asuswrt-merlin-firmware/%b\n' "$COLOR_GREEN" "$COLOR_WHITE" 413 | printf 'and navigate to the section %bDNSmasq and OpenVPN DNS%b\n\n' "$COLOR_GREEN" "$COLOR_WHITE" 414 | else 415 | printf 'Good news! No configuration conflicts found with OpenVPN Client %s\n\n' "$OPENVPN_CLIENT" 416 | fi 417 | done 418 | fi 419 | } 420 | 421 | tree() { 422 | ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/-/+/' -e '$s/+/+/' 423 | 424 | } 425 | 426 | ltree() { 427 | 428 | find . | sed -e "s/[^-][^\/]*\// |/g" -e "s/|\([^ ]\)/|-\1/" 429 | 430 | } 431 | -------------------------------------------------------------------------------- /wan-event: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # wan-event 3 | # Martineau wrote this script 4 | # See https://www.snbforums.com/threads/wan-start-script-also-run-on-wan-stop.61295/#post-542636 5 | # 6 | # v384.15 Introduced wan-event script, (wan-start will be deprecated in a future release.) 7 | # 8 | # wan-event {0 | 1} {stopping | stopped | disconnected | init | connecting | connected} 9 | # 10 | # shellcheck disable=SC2068 11 | Say() { 12 | printf '%s%s' "$$" "$@" | logger -st "($(basename "$0"))" 13 | } 14 | #======================================================================================================================================== 15 | WAN_IF=$1 16 | WAN_STATE=$2 17 | 18 | # Call appropriate script based on script_type 19 | SERVICE_SCRIPT_NAME="wan${WAN_IF}-${WAN_STATE}" 20 | SERVICE_SCRIPT_LOG="/tmp/WAN${WAN_IF}_state" 21 | 22 | # Execute and log script state 23 | if [ -f "/jffs/scripts/${SERVICE_SCRIPT_NAME}" ]; then 24 | Say " Script executing.. for wan-event: $SERVICE_SCRIPT_NAME" 25 | echo "$SERVICE_SCRIPT_NAME" >"$SERVICE_SCRIPT_LOG" 26 | sh /jffs/scripts/"${SERVICE_SCRIPT_NAME}" "$@" 27 | else 28 | Say " Script not defined for wan-event: $SERVICE_SCRIPT_NAME" 29 | fi 30 | 31 | ##@Insert## 32 | -------------------------------------------------------------------------------- /x3mRouting.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | #################################################################################################### 3 | # Script: x3mRouting.sh 4 | # VERSION=2.3.10 yrdy 5 | # Author: Xentrk 6 | # Date: 29-December-2020 7 | # 8 | # Grateful: 9 | # Thank you to @Martineau on snbforums.com for sharing his Selective Routing expertise, 10 | # on-going support and collaboration on this project! 11 | # 12 | # Chk_Entware function and code to process the passing of parms written by Martineau 13 | # 14 | # Thanks to Addamm00, author of Skynet, for the Check_Lock and Kill_Lock functions to prevent concurrent processing. 15 | # Source code can be found at https://github.com/Adamm00/IPSet_ASUS 16 | # 17 | #################################################################################################### 18 | # shellcheck disable=SC2031 # IPSET_NAME was modified in a subshell. That change might be lost. 19 | # shellcheck disable=SC2068 # Double quote array expansions to avoid re-splitting elements. 20 | # shellcheck disable=SC2030 # Modification of IPSET_NAME is local (to subshell caused by pipeline). 21 | #_____________________________________________________________________________________________________________ 22 | # 23 | # Required parameters are listed inside the braces: { } 24 | # Optional parameters are listed inside of the brackets [ ] 25 | # Valid parameter values are listed in parenthesis ( ) 26 | # 27 | # Create IPSET List with Routing Rules: 28 | # 29 | # x3mRouting {src iface} (ALL|1|2|3|4|5) 30 | # {dst iface} (0|1|2|3|4|5) 31 | # ** src/dst NOTES Start ** 32 | # Valid SRC and DST Combinations 33 | # 1) VPN Client Routing 34 | # - Use this SRC and DST combination to route all IPSET list traffic to a VPN Client: 35 | # ALL 1, ALL 2, ALL 3, ALL 4, ALL 5 36 | # 2) VPN Bypass Routing 37 | # - Use this SRC and DST combination to bypass the VPN Client for an IPSET list and 38 | # route to the WAN interface: 39 | # 1 0, 2 0, 3 0, 4 0, 5 0 40 | # ** src/dst NOTES End ** 41 | # {ipset_name} 42 | # ['autoscan='keyword1[,keyword2]...] # Scans for keywords and creates IPSET list using 43 | # # the dnsmasq method 44 | # ['asnum='asnum[,asnum]...] # ASN method 45 | # ['aws_region='US[,EU]...] # Amazon method 46 | # ['dnsmasq='domain[,domain]...] # dnsmasq method 47 | # ['dnsmasq_file='/path/to/file] # dnsmasq method 48 | # ['ip='ip[,ip][,cidr]...] # Equivalent to manual method 49 | # ['src='src_ip] 50 | # ['src_range='from_ip-to_ip] 51 | # ['dir='save_restore_location] # if 'dir' not specified, defaults to /opt/tmp 52 | # ['del'] 53 | #_____________________________________________________________________________________________________________ 54 | # 55 | # Create IPSET List with no Routing Rules: 56 | # 57 | # x3mRouting {ipset_name=} 58 | # ['autoscan='keyword1[,keyword2]...] # Scans for keywords and creates IPSET list using 59 | # # the dnsmasq method 60 | # ['asnum='asnum[,asnum]...] # ASN method 61 | # ['aws_region='US[,EU]...] # Amazon method 62 | # ['dnsmasq='domain[,domain]...] # dnsmasq method 63 | # ['dnsmasq_file='/path/to/file] # dnsmasq method 64 | # ['ip='ip[,ip][,cidr]...] # Equivalent to manual method 65 | # ['dir='save_restore_location] # if 'dir' not specified, defaults to /opt/tmp 66 | # ['del'] 67 | #____________________________________________________________________________________________________________ 68 | # 69 | # VPN Server to VPN Client Routing: 70 | # 71 | # x3mRouting {'server='1|2|both} {'client='1|2|3|4|5} ['del'] 72 | #_____________________________________________________________________________________________________________ 73 | # 74 | # VPN Server to existing LAN routing rules for one or more IPSET lists 75 | # 76 | # x3mRouting {'server='1|2|both} {'ipset_name='IPSET[,IPSET]...} ['del'] 77 | #_____________________________________________________________________________________________________________ 78 | 79 | # Print between line beginning with '#__' to first blank line inclusive (source: Martineau) 80 | ShowHelp() { 81 | awk '/^#__/{f=1} f{print; if (!NF) exit}' "$0" | more 82 | } 83 | 84 | # Need assistance!??? 85 | if [ "$1" = "help" ] || [ "$1" = "-h" ]; then 86 | ShowHelp 87 | exit 0 88 | fi 89 | 90 | COLOR_RED='\033[0;31m' 91 | COLOR_WHITE='\033[0m' 92 | COLOR_GREEN='\e[0;32m' 93 | 94 | Kill_Lock() { 95 | if [ -f "/tmp/x3mRouting.lock" ] && [ -d "/proc/$(sed -n '2p' /tmp/x3mRouting.lock)" ]; then 96 | logger -st "($(basename "$0"))" "[*] Killing Locked Processes ($(sed -n '1p' /tmp/x3mRouting.lock)) (pid=$(sed -n '2p' /tmp/x3mRouting.lock))" 97 | logger -st "($(basename "$0"))" "[*] $(ps | awk -v pid="$(sed -n '2p' /tmp/x3mRouting.lock)" '$1 == pid')" 98 | kill "$(sed -n '2p' /tmp/x3mRouting.lock)" 99 | rm -rf /tmp/x3mRouting.lock 100 | echo 101 | fi 102 | } 103 | 104 | Check_Lock() { 105 | 106 | TRIES=0 107 | MAX_TRIES=120 108 | 109 | while [ "$TRIES" -lt "$MAX_TRIES" ]; do 110 | if [ -f "/tmp/x3mRouting.lock" ]; then 111 | logger -st "($(basename "$0"))" "$$ x3mRouting Lock File in use by PID $(sed -n '2p' /tmp/x3mRouting.lock) - wait time $((MAX_TRIES - TRIES - 1)) secs left" 112 | sleep 3 113 | TRIES=$((TRIES + 1)) 114 | if [ "$TRIES" -eq $((MAX_TRIES-1)) ]; then 115 | Kill_Lock 116 | fi 117 | else 118 | echo "$@" > /tmp/x3mRouting.lock 119 | echo "$$" >> /tmp/x3mRouting.lock 120 | date +%s >> /tmp/x3mRouting.lock 121 | lockx3mRouting="true" 122 | TRIES="$MAX_TRIES" 123 | fi 124 | done 125 | 126 | # test code below 127 | # exit 1 128 | } 129 | 130 | Chk_Entware() { 131 | 132 | # ARGS [wait attempts] [specific_entware_utility] 133 | READY=1 # Assume Entware Utilities are NOT available 134 | ENTWARE_UTILITY= # Specific Entware utility to search for 135 | MAX_TRIES=30 136 | 137 | if [ -n "$2" ] && [ "$2" -eq "$2" ] 2>/dev/null; then 138 | MAX_TRIES="$2" 139 | elif [ -z "$2" ] && [ "$1" -eq "$1" ] 2>/dev/null; then 140 | MAX_TRIES="$1" 141 | fi 142 | 143 | if [ -n "$1" ] && ! [ "$1" -eq "$1" ] 2>/dev/null; then 144 | ENTWARE_UTILITY="$1" 145 | fi 146 | 147 | # Wait up to (default) 30 seconds to see if Entware utilities available..... 148 | TRIES="0" 149 | 150 | while [ "$TRIES" -lt "$MAX_TRIES" ]; do 151 | if [ -f "/opt/bin/opkg" ]; then 152 | if [ -n "$ENTWARE_UTILITY" ]; then # Specific Entware utility installed? 153 | if [ -n "$(opkg list-installed "$ENTWARE_UTILITY")" ]; then 154 | READY="0" # Specific Entware utility found 155 | else 156 | # Not all Entware utilities exists as a stand-alone package e.g. 'find' is in package 'findutils' 157 | if [ -d /opt ] && [ -n "$(find /opt/ -name "$ENTWARE_UTILITY")" ]; then 158 | READY="0" # Specific Entware utility found 159 | fi 160 | fi 161 | else 162 | READY="0" # Entware utilities ready 163 | fi 164 | break 165 | fi 166 | sleep 1 167 | logger -st "($(basename "$0"))" "$$ Entware $ENTWARE_UTILITY not available - wait time $((MAX_TRIES - TRIES - 1)) secs left" 168 | TRIES=$((TRIES + 1)) 169 | done 170 | return "$READY" 171 | } 172 | 173 | ### Define interface/bitmask to route traffic to below 174 | Set_Fwmark_Parms() { 175 | 176 | FWMARK_WAN="0x8000/0x8000" 177 | FWMARK_OVPNC1="0x1000/0x1000" 178 | FWMARK_OVPNC2="0x2000/0x2000" 179 | FWMARK_OVPNC3="0x4000/0x4000" 180 | FWMARK_OVPNC4="0x7000/0x7000" 181 | FWMARK_OVPNC5="0x3000/0x3000" 182 | } 183 | 184 | Set_IP_Rule() { 185 | 186 | VPN_ID="$1" 187 | 188 | case "$VPN_ID" in 189 | 0) 190 | if [ "$(ip rule | grep -cm 1 "$TAG_MARK")" -eq 0 ]; then 191 | ip rule add from 0/0 fwmark "$TAG_MARK" table 254 prio 9990 && logger -st "($(basename "$0"))" $$ "Created fwmark $TAG_MARK" 192 | ip route flush cache 193 | fi 194 | ;; 195 | 1) 196 | if [ "$(ip rule | grep -cm 1 "$TAG_MARK")" -eq 0 ]; then 197 | ip rule add from 0/0 fwmark "$TAG_MARK" table ovpnc1 prio 9995 && logger -st "($(basename "$0"))" $$ "Created fwmark $TAG_MARK" 198 | ip route flush cache 199 | fi 200 | ;; 201 | 2) 202 | if [ "$(ip rule | grep -cm 1 "$TAG_MARK")" -eq 0 ]; then 203 | ip rule add from 0/0 fwmark "$TAG_MARK" table ovpnc2 prio 9994 && logger -st "($(basename "$0"))" $$ "Created fwmark $TAG_MARK" 204 | ip route flush cache 205 | fi 206 | ;; 207 | 3) 208 | if [ "$(ip rule | grep -cm 1 "$TAG_MARK")" -eq 0 ]; then 209 | ip rule add from 0/0 fwmark "$TAG_MARK" table ovpnc3 prio 9993 && logger -st "($(basename "$0"))" $$ "Created fwmark $TAG_MARK" 210 | ip route flush cache 211 | fi 212 | ;; 213 | 4) 214 | if [ "$(ip rule | grep -cm 1 "$TAG_MARK")" -eq 0 ]; then 215 | ip rule add from 0/0 fwmark "$TAG_MARK" table ovpnc4 prio 9992 && logger -st "($(basename "$0"))" $$ "Created fwmark $TAG_MARK" 216 | ip route flush cache 217 | fi 218 | ;; 219 | 5) 220 | if [ "$(ip rule | grep -cm 1 "$TAG_MARK")" -eq 0 ]; then 221 | ip rule add from 0/0 fwmark "$TAG_MARK" table ovpnc5 prio 9991 && logger -st "($(basename "$0"))" $$ "Created fwmark $TAG_MARK" 222 | ip route flush cache 223 | fi 224 | ;; 225 | *) 226 | Error_Exit "ERROR $1 should be 0-WAN or 1-5=VPN" 227 | ;; 228 | esac 229 | } 230 | 231 | # check if /jffs/configs/dnsmasq.conf.add contains 'ipset=' entry for the domains 232 | Check_Dnsmasq() { 233 | 234 | DNSMASQ_ENTRY=$1 235 | 236 | if [ -s "/jffs/configs/dnsmasq.conf.add" ]; then # dnsmasq.conf.add file exists 237 | if [ "$(grep -cw "$DNSMASQ_ENTRY" "/jffs/configs/dnsmasq.conf.add")" -eq 0 ]; then # only add if entry does not exist 238 | echo "ipset=$DNSMASQ_ENTRY" >>/jffs/configs/dnsmasq.conf.add # add 'ipset=' domains entry to dnsmasq.conf.add 239 | service restart_dnsmasq 2>/dev/null 240 | fi 241 | else 242 | printf 'ipset=%s\n' "$DNSMASQ_ENTRY" >/jffs/configs/dnsmasq.conf.add # dnsmasq.conf.add does not exist, create dnsmasq.conf.add 243 | logger -st "($(basename "$0"))" $$ "ipset=$DNSMASQ_ENTRY" added to "/jffs/configs/dnsmasq.conf.add" 244 | service restart_dnsmasq 2>/dev/null 245 | fi 246 | } 247 | 248 | Create_Ipset_List() { 249 | 250 | IPSET_NAME=$1 251 | METHOD=$2 252 | 253 | Chk_Entware 120 254 | if [ "$READY" -eq 1 ]; then Error_Exit "Entware not ready. Unable to access ipset save/restore location"; fi 255 | if [ "$(ipset list -n "$IPSET_NAME" 2>/dev/null)" != "$IPSET_NAME" ]; then #does ipset list exist? 256 | if [ -s "$DIR/$IPSET_NAME" ]; then # does ipset restore file exist? 257 | if [ "$METHOD" = "DNSMASQ" ]; then 258 | ipset restore -! <"$DIR/$IPSET_NAME" 259 | logger -st "($(basename "$0"))" $$ IPSET restored: "$IPSET_NAME" from "$DIR/$IPSET_NAME" 260 | else 261 | ipset create "$IPSET_NAME" hash:net family inet hashsize 1024 maxelem 65536 262 | logger -st "($(basename "$0"))" $$ IPSET created: "$IPSET_NAME" 263 | fi 264 | else # method = ASN, MANUAL or AWS 265 | ipset create "$IPSET_NAME" hash:net family inet hashsize 1024 maxelem 65536 # No restore file, so create ipset list from scratch 266 | logger -st "($(basename "$0"))" $$ IPSET created: "$IPSET_NAME" hash:net family inet hashsize 1024 maxelem 65536 267 | fi 268 | fi 269 | 270 | } 271 | 272 | # if IPSET is older than 24 hours, save the current IPSET list to disk 273 | Check_Restore_File_Age() { 274 | 275 | IPSET_NAME=$1 276 | DIR=$2 277 | 278 | if [ -d "$DIR" ]; then 279 | if [ "$(find "$DIR" -name "$IPSET_NAME" -mtime +1 -print 2>/dev/null)" = "$DIR/$IPSET_NAME" ]; then 280 | ipset save "$IPSET_NAME" >"$DIR/$IPSET_NAME" 281 | fi 282 | fi 283 | } 284 | 285 | # If cronjob to back up the DOMAINS ipset list every 24 hours @ 2:00 AM does not exist, then create it 286 | Check_Cron_Job() { 287 | 288 | IPSET_NAME=$1 289 | 290 | cru l | grep "$IPSET_NAME" || cru a "$IPSET_NAME" "0 2 * * * ipset save $IPSET_NAME > $DIR/$IPSET_NAME" >/dev/null 2>&1 && logger -st "($(basename "$0"))" $$ CRON schedule created: "#$IPSET_NAME#" "'0 2 * * * ipset save $IPSET_NAME'" 291 | 292 | } 293 | 294 | # Route IPSET to target WAN or VPN 295 | Create_Routing_Rules() { 296 | 297 | IPSET_NAME=$1 298 | 299 | iptables -t mangle -D PREROUTING -i br0 -m set --match-set "$IPSET_NAME" dst -j MARK --set-mark "$TAG_MARK" 2>/dev/null && logger -st "($(basename "$0"))" $$ Selective Routing Rule via "$TARGET_DESC" deleted for "$IPSET_NAME" fwmark "$TAG_MARK" 300 | iptables -t mangle -A PREROUTING -i br0 -m set --match-set "$IPSET_NAME" dst -j MARK --set-mark "$TAG_MARK" && logger -st "($(basename "$0"))" $$ Selective Routing Rule via "$TARGET_DESC" created for "$IPSET_NAME" fwmark "$TAG_MARK" 301 | 302 | } 303 | 304 | Exit_Routine() { 305 | 306 | if [ "$lockx3mRouting" = "true" ]; then rm -rf "/tmp/x3mRouting.lock"; fi 307 | logger -st "($(basename "$0"))" $$ Completed Script Execution 308 | exit 0 309 | } 310 | 311 | Error_Exit() { 312 | 313 | if [ "$lockx3mRouting" = "true" ]; then rm -rf "/tmp/x3mRouting.lock"; fi 314 | error_str="$*" 315 | logger -st "($(basename "$0"))" $$ "$error_str" 316 | exit 1 317 | } 318 | 319 | Check_For_Shebang() { 320 | 321 | CLIENTX_FILE=$1 322 | SHEBANG_COUNT=0 323 | EMPTY_LINE_COUNT=0 324 | NOT_EMPTY_LINE_COUNT=0 325 | 326 | if [ -f "$CLIENTX_FILE" ]; then # file exists 327 | while read -r LINE || [ -n "$LINE" ]; do 328 | if [ "$LINE" = "#!/bin/sh" ]; then 329 | SHEBANG_COUNT=$((SHEBANG_COUNT + 1)) 330 | continue 331 | fi 332 | 333 | if [ -z "$LINE" ]; then 334 | EMPTY_LINE_COUNT=$((EMPTY_LINE_COUNT + 1)) 335 | fi 336 | 337 | if [ -n "$LINE" ]; then 338 | NOT_EMPTY_LINE_COUNT=$((NOT_EMPTY_LINE_COUNT + 1)) 339 | fi 340 | 341 | done <"$CLIENTX_FILE" 342 | else 343 | return 344 | fi 345 | 346 | if [ "$NOT_EMPTY_LINE_COUNT" -eq 0 ]; then 347 | printf '\n\n%s\n' "$CLIENTX_FILE has $SHEBANG_COUNT shebang entry and $EMPTY_LINE_COUNT empty lines." 348 | printf '%s\n' "Would you like to remove $CLIENTX_FILE?" 349 | printf '%b[1]%b --> Yes\n' "${COLOR_GREEN}" "${COLOR_WHITE}" 350 | printf '%b[2]%b --> No\n' "${COLOR_GREEN}" "${COLOR_WHITE}" 351 | echo 352 | printf '[1-2]: ' 353 | read -r "OPTION" 354 | case "$OPTION" in 355 | 1) 356 | rm "$CLIENTX_FILE" 357 | echo "file deleted" 358 | return 359 | ;; 360 | 2) 361 | return 362 | ;; 363 | *) 364 | echo "[*] $OPTION Isn't An Option!" 365 | ;; 366 | esac 367 | fi 368 | 369 | } 370 | 371 | Check_Nat_Start_For_Entries() { 372 | 373 | IPSET_NAME=$1 374 | OPT1=$2 375 | DIR=$3 376 | 377 | if [ "$(echo "$OPT1" | grep -c "Manual")" -ge 1 ]; then # 1 parm passed 378 | SCRIPT_ENTRY="sh /jffs/scripts/x3mRouting/x3mRouting.sh ipset_name=$IPSET_NAME" 379 | else # OPT1 parm passed e.g. dnsmasq=, aws_region=, asnum=, ip= 380 | SCRIPT_ENTRY="sh /jffs/scripts/x3mRouting/x3mRouting.sh ipset_name=$IPSET_NAME $OPT1" 381 | fi 382 | 383 | if [ "$DIR" != "/opt/tmp" ]; then 384 | if [ "$(echo "$@" | grep -c 'asnum=')" -eq 0 ]; then 385 | SCRIPT_ENTRY="$SCRIPT_ENTRY dir=$DIR" 386 | fi 387 | fi 388 | 389 | # nat-start File 390 | if [ -s "$NAT_START" ]; then 391 | if [ "$(grep -cw "$SCRIPT_ENTRY" "$NAT_START")" -eq 0 ]; then # if true, then no lines exist 392 | echo "$SCRIPT_ENTRY" >>"$NAT_START" # add $SCRIPT_ENTRY to $NAT_START 393 | logger -st "($(basename "$0"))" $$ "$SCRIPT_ENTRY added to $NAT_START" 394 | fi 395 | else # file does not exist 396 | true >"$NAT_START" 397 | { 398 | printf '%s\n' "#!/bin/sh" 399 | printf '%s\n' "$SCRIPT_ENTRY" 400 | } >"$NAT_START" 401 | logger -st "($(basename "$0"))" $$ "$SCRIPT_ENTRY added to $NAT_START" 402 | fi 403 | 404 | # set permissions for each file 405 | [ -s "$NAT_START" ] && chmod 755 "$NAT_START" 406 | 407 | } 408 | 409 | Check_Files_For_Entries() { 410 | 411 | SRC_IFACE=$1 412 | DST_IFACE=$2 413 | IPSET_NAME=$3 414 | OPT1=$4 415 | DIR=$5 416 | 417 | if [ "$(echo "$OPT1" | grep -c "Manual")" -ge 1 ]; then # 1 parm passed 418 | SCRIPT_ENTRY="sh /jffs/scripts/x3mRouting/x3mRouting.sh $SRC_IFACE $DST_IFACE $IPSET_NAME" 419 | else # OPT1 parm passed e.g. dnsmasq=, aws_region=, asnum=, ip= 420 | SCRIPT_ENTRY="sh /jffs/scripts/x3mRouting/x3mRouting.sh $SRC_IFACE $DST_IFACE $IPSET_NAME $OPT1" 421 | fi 422 | 423 | if [ "$DIR" != "/opt/tmp" ]; then 424 | SCRIPT_ENTRY="$SCRIPT_ENTRY dir=$DIR" 425 | fi 426 | 427 | if [ "$SRC_IFACE" = "ALL" ]; then 428 | VPNID=$DST_IFACE 429 | else 430 | VPNID=$SRC_IFACE 431 | fi 432 | 433 | IPTABLES_DEL_ENTRY="iptables -t mangle -D PREROUTING -i br0 -m set --match-set $IPSET_NAME dst -j MARK --set-mark $TAG_MARK 2>/dev/null" 434 | IPTABLES_ADD_ENTRY="iptables -t mangle -A PREROUTING -i br0 -m set --match-set $IPSET_NAME dst -j MARK --set-mark $TAG_MARK" 435 | VPNC_UP_FILE="/jffs/scripts/x3mRouting/vpnclient${VPNID}-route-up" 436 | VPNC_DOWN_FILE="/jffs/scripts/x3mRouting/vpnclient${VPNID}-route-pre-down" 437 | 438 | # VPN Client route-up File 439 | for IPTABLES_ENTRY in "$IPTABLES_DEL_ENTRY" "$IPTABLES_ADD_ENTRY"; do 440 | if [ -s "$VPNC_UP_FILE" ]; then 441 | if [ "$(grep -cw "$IPTABLES_ENTRY" "$VPNC_UP_FILE")" -eq 0 ]; then # if true, then no lines exist 442 | echo "$IPTABLES_ENTRY" >>"$VPNC_UP_FILE" # add $SCRIPT_ENTRY to $VPNC_UP_FILE 443 | logger -st "($(basename "$0"))" $$ "$IPTABLES_ENTRY added to $VPNC_UP_FILE" 444 | fi 445 | else # file does not exist, create VPNC_UP_FILE 446 | true >"$VPNC_UP_FILE" 447 | { 448 | printf '%s\n' "#!/bin/sh" 449 | printf '%s\n' "$IPTABLES_ENTRY" 450 | } >"$VPNC_UP_FILE" 451 | logger -st "($(basename "$0"))" $$ "$IPTABLES_ENTRY added to $VPNC_UP_FILE" 452 | fi 453 | done 454 | 455 | # VPN Client route-pre-down File 456 | if [ -s "$VPNC_DOWN_FILE" ]; then 457 | if [ "$(grep -cw "$IPTABLES_DEL_ENTRY" "$VPNC_DOWN_FILE")" -eq 0 ]; then # if true, then no lines exist 458 | echo "$IPTABLES_DEL_ENTRY" >>"$VPNC_DOWN_FILE" # add $SCRIPT_ENTRY to $VPNC_DOWN_FILE 459 | logger -st "($(basename "$0"))" $$ "$IPTABLES_DEL_ENTRY added to $VPNC_DOWN_FILE" 460 | fi 461 | else # file does not exist, create VPNC_DOWN_FILE 462 | true >"$VPNC_DOWN_FILE" 463 | { 464 | printf '%s\n' "#!/bin/sh" 465 | printf '%s\n' "$IPTABLES_DEL_ENTRY" 466 | } >"$VPNC_DOWN_FILE" 467 | logger -st "($(basename "$0"))" $$ "$IPTABLES_DEL_ENTRY added to $VPNC_DOWN_FILE" 468 | fi 469 | 470 | # nat-start File 471 | if [ -s "$NAT_START" ]; then 472 | if [ "$(grep -cw "$SCRIPT_ENTRY" "$NAT_START")" -eq 0 ]; then # if true, then no lines exist 473 | echo "$SCRIPT_ENTRY" >>"$NAT_START" # add $SCRIPT_ENTRY to $NAT_START 474 | logger -st "($(basename "$0"))" $$ "$SCRIPT_ENTRY added to $NAT_START" 475 | fi 476 | else # file does not exist 477 | true >"$NAT_START" 478 | { 479 | printf '%s\n' "#!/bin/sh" 480 | printf '%s\n' "$SCRIPT_ENTRY" 481 | } >"$NAT_START" 482 | logger -st "($(basename "$0"))" $$ "$SCRIPT_ENTRY added to $NAT_START" 483 | fi 484 | 485 | #set permissions for each file 486 | [ -s "$VPNC_UP_FILE" ] && chmod 755 "$VPNC_UP_FILE" 487 | [ -s "$VPNC_DOWN_FILE" ] && chmod 755 "$VPNC_DOWN_FILE" 488 | [ -s "$NAT_START" ] && chmod 755 "$NAT_START" 489 | 490 | } 491 | 492 | Process_Src_Option() { 493 | 494 | SRC_IFACE=$1 495 | DST_IFACE=$2 496 | IPSET_NAME=$3 497 | SRC=$(echo "$@" | sed -n "s/^.*src=//p" | awk '{print $1}') 498 | SRC_RANGE=$(echo "$@" | sed -n "s/^.*src_range=//p" | awk '{print $1}') 499 | if [ "$(echo "$@" | grep -c 'dir=')" -gt 0 ]; then 500 | DIR=$(echo "$@" | sed -n "s/^.*dir=//p" | awk '{print $1}') # v1.2 Mount point/directory for backups 501 | else 502 | DIR="/opt/tmp" 503 | fi 504 | 505 | if [ "$(echo "$@" | grep -c 'asnum=')" -gt 0 ]; then 506 | ASN=$(echo "$@" | sed -n "s/^.*asnum=//p" | awk '{print $1}') 507 | X3M_METHOD="asnum=${ASN}" 508 | elif [ "$(echo "$@" | grep -c 'aws_region=')" -gt 0 ]; then 509 | AWS_REGION=$(echo "$@" | sed -n "s/^.*aws_region=//p" | awk '{print $1}') 510 | X3M_METHOD="aws_region=${AWS_REGION}" 511 | elif [ "$(echo "$@" | grep -c 'dnsmasq=')" -gt 0 ]; then 512 | DOMAINS=$(echo "$@" | sed -n "s/^.*dnsmasq=//p" | awk '{print $1}') 513 | X3M_METHOD="dnsmasq=${DOMAINS}" 514 | elif [ "$(echo "$@" | grep -c 'dnsmasq_file=')" -gt 0 ]; then 515 | DNSMASQ_FILE=$(echo "$@" | sed -n "s/^.*dnsmasq_file=//p" | awk '{print $1}') 516 | X3M_METHOD="dnsmasq_file=${DNSMASQ_FILE}" 517 | else 518 | X3M_METHOD="Manual" 519 | fi 520 | 521 | # Create the IPSET list first! 522 | while true; do 523 | # Check for 'dnsmasq=' parm 524 | if [ "$(echo "$@" | grep -c 'dnsmasq=')" -gt 0 ] || [ "$(echo "$@" | grep -c 'dnsmasq_file=')" -gt 0 ]; then 525 | DNSMASQ_Parm $@ 526 | break 527 | fi 528 | # Check for 'autoscan=' parm 529 | if [ "$(echo "$@" | grep -c 'autoscan=')" -gt 0 ]; then 530 | Dnsmasq_Log_File 531 | Harvest_Domains $@ 532 | break 533 | fi 534 | # check if 'asnum=' parm 535 | if [ "$(echo "$@" | grep -c 'asnum=')" -gt 0 ]; then 536 | ASNUM_Parm $@ 537 | break 538 | fi 539 | # check if 'aws_region=' parm 540 | if [ "$(echo "$@" | grep -c 'aws_region=')" -gt 0 ]; then 541 | AWS_Region_Parm $@ 542 | break 543 | fi 544 | # Manual Method 545 | if [ "$X3M_METHOD" = "Manual" ]; then 546 | Manual_Method $@ 547 | break 548 | fi 549 | done 550 | 551 | # Manual Method to create ipset list if IP address specified 552 | if [ -n "$SRC" ]; then 553 | if [ "$X3M_METHOD" = "Manual" ]; then # 554 | SCRIPT_ENTRY="sh /jffs/scripts/x3mRouting/x3mRouting.sh $SRC_IFACE $DST_IFACE $IPSET_NAME src=${SRC}" 555 | [ "$DIR" != "/opt/tmp" ] && SCRIPT_ENTRY="sh /jffs/scripts/x3mRouting/x3mRouting.sh $SRC_IFACE $DST_IFACE $IPSET_NAME src=${SRC} dir=${DIR}" 556 | Manual_Method $@ 557 | else 558 | SCRIPT_ENTRY="sh /jffs/scripts/x3mRouting/x3mRouting.sh $SRC_IFACE $DST_IFACE $IPSET_NAME $X3M_METHOD src=${SRC}" 559 | [ "$DIR" != "/opt/tmp" ] && SCRIPT_ENTRY="sh /jffs/scripts/x3mRouting/x3mRouting.sh $SRC_IFACE $DST_IFACE $IPSET_NAME $X3M_METHOD src=${SRC} dir=${DIR}" 560 | fi 561 | IPTABLES_DEL_ENTRY="iptables -t mangle -D PREROUTING -i br0 --src $SRC -m set --match-set $IPSET_NAME dst -j MARK --set-mark $TAG_MARK 2>/dev/null" 562 | IPTABLES_ADD_ENTRY="iptables -t mangle -A PREROUTING -i br0 --src $SRC -m set --match-set $IPSET_NAME dst -j MARK --set-mark $TAG_MARK" 563 | # Create routing rules 564 | eval "$IPTABLES_DEL_ENTRY" 565 | eval "$IPTABLES_ADD_ENTRY" 566 | fi 567 | 568 | if [ -n "$SRC_RANGE" ]; then 569 | if [ "$X3M_METHOD" = "Manual" ]; then 570 | SCRIPT_ENTRY="sh /jffs/scripts/x3mRouting/x3mRouting.sh $SRC_IFACE $DST_IFACE $IPSET_NAME src_range=${SRC_RANGE}" 571 | [ "$DIR" != "/opt/tmp" ] && SCRIPT_ENTRY="sh /jffs/scripts/x3mRouting/x3mRouting.sh $SRC_IFACE $DST_IFACE $IPSET_NAME src_range=${SRC_RANGE} dir=${DIR}" 572 | Manual_Method $@ 573 | else 574 | SCRIPT_ENTRY="sh /jffs/scripts/x3mRouting/x3mRouting.sh $SRC_IFACE $DST_IFACE $IPSET_NAME $X3M_METHOD src_range=${SRC_RANGE}" 575 | [ "$DIR" != "/opt/tmp" ] && SCRIPT_ENTRY="sh /jffs/scripts/x3mRouting/x3mRouting.sh $SRC_IFACE $DST_IFACE $IPSET_NAME $X3M_METHOD src_range=${SRC_RANGE} dir=${DIR}" 576 | fi 577 | IPTABLES_DEL_ENTRY="iptables -t mangle -D PREROUTING -i br0 -m iprange --src-range $SRC_RANGE -m set --match-set $IPSET_NAME dst -j MARK --set-mark $TAG_MARK 2>/dev/null" 578 | IPTABLES_ADD_ENTRY="iptables -t mangle -A PREROUTING -i br0 -m iprange --src-range $SRC_RANGE -m set --match-set $IPSET_NAME dst -j MARK --set-mark $TAG_MARK" 579 | # Create routing rules 580 | eval "$IPTABLES_DEL_ENTRY" 581 | eval "$IPTABLES_ADD_ENTRY" 582 | fi 583 | 584 | if [ "$SRC_IFACE" = "ALL" ]; then 585 | VPNID=$DST_IFACE 586 | else 587 | VPNID=$SRC_IFACE 588 | fi 589 | 590 | VPNC_UP_FILE="/jffs/scripts/x3mRouting/vpnclient${VPNID}-route-up" 591 | VPNC_DOWN_FILE="/jffs/scripts/x3mRouting/vpnclient${VPNID}-route-pre-down" 592 | 593 | # nat-start File 594 | if [ -s "$NAT_START" ]; then 595 | if [ "$(grep -cw "$SCRIPT_ENTRY" "$NAT_START")" -eq 0 ]; then # if true, then no lines exist 596 | echo "$SCRIPT_ENTRY" >>"$NAT_START" # add $SCRIPT_ENTRY to $NAT_START 597 | logger -st "($(basename "$0"))" $$ "$SCRIPT_ENTRY added to $NAT_START" 598 | fi 599 | else # file does not exist, create VPNC_UP_FILE 600 | true >"$NAT_START" 601 | { 602 | printf '%s\n' "#!/bin/sh" 603 | printf '%s\n' "$SCRIPT_ENTRY" 604 | } >"$NAT_START" 605 | logger -st "($(basename "$0"))" $$ "$SCRIPT_ENTRY added to $NAT_START" 606 | fi 607 | 608 | # VPN Client route-up File 609 | for IPTABLES_ENTRY in "$IPTABLES_DEL_ENTRY" "$IPTABLES_ADD_ENTRY"; do 610 | if [ -s "$VPNC_UP_FILE" ]; then 611 | if [ "$(grep -cw "$IPTABLES_ENTRY" "$VPNC_UP_FILE")" -eq 0 ]; then # if true, then no lines exist 612 | echo "$IPTABLES_ENTRY" >>"$VPNC_UP_FILE" # add $SCRIPT_ENTRY to $VPNC_UP_FILE 613 | logger -st "($(basename "$0"))" $$ "$IPTABLES_ENTRY added to $VPNC_UP_FILE" 614 | fi 615 | else # file does not exist, create VPNC_UP_FILE 616 | true >"$VPNC_UP_FILE" 617 | { 618 | printf '%s\n' "#!/bin/sh" 619 | printf '%s\n' "$IPTABLES_ENTRY" 620 | } >"$VPNC_UP_FILE" 621 | logger -st "($(basename "$0"))" $$ "$IPTABLES_ENTRY added to $VPNC_UP_FILE" 622 | fi 623 | done 624 | 625 | # VPN Client route-pre-down File 626 | if [ -s "$VPNC_DOWN_FILE" ]; then # file exists 627 | if [ "$(grep -cw "$IPTABLES_DEL_ENTRY" "$VPNC_DOWN_FILE")" -eq 0 ]; then # if true, then no lines exist 628 | echo "$IPTABLES_DEL_ENTRY" >>"$VPNC_DOWN_FILE" # add $SCRIPT_ENTRY to $VPNC_UP_FILE 629 | logger -st "($(basename "$0"))" $$ "$IPTABLES_DEL_ENTRY added to $VPNC_DOWN_FILE" 630 | fi 631 | else # file does not exist, create VPNC_UP_FILE 632 | true >"$VPNC_DOWN_FILE" 633 | { 634 | printf '%s\n' "#!/bin/sh" 635 | printf '%s\n' "$IPTABLES_DEL_ENTRY" 636 | } >"$VPNC_DOWN_FILE" 637 | logger -st "($(basename "$0"))" $$ "$IPTABLES_DEL_ENTRY added to $VPNC_DOWN_FILE" 638 | fi 639 | 640 | #set permissions for each file 641 | [ -s "$VPNC_UP_FILE" ] && chmod 755 "$VPNC_UP_FILE" 642 | [ -s "$VPNC_DOWN_FILE" ] && chmod 755 "$VPNC_DOWN_FILE" 643 | [ -s "$NAT_START" ] && chmod 755 "$NAT_START" 644 | 645 | } 646 | 647 | Process_DNSMASQ() { 648 | 649 | IPSET_NAME=$1 650 | DNSMASQ_ENTRY=$2 651 | DIR=$3 652 | 653 | Check_Dnsmasq "$DNSMASQ_ENTRY" 654 | Create_Ipset_List "$IPSET_NAME" "DNSMASQ" 655 | Check_Restore_File_Age "$IPSET_NAME" "$DIR" 656 | Check_Cron_Job "$IPSET_NAME" 657 | } 658 | 659 | Download_ASN_Ipset_List() { 660 | 661 | IPSET_NAME=$1 662 | ASN=$2 663 | 664 | # curl code source ~ https://github.com/Adamm00/IPSet_ASUS/blob/master/firewall.sh 665 | curl -fsL --retry 3 --connect-timeout 3 "https://api.hackertarget.com/aslookup/?q=$ASN" | grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}/[0-9]{1,2}' | awk '{printf "add '"$IPSET_NAME"' %s\n", $1 }' | awk '!x[$0]++' | ipset restore -! 666 | 667 | } 668 | 669 | Load_MANUAL_Ipset_List() { 670 | 671 | IPSET_NAME=$1 672 | DIR=$2 673 | 674 | if [ "$(ipset list -n "$IPSET_NAME" 2>/dev/null)" = "$IPSET_NAME" ]; then #does ipset list exist? 675 | [ -s "$DIR/$IPSET_NAME" ] && awk '{print "add '"$IPSET_NAME"' " $1}' "$DIR/$IPSET_NAME" | ipset restore -! 676 | fi 677 | } 678 | 679 | # Download Amazon AWS json file 680 | Download_AMAZON() { 681 | 682 | DIR=$1 683 | 684 | if [ -s "$DIR/ip-ranges.json" ]; then 685 | if [ "$(find "$DIR" -name "ip-ranges.json" -mtime +7 -print)" = "$DIR/ip-ranges.json" ]; then 686 | STATUS=$(curl --retry 3 -sL -o "$DIR/ip-ranges.json" -w '%{http_code}' "https://ip-ranges.amazonaws.com/ip-ranges.json") 687 | if [ "$STATUS" -eq 200 ]; then 688 | logger -st "($(basename "$0"))" $$ "Download of https://ip-ranges.amazonaws.com/ip-ranges.json successful." 689 | else 690 | logger -st "($(basename "$0"))" $$ "Download of https://ip-ranges.amazonaws.com/ip-ranges.json failed. Using existing file." 691 | fi 692 | fi 693 | else 694 | STATUS=$(curl --retry 3 -sL -o "$DIR/ip-ranges.json" -w '%{http_code}' "https://ip-ranges.amazonaws.com/ip-ranges.json") 695 | if [ "$STATUS" -eq 200 ]; then 696 | logger -st "($(basename "$0"))" $$ "Download of https://ip-ranges.amazonaws.com/ip-ranges.json successful." 697 | else 698 | Error_Exit "Download of https://ip-ranges.amazonaws.com/ip-ranges.json failed." 699 | fi 700 | fi 701 | } 702 | 703 | Load_AWS_Ipset_List() { 704 | IPSET_NAME=$1 705 | REGION=$2 706 | DIR=$3 707 | 708 | Download_AMAZON "$DIR" 709 | 710 | if [ ! -s "$DIR/$IPSET_NAME" ]; then 711 | true >"$DIR/$IPSET_NAME" 712 | fi 713 | 714 | # don't quote the parameter so it is treated like an array! 715 | for REGION in $REGION; do 716 | jq '.prefixes[] | select(.region=='\""$REGION"\"') | .ip_prefix' <"$DIR/ip-ranges.json" | sed 's/"//g' >>"$DIR/$IPSET_NAME" 717 | done 718 | sort -gt '/' -k 1 "$DIR/$IPSET_NAME" | sort -ut '.' -k 1,1n -k 2,2n -k 3,3n -k 4,4n >"$DIR/${IPSET_NAME}_tmp" 719 | mv "$DIR/${IPSET_NAME}_tmp" "$DIR/$IPSET_NAME" 720 | awk '{print "add '"$IPSET_NAME"' " $1}' "$DIR/$IPSET_NAME" | ipset restore -! 721 | } 722 | 723 | Delete_Ipset_List() { 724 | 725 | IPSET_NAME=$1 726 | DIR=$2 727 | 728 | # Check /jffs/configs/dnsmasq.conf.add for IPSET entry and remove if found 729 | if [ -s /jffs/configs/dnsmasq.conf.add ]; then 730 | logger -t "($(basename "$0"))" $$ "Checking /jffs/configs/dnsmasq.conf.add..." 731 | if [ "$(grep -cw "$IPSET_NAME" "/jffs/configs/dnsmasq.conf.add")" -ge 1 ]; then # if true, then one or more lines exist 732 | sed -i "/^ipset.*${IPSET_NAME}$/d" /jffs/configs/dnsmasq.conf.add 733 | logger -t "($(basename "$0"))" $$ "IPSET $IPSET_NAME deleted from /jffs/configs/dnsmasq.conf.add" 734 | service restart_dnsmasq 2>/dev/null 735 | else 736 | logger -t "($(basename "$0"))" $$ "no references for IPSET $IPSET_NAME found in /jffs/configs/dnsmasq.conf.add" 737 | fi 738 | fi 739 | 740 | # Check for IPSET entry in /jffs/scripts/nat-start and remove if found 741 | if [ -s "$NAT_START" ]; then 742 | logger -t "($(basename "$0"))" $$ "Checking $NAT_START..." 743 | if [ "$(grep -cw "$IPSET_NAME" "$NAT_START")" -ge 1 ]; then # if true, then one or more lines exist 744 | sed -i "\~\b$IPSET_NAME\b~d" "$NAT_START" 745 | logger -t "($(basename "$0"))" $$ "Script entry for $IPSET_NAME deleted from $NAT_START" 746 | Check_For_Shebang "$NAT_START" 747 | else 748 | logger -t "($(basename "$0"))" $$ "No $IPSET_NAME references found in $NAT_START" 749 | fi 750 | 751 | if [ "$(grep -cw "ipset_name=$IPSET_NAME" "$NAT_START")" -ge 1 ]; then 752 | sed -i "\~\bipset_name=$IPSET_NAME\b~d" "$NAT_START" 753 | logger -t "($(basename "$0"))" $$ "Script entry for $IPSET_NAME deleted from $NAT_START" 754 | Check_For_Shebang "$NAT_START" 755 | else 756 | logger -t "($(basename "$0"))" $$ "No ipset_name=$IPSET_NAME references found in $NAT_START" 757 | fi 758 | fi 759 | 760 | # Check_Files_For_Entries for any entries related to IPSET_NAME 761 | for VPNID in 1 2 3 4 5; do 762 | VPNC_UP_FILE="/jffs/scripts/x3mRouting/vpnclient${VPNID}-route-up" 763 | VPNC_DOWN_FILE="/jffs/scripts/x3mRouting/vpnclient${VPNID}-route-pre-down" 764 | if [ -s "$VPNC_UP_FILE" ]; then # file exists 765 | logger -t "($(basename "$0"))" $$ "Checking $VPNC_UP_FILE..." 766 | # Note: not passing del entry 767 | if [ "$(grep -cw "$IPSET_NAME" "$VPNC_UP_FILE")" -ge 1 ]; then # if true, then one or more lines exist 768 | sed -i "\~\b $IPSET_NAME\b~d" "$VPNC_UP_FILE" 769 | logger -t "($(basename "$0"))" $$ "ipset $IPSET_NAME entry deleted from $VPNC_UP_FILE" 770 | Check_For_Shebang "$VPNC_UP_FILE" 771 | else 772 | logger -t "($(basename "$0"))" $$ "No $IPSET_NAME references found in $VPNC_UP_FILE" 773 | fi 774 | fi 775 | if [ -s "$VPNC_DOWN_FILE" ]; then # file exists 776 | if [ "$(grep -cw "$IPSET_NAME" "$VPNC_DOWN_FILE")" -ge 1 ]; then # if true, then one or more lines exist 777 | sed -i "\~\b $IPSET_NAME\b~d" "$VPNC_DOWN_FILE" 778 | logger -t "($(basename "$0"))" $$ "ipset $IPSET_NAME entry deleted from $VPNC_DOWN_FILE" 779 | Check_For_Shebang "$VPNC_DOWN_FILE" 780 | else 781 | logger -t "($(basename "$0"))" $$ "No $IPSET_NAME references found in $VPNC_DOWN_FILE" 782 | fi 783 | fi 784 | done 785 | 786 | #Check_Cron_Job 787 | logger -t "($(basename "$0"))" $$ "Checking crontab..." 788 | if cru l | grep "$IPSET_NAME" 2>/dev/null; then 789 | cru d "$IPSET_NAME" "0 2 * * * ipset save $IPSET_NAME" 2>/dev/null 790 | logger -t "($(basename "$0"))" $$ CRON schedule deleted: "#$IPSET_NAME#" "'0 2 * * * ipset save $IPSET_NAME'" 791 | fi 792 | 793 | logger -t "($(basename "$0"))" $$ "Checking PREROUTING iptables rules..." 794 | FWMARK=$(iptables -nvL PREROUTING -t mangle --line | grep -m 1 "$IPSET_NAME " | awk '{print $16}' | tr -d '\r') 795 | if [ -n "$FWMARK" ]; then 796 | # Delete PREROUTING Rules for Normal IPSET routing 797 | iptables -nvL PREROUTING -t mangle --line | grep "br0" | grep "$IPSET_NAME " | grep "match-set" | awk '{print $1, $12}' | sort -nr | while read -r CHAIN_NUM IPSET_NAME; do 798 | iptables -t mangle -D PREROUTING "$CHAIN_NUM" && logger -t "($(basename "$0"))" $$ "Deleted PREROUTING Chain $CHAIN_NUM for IPSET List $IPSET_NAME" 799 | done 800 | # Delete the fmwark priority if no IPSET lists are using it 801 | FWMARK_FLAG=$(iptables -nvL PREROUTING -t mangle --line | grep -m 1 "$FWMARK" | awk '{print $16}' | tr -d '\r' ' ') 802 | if [ -z "$FWMARK_FLAG" ]; then 803 | ip rule del fwmark "$FWMARK/$FWMARK" 2>/dev/null && logger -t "($(basename "$0"))" $$ "Deleted fwmark $FWMARK/$FWMARK" 804 | fi 805 | fi 806 | 807 | # Delete PREROUTING Rule for VPN Server to IPSET & POSTROUTING Rule 808 | logger -t "($(basename "$0"))" $$ "Checking POSTROUTNG iptables rules..." 809 | for SERVER_TUN in tun21 tun22; do 810 | SERVER=$(echo "$SERVER_TUN" | awk '{ string=substr($0, 5, 5); print string; }') 811 | TUN="$(iptables -nvL PREROUTING -t mangle --line | grep "$SERVER_TUN" | grep "$IPSET_NAME" | grep "match-set" | awk '{print $7}')" 812 | if [ -n "$TUN" ]; then 813 | Define_IFACE "$IPSET_NAME" 814 | VPN_CLIENT_INSTANCE=$(echo "$IFACE" | awk '{ string=substr($0, 5, 5); print string; }') 815 | VPN_Server_to_IPSET "$SERVER" "$VPN_CLIENT_INSTANCE" "$IFACE" "$IPSET_NAME" "$TAG_MARK" "del" 816 | fi 817 | done 818 | 819 | # Destroy the IPSET list 820 | logger -t "($(basename "$0"))" $$ "Checking if IPSET list $IPSET_NAME exists..." 821 | if [ "$(ipset list -n "$IPSET_NAME" 2>/dev/null)" = "$IPSET_NAME" ]; then 822 | ipset destroy "$IPSET_NAME" && logger -st "($(basename "$0"))" $$ "IPSET $IPSET_NAME deleted!" || $$ "IPSET $IPSET_NAME deleted!" || Error_Exit "Error attempting to delete IPSET $IPSET_NAME!" 823 | fi 824 | 825 | logger -t "($(basename "$0"))" $$ "Checking if IPSET backup file exists..." 826 | if [ -s "$DIR/$IPSET_NAME" ]; then 827 | while true; do 828 | printf '\n%b%s%b\n' "$COLOR_RED" "DANGER ZONE!" "$COLOR_WHITE" 829 | printf '\n%s%b%s%b\n' "Delete the backup file in " "$COLOR_GREEN" "$DIR/$IPSET_NAME" "$COLOR_WHITE" 830 | printf '%b[1]%b --> Yes\n' "$COLOR_GREEN" "$COLOR_WHITE" 831 | printf '%b[2]%b --> No\n' "$COLOR_GREEN" "$COLOR_WHITE" 832 | echo 833 | printf '[1-2]: ' 834 | read -r "CONFIRM_DEL" 835 | case "$CONFIRM_DEL" in 836 | 1) 837 | rm "$DIR/$IPSET_NAME" && printf '\n%b%s%b%s\n' "$COLOR_GREEN" "$DIR/$IPSET_NAME" "$COLOR_WHITE" " file deleted." 838 | echo 839 | return 840 | ;; 841 | *) 842 | return 843 | ;; 844 | esac 845 | done 846 | fi 847 | 848 | } 849 | 850 | DNSMASQ_Parm() { 851 | 852 | if [ "$(echo "$@" | grep -c "dnsmasq_file=")" -eq 1 ]; then 853 | DNSMASQ_FILE=$(echo "$@" | sed -n "s/^.*dnsmasq_file=//p" | awk '{print $1}') 854 | if [ -s "$DNSMASQ_FILE" ]; then 855 | while read -r DOMAINS; do 856 | COMMA_DOMAINS_LIST="$COMMA_DOMAINS_LIST,$DOMAINS" 857 | done <"$DNSMASQ_FILE" 858 | DOMAINS="$(echo "$COMMA_DOMAINS_LIST" | sed 's/^,*//;')" 859 | fi 860 | sed -i "\~ipset=.*$IPSET_NAME~d" /jffs/configs/dnsmasq.conf.add 861 | fi 862 | if [ "$(echo "$@" | grep -c "dnsmasq=")" -eq 1 ]; then 863 | DOMAINS=$(echo "$@" | sed -n "s/^.*dnsmasq=//p" | awk '{print $1}') 864 | fi 865 | DOMAINS_LIST=$(echo "$DOMAINS" | sed 's/,$//' | tr ',' '/') 866 | DNSMASQ_ENTRY="/$DOMAINS_LIST/$IPSET_NAME" 867 | Process_DNSMASQ "$IPSET_NAME" "$DNSMASQ_ENTRY" "$DIR" 868 | 869 | } 870 | 871 | ASNUM_Parm() { 872 | 873 | ASN=$(echo "$@" | sed -n "s/^.*asnum=//p" | awk '{print $1}' | tr ',' ' ') 874 | 875 | for ASN in $ASN; do 876 | PREFIX=$(printf '%-.2s' "$ASN") 877 | NUMBER="$(echo "$ASN" | sed 's/^AS//')" 878 | if [ "$PREFIX" = "AS" ]; then 879 | # Check for valid Number and skip if bad 880 | A=$(echo "$NUMBER" | grep -oE '^\-?[0-9]+$') 881 | if [ -z "$A" ]; then 882 | echo "Skipping invalid ASN: $NUMBER" 883 | else 884 | Create_Ipset_List "$IPSET_NAME" "ASN" 885 | Download_ASN_Ipset_List "$IPSET_NAME" "$ASN" 886 | fi 887 | else 888 | Error_Exit "Invalid Prefix specified: $PREFIX. Valid value is 'AS'" 889 | fi 890 | done 891 | 892 | } 893 | 894 | AWS_Region_Parm() { 895 | 896 | AWS_REGION=$(echo "$@" | sed -n "s/^.*aws_region=//p" | awk '{print $1}' | tr ',' ' ') 897 | for AWS_REGION in $AWS_REGION; do 898 | case "$AWS_REGION" in 899 | AP) 900 | REGION="ap-east-1 ap-northeast-1 ap-northeast-2 ap-northeast-3 ap-south-1 ap-southeast-1 ap-southeast-2" 901 | ;; 902 | CA) 903 | REGION="ca-central-1" 904 | ;; 905 | CN) 906 | REGION="cn-north-1 cn-northwest-1" 907 | ;; 908 | EU) 909 | REGION="eu-central-1 eu-north-1 eu-west-1 eu-west-2 eu-west-3" 910 | ;; 911 | SA) 912 | REGION="sa-east-1" 913 | ;; 914 | US) 915 | REGION="us-east-1 us-east-2 us-west-1 us-west-2" 916 | ;; 917 | GV) 918 | REGION="us-gov-east-1 us-gov-west-1" 919 | ;; 920 | GLOBAL) 921 | REGION="GLOBAL" 922 | ;; 923 | *) 924 | Error_Exit "Invalid AMAZON region specified: $AWS_REGION. Valid values are: AP CA CN EU SA US GV GLOBAL" 925 | ;; 926 | esac 927 | Create_Ipset_List "$IPSET_NAME" "AWS" 928 | Load_AWS_Ipset_List "$IPSET_NAME" "$REGION" "$DIR" 929 | done 930 | 931 | } 932 | 933 | Manual_Method() { 934 | 935 | Chk_Entware 60 936 | if [ "$READY" -eq 1 ]; then Error_Exit "Entware not ready. Unable to access ipset save/restore location"; fi 937 | ############## Special Processing for 'ip=' parmameter 938 | if [ "$(echo "$@" | grep -c 'ip=')" -gt 0 ]; then 939 | IP=$(echo "$@" | sed -n "s/^.*ip=//p" | awk '{print $1}') 940 | [ -s "$DIR/$IPSET_NAME" ] || true >"/opt/tmp/$IPSET_NAME" 941 | true >"/opt/tmp/${SCR_NAME}" # create tmp file for loop processing 942 | for IPv4 in $(echo "$IP" | tr ',' '\n'); do 943 | awk -v A="$IPv4" 'BEGIN {print A}' >>"/opt/tmp/${SCR_NAME}" 944 | while read -r IPv4; do 945 | # check for IPv4 format 946 | A=$(echo "$IPv4" | grep -oE "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$") 947 | if [ -z "$A" ]; then # If null, then didn't pass check for IPv4 Format. 948 | # Check for IPv4 CIDR Format https://unix.stackexchange.com/questions/505115/regex-expression-for-ip-address-cidr-in-bash 949 | A=$(echo "$IPv4" | grep -oE "^([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}/([0-9]|[12][0-9]|3[012])$") 950 | if [ -z "$A" ]; then 951 | printf '"%s" is not a valid CIDR address. Skipping entry.\n' "$IPv4" 952 | else 953 | printf '%s\n' "$IPv4" >>"$DIR/$IPSET_NAME" && printf '%s\n' "Successfully added CIDR $IPv4" 954 | fi 955 | else 956 | printf '%s\n' "$IPv4" >>"$DIR/$IPSET_NAME" && printf '%s\n' "Successfully added $IPv4" 957 | fi 958 | done <"/opt/tmp/${SCR_NAME}" 959 | rm "/opt/tmp/${SCR_NAME}" 960 | # remove any duplicate entries that may have gotten added 961 | sort -gt '/' -k 1 "$DIR/$IPSET_NAME" | sort -ut '.' -k 1,1n -k 2,2n -k 3,3n -k 4,4n >"$DIR/${IPSET_NAME}_tmp" 962 | mv "$DIR/${IPSET_NAME}_tmp" "$DIR/$IPSET_NAME" 963 | done 964 | fi 965 | ############## End of Special Processing for 'ip=' parameter 966 | 967 | if [ -s "$DIR/$IPSET_NAME" ]; then 968 | if grep -q "create" "$DIR/$IPSET_NAME"; then 969 | Error_Exit "ERROR! $DIR/$IPSET_NAME save/restore file is in dnsmasq format. The Manual Method requires IPv4 format." 970 | fi 971 | Create_Ipset_List "$IPSET_NAME" "MANUAL" 972 | Load_MANUAL_Ipset_List "$IPSET_NAME" "$DIR" 973 | else 974 | Error_Exit "ERROR! The save/restore file $DIR/$IPSET_NAME does not exist." 975 | fi 976 | } 977 | 978 | VPN_Server_to_VPN_Client() { 979 | 980 | VPN_SERVER_INSTANCE=$1 981 | IFACE=$2 982 | VPN_CLIENT_INSTANCE=$3 983 | DEL_FLAG=$4 984 | SERVER="server=$VPN_SERVER_INSTANCE" 985 | CLIENT="client=$VPN_CLIENT_INSTANCE" 986 | SCRIPT_ENTRY="sh /jffs/scripts/x3mRouting/x3mRouting.sh $SERVER $CLIENT" 987 | VPN_SERVER_SUBNET="$(nvram get vpn_server"${VPN_SERVER_INSTANCE}"_sn)/24" 988 | IPTABLES_DEL_ENTRY="iptables -t nat -D POSTROUTING -s \"\$(nvram get vpn_server${VPN_SERVER_INSTANCE}_sn)\"/24 -o $IFACE -j MASQUERADE 2>/dev/null" 989 | IPTABLES_ADD_ENTRY="iptables -t nat -A POSTROUTING -s \"\$(nvram get vpn_server${VPN_SERVER_INSTANCE}_sn)\"/24 -o $IFACE -j MASQUERADE" 990 | VPNC_UP_FILE="/jffs/scripts/x3mRouting/vpnclient${VPN_CLIENT_INSTANCE}-route-up" 991 | VPNC_DOWN_FILE="/jffs/scripts/x3mRouting/vpnclient${VPN_CLIENT_INSTANCE}-route-pre-down" 992 | POLICY_RULE_WITHOUT_NAME="${VPN_SERVER_SUBNET}>>VPN" 993 | POLICY_RULE="${VPN_SERVER_SUBNET}>>VPN" 994 | 995 | VPN_IP_LIST="$(nvram get vpn_client"$VPN_CLIENT_INSTANCE"_clientlist)" 996 | for n in 1 2 3 4 5; do 997 | VPN_IP_LIST="${VPN_IP_LIST}$(nvram get vpn_client"$VPN_CLIENT_INSTANCE"_clientlist${n})" 998 | done 999 | 1000 | if [ "$DEL_FLAG" != "del" ]; then # add entry 1001 | eval "$IPTABLES_DEL_ENTRY" 1002 | eval "$IPTABLES_ADD_ENTRY" 1003 | # vpnclientX-route-up File 1004 | if [ -s "$VPNC_UP_FILE" ]; then 1005 | #Check if an existing entry exists 1006 | for IPTABLES_ENTRY in "$IPTABLES_DEL_ENTRY" "$IPTABLES_ADD_ENTRY"; do 1007 | if [ "$(grep -cw "$IPTABLES_ENTRY" "$VPNC_UP_FILE")" -eq 0 ]; then # if true, add entry 1008 | echo "$IPTABLES_ENTRY" >>"$VPNC_UP_FILE" 1009 | # Implement routing rules 1010 | iptables -t nat -D POSTROUTING -s "$VPN_SERVER_SUBNET" -o "$IFACE" -j MASQUERADE 2>/dev/null 1011 | iptables -t nat -A POSTROUTING -s "$VPN_SERVER_SUBNET" -o "$IFACE" -j MASQUERADE 1012 | fi 1013 | done 1014 | else # vpnclientX-route-up file does not exist 1015 | true >"$VPNC_UP_FILE" 1016 | { 1017 | echo "#!/bin/sh" 1018 | echo "$IPTABLES_DEL_ENTRY" 1019 | echo "$IPTABLES_ADD_ENTRY" 1020 | } >>"$VPNC_UP_FILE" 1021 | # Implement routing rules 1022 | iptables -t nat -D POSTROUTING -s "$VPN_SERVER_SUBNET" -o "$IFACE" -j MASQUERADE 2>/dev/null 1023 | iptables -t nat -A POSTROUTING -s "$VPN_SERVER_SUBNET" -o "$IFACE" -j MASQUERADE 1024 | fi 1025 | # vpnclientX-route-pre-down File 1026 | if [ -s "$VPNC_DOWN_FILE" ]; then 1027 | #Check if an existing entry exists 1028 | if [ "$(grep -cw "$IPTABLES_DEL_ENTRY" "$VPNC_DOWN_FILE")" -eq 0 ]; then # entry does not exist, add entry 1029 | echo "$IPTABLES_DEL_ENTRY" >>"$VPNC_DOWN_FILE" 1030 | fi 1031 | else # # vpnclientX-route-pre-down file does not exist, add entry 1032 | echo "#!/bin/sh" >"$VPNC_DOWN_FILE" 1033 | echo "$IPTABLES_DEL_ENTRY" >>"$VPNC_DOWN_FILE" 1034 | fi 1035 | 1036 | # nat-start File 1037 | if [ -s "$NAT_START" ]; then 1038 | if [ "$(grep -cw "$SCRIPT_ENTRY" "$NAT_START")" -eq 0 ]; then # if true, then no lines exist, add entry 1039 | echo "$SCRIPT_ENTRY" >>"$NAT_START" 1040 | logger -st "($(basename "$0"))" $$ "$SCRIPT_ENTRY added to $NAT_START" 1041 | fi 1042 | else # nat-start file does not exist,create it 1043 | true >"$NAT_START" 1044 | { 1045 | printf '%s\n' "#!/bin/sh" 1046 | printf '%s\n' "$SCRIPT_ENTRY" # file does not exist, create VPNC_UP_FILE 1047 | } >"$NAT_START" 1048 | logger -st "($(basename "$0"))" $$ "$SCRIPT_ENTRY added to $NAT_START" 1049 | fi 1050 | 1051 | # Add nvram entry to vpn_client"${VPN_CLIENT_INSTANCE}"_clientlist 1052 | if [ "$(echo "$VPN_IP_LIST" | grep -c "$POLICY_RULE_WITHOUT_NAME")" -eq 0 ]; then 1053 | VPN_IP_LIST="${VPN_IP_LIST}${POLICY_RULE}" 1054 | if [ "$(uname -m)" = "aarch64" ]; then 1055 | low=0 1056 | max=255 1057 | for n in "" 1 2 3 4 5; do 1058 | nvram set vpn_client"${VPN_CLIENT_INSTANCE}"_clientlist"${n}"="$(echo "$VPN_IP_LIST" | cut -b $low-$max)" 1059 | low=$((max + 1)) 1060 | max=$((low + 254)) 1061 | done 1062 | else 1063 | nvram set vpn_client"${VPN_CLIENT_INSTANCE}"_clientlist="$VPN_IP_LIST" 1064 | fi 1065 | nvram commit 1066 | logger -st "($(basename "$0"))" $$ "Restarting VPN Client ${VPN_CLIENT_INSTANCE} to add policy rule for VPN Server ${VPN_SERVER_INSTANCE}" 1067 | service restart_vpnclient"${VPN_CLIENT_INSTANCE}" 1068 | else #if the VPN Server entry exists in nvram using the 'vpnserverX' name created by the prior version, convert it to the new name 1069 | if [ "$(echo "$VPN_IP_LIST" | grep -c "vpnserver${VPN_SERVER_INSTANCE}")" -ge 1 ]; then 1070 | VPN_IP_LIST="$(echo "$VPN_IP_LIST" | sed "s///")" 1071 | if [ "$(uname -m)" = "aarch64" ]; then 1072 | low=0 1073 | max=255 1074 | for n in "" 1 2 3 4 5; do 1075 | nvram set vpn_client"${VPN_CLIENT_INSTANCE}"_clientlist"${n}"="$(echo "$VPN_IP_LIST" | cut -b $low-$max)" 1076 | low=$((max + 1)) 1077 | max=$((low + 254)) 1078 | done 1079 | else 1080 | nvram set vpn_client"${VPN_CLIENT_INSTANCE}"_clientlist="$VPN_IP_LIST" 1081 | fi 1082 | nvram commit 1083 | logger -st "($(basename "$0"))" $$ "Restarting vpnclient ${VPN_CLIENT_INSTANCE} for policy rule for VPN Server ${VPN_SERVER_INSTANCE} to take effect" 1084 | service restart_vpnclient"${VPN_CLIENT_INSTANCE}" 1085 | fi 1086 | fi 1087 | else # del parmater passed. Delete routing and routing rules in vpn server up down scripts. 1088 | iptables -t nat -D POSTROUTING -s "$VPN_SERVER_SUBNET" -o "$IFACE" -j MASQUERADE 2>/dev/null 1089 | 1090 | # vpnserverX-up file 1091 | if [ -s "$VPNC_UP_FILE" ]; then #file exists 1092 | # POSTROUTING 1093 | CMD="awk '\$5 == \"POSTROUTING\" && \$9 == \"vpn_server${VPN_SERVER_INSTANCE}_sn)\\\"/24\" && \$11 == \"$IFACE\" && \$13 == \"MASQUERADE\" {next} {print \$0}' \"$VPNC_UP_FILE\" > \"$VPNC_UP_FILE.tmp\" && mv \"$VPNC_UP_FILE.tmp\" \"$VPNC_UP_FILE\"" 1094 | eval "$CMD" 1095 | logger -st "($(basename "$0"))" $$ "iptables entry for VPN Client ${VPN_CLIENT_INSTANCE} deleted from $VPNC_UP_FILE" 1096 | Check_For_Shebang "$VPNC_UP_FILE" 1097 | fi 1098 | 1099 | # vpnserverX-down file 1100 | if [ -s "$VPNC_DOWN_FILE" ]; then #file exists 1101 | # POSTROUTING 1102 | CMD="awk '\$5 == \"POSTROUTING\" && \$9 == \"vpn_server${VPN_SERVER_INSTANCE}_sn)\\\"/24\" && \$11 == \"$IFACE\" && \$13 == \"MASQUERADE\" {next} {print \$0}' \"$VPNC_DOWN_FILE\" > \"$VPNC_DOWN_FILE.tmp\" && mv \"$VPNC_DOWN_FILE.tmp\" \"$VPNC_DOWN_FILE\"" 1103 | eval "$CMD" 1104 | logger -st "($(basename "$0"))" $$ "iptables entry deleted VPN Client ${VPN_CLIENT_INSTANCE} from $VPNC_DOWN_FILE" 1105 | Check_For_Shebang "$VPNC_DOWN_FILE" 1106 | fi 1107 | 1108 | # nat-start File 1109 | if [ -s "$NAT_START" ]; then 1110 | sed "/$SERVER $CLIENT/d" "$NAT_START" >"$NAT_START.tmp" && mv "$NAT_START.tmp" "$NAT_START" 1111 | logger -t "($(basename "$0"))" $$ "$SCRIPT_ENTRY entry deleted from $NAT_START" 1112 | Check_For_Shebang "$NAT_START" 1113 | fi 1114 | 1115 | # nvram get vpn_client"${VPN_CLIENT_INSTANCE}"_clientlist 1116 | if [ "$(echo "$VPN_IP_LIST" | grep -c "$POLICY_RULE")" -eq "1" ]; then 1117 | VPN_IP_LIST="$(echo "$VPN_IP_LIST" | sed "s,${VPN_SERVER_SUBNET}>>VPN,,")" 1118 | if [ "$(uname -m)" = "aarch64" ]; then 1119 | low=0 1120 | max=255 1121 | for n in "" 1 2 3 4 5; do 1122 | nvram set vpn_client"${VPN_CLIENT_INSTANCE}"_clientlist"${n}"="$(echo "$VPN_IP_LIST" | cut -b $low-$max)" 1123 | low=$((max + 1)) 1124 | max=$((low + 254)) 1125 | done 1126 | else 1127 | nvram set vpn_client"${VPN_CLIENT_INSTANCE}"_clientlist="$VPN_IP_LIST" 1128 | fi 1129 | nvram commit 1130 | logger -st "($(basename "$0"))" $$ "Restarting vpnclient ${VPN_CLIENT_INSTANCE} to remove policy rule for VPN Server ${VPN_SERVER_INSTANCE}" 1131 | service restart_vpnclient"${VPN_CLIENT_INSTANCE}" 1132 | fi 1133 | fi 1134 | 1135 | #set permissions for each file 1136 | [ -s "$VPNC_UP_FILE" ] && chmod 755 "$VPNC_UP_FILE" 1137 | [ -s "$VPNC_DOWN_FILE" ] && chmod 755 "$VPNC_DOWN_FILE" 1138 | [ -s "$NAT_START" ] && chmod 755 "$NAT_START" 1139 | 1140 | } 1141 | 1142 | VPN_Server_to_IPSET() { 1143 | 1144 | VPN_SERVER_INSTANCE=$1 1145 | VPN_CLIENT_INSTANCE=$2 1146 | IFACE=$3 1147 | IPSET_NAME=$4 1148 | TAG_MARK=$5 1149 | DEL_FLAG=$6 1150 | 1151 | case "$VPN_SERVER_INSTANCE" in 1152 | 1) VPN_SERVER_TUN="tun21" ;; 1153 | 2) VPN_SERVER_TUN="tun22" ;; 1154 | *) Error_Exit "ERROR VPN Server instance $VPN_SERVER_INSTANCE should be a 1 or 2" ;; 1155 | esac 1156 | # Get VPN Server IP 1157 | VPN_SERVER_IP=$(nvram get vpn_server"${VPN_SERVER_INSTANCE}"_sn) 1158 | 1159 | # POSTROUTING CHAIN 1160 | IPTABLES_POSTROUTING_DEL_ENTRY="iptables -t nat -D POSTROUTING -s \"\$(nvram get vpn_server${VPN_SERVER_INSTANCE}_sn)\"/24 -o $IFACE -j MASQUERADE 2>/dev/null" 1161 | IPTABLES_POSTROUTING_ADD_ENTRY="iptables -t nat -A POSTROUTING -s \"\$(nvram get vpn_server${VPN_SERVER_INSTANCE}_sn)\"/24 -o $IFACE -j MASQUERADE" 1162 | 1163 | # PREROUTING CHAIN 1164 | IPTABLES_PREROUTING_DEL_ENTRY="iptables -t mangle -D PREROUTING -i $VPN_SERVER_TUN -m set --match-set $IPSET_NAME dst -j MARK --set-mark $TAG_MARK 2>/dev/null" 1165 | IPTABLES_PREROUTING_ADD_ENTRY="iptables -t mangle -A PREROUTING -i $VPN_SERVER_TUN -m set --match-set $IPSET_NAME dst -j MARK --set-mark $TAG_MARK" 1166 | 1167 | # VPN Client Up/Down files 1168 | VPNC_UP_FILE="/jffs/scripts/x3mRouting/vpnclient${VPN_CLIENT_INSTANCE}-route-up" 1169 | VPNC_DOWN_FILE="/jffs/scripts/x3mRouting/vpnclient${VPN_CLIENT_INSTANCE}-route-pre-down" 1170 | 1171 | if [ "$DEL_FLAG" != "del" ]; then #add entry 1172 | if [ -s "$VPNC_UP_FILE" ]; then #file exists 1173 | #Check if an existing entry exists 1174 | for IPTABLES_ENTRY in "$IPTABLES_POSTROUTING_DEL_ENTRY" "$IPTABLES_POSTROUTING_ADD_ENTRY" "$IPTABLES_PREROUTING_DEL_ENTRY" "$IPTABLES_PREROUTING_ADD_ENTRY"; do 1175 | if [ "$(grep -cw "$IPTABLES_ENTRY" "$VPNC_UP_FILE")" -eq 0 ]; then # if true, add entry 1176 | echo "$IPTABLES_ENTRY" >>"$VPNC_UP_FILE" && logger -t "($(basename "$0"))" $$ "iptables entry added to $VPNC_UP_FILE" 1177 | fi 1178 | done 1179 | iptables -t nat -D POSTROUTING -s "$VPN_SERVER_IP"/24 -o "$IFACE" -j MASQUERADE 2>/dev/null 1180 | iptables -t nat -A POSTROUTING -s "$VPN_SERVER_IP"/24 -o "$IFACE" -j MASQUERADE 1181 | iptables -t mangle -D PREROUTING -i "$VPN_SERVER_TUN" -m set --match-set "$IPSET_NAME" dst -j MARK --set-mark "$TAG_MARK" 2>/dev/null 1182 | iptables -t mangle -A PREROUTING -i "$VPN_SERVER_TUN" -m set --match-set "$IPSET_NAME" dst -j MARK --set-mark "$TAG_MARK" 1183 | else #file does not exist 1184 | true >"$VPNC_UP_FILE" 1185 | { 1186 | echo "#!/bin/sh" 1187 | echo "$IPTABLES_POSTROUTING_DEL_ENTRY" 1188 | echo "$IPTABLES_POSTROUTING_ADD_ENTRY" 1189 | echo "$IPTABLES_PREROUTING_DEL_ENTRY" 1190 | echo "$IPTABLES_PREROUTING_ADD_ENTRY" 1191 | } >>"$VPNC_UP_FILE" 1192 | iptables -t nat -D POSTROUTING -s "$VPN_SERVER_IP"/24 -o "$IFACE" -j MASQUERADE 2>/dev/null 1193 | iptables -t nat -A POSTROUTING -s "$VPN_SERVER_IP"/24 -o "$IFACE" -j MASQUERADE 1194 | iptables -t mangle -D PREROUTING -i "$VPN_SERVER_TUN" -m set --match-set "$IPSET_NAME" dst -j MARK --set-mark "$TAG_MARK" 2>/dev/null 1195 | iptables -t mangle -A PREROUTING -i "$VPN_SERVER_TUN" -m set --match-set "$IPSET_NAME" dst -j MARK --set-mark "$TAG_MARK" 1196 | fi 1197 | 1198 | if [ -s "$VPNC_DOWN_FILE" ]; then 1199 | #Check if an existing entry exists 1200 | for IPTABLES_ENTRY in "$IPTABLES_POSTROUTING_DEL_ENTRY" "$IPTABLES_PREROUTING_DEL_ENTRY"; do 1201 | if [ "$(grep -cw "$IPTABLES_ENTRY" "$VPNC_DOWN_FILE")" -eq 0 ]; then # if true, then add entry 1202 | echo "$IPTABLES_ENTRY" >>"$VPNC_DOWN_FILE" && logger -t "($(basename "$0"))" $$ "iptables entry added to $VPNC_DOWN_FILE" 1203 | fi 1204 | done 1205 | else #file does not exist 1206 | true >"$VPNC_DOWN_FILE" 1207 | { 1208 | echo "#!/bin/sh" 1209 | echo "$IPTABLES_POSTROUTING_DEL_ENTRY" 1210 | echo "$IPTABLES_PREROUTING_DEL_ENTRY" 1211 | } >>"$VPNC_DOWN_FILE" 1212 | logger -t "($(basename "$0"))" $$ "iptables entry added to $VPNC_DOWN_FILE" 1213 | fi 1214 | else # 'del' option specified. 1215 | iptables -t mangle -D PREROUTING -i "$VPN_SERVER_TUN" -m set --match-set "$IPSET_NAME" dst -j MARK --set-mark "$TAG_MARK" 2>/dev/null 1216 | iptables -t nat -D POSTROUTING -s "$VPN_SERVER_IP"/24 -o "$IFACE" -j MASQUERADE 2>/dev/null 1217 | 1218 | # VPN Client route-up File 1219 | if [ -s "$VPNC_UP_FILE" ]; then 1220 | # POSTROUTING 1221 | CMD="awk '\$5 == \"POSTROUTING\" && \$9 == \"vpn_server${VPN_SERVER_INSTANCE}_sn)\\\"/24\" && \$11 == \"$IFACE\" && \$13 == \"MASQUERADE\" {next} {print \$0}' \"$VPNC_UP_FILE\" > \"$VPNC_UP_FILE.tmp\" && mv \"$VPNC_UP_FILE.tmp\" \"$VPNC_UP_FILE\"" 1222 | eval "$CMD" 1223 | # PREROUTING 1224 | CMD="awk '\$5 == \"PREROUTING\" && \$7 == \"$VPN_SERVER_TUN\" && \$11 == \"$IPSET_NAME\" {next} {print \$0}' \"$VPNC_UP_FILE\" > \"$VPNC_UP_FILE.tmp\" && mv \"$VPNC_UP_FILE.tmp\" \"$VPNC_UP_FILE\"" 1225 | eval "$CMD" 1226 | logger -t "($(basename "$0"))" $$ "iptables entry deleted from $VPNC_UP_FILE" 1227 | Check_For_Shebang "$VPNC_UP_FILE" 1228 | fi 1229 | 1230 | # VPN Client route-pre-down File 1231 | if [ -s "$VPNC_DOWN_FILE" ]; then 1232 | # POSTROUTING 1233 | CMD="awk '\$5 == \"POSTROUTING\" && \$9 == \"vpn_server${VPN_SERVER_INSTANCE}_sn)\\\"/24\" && \$11 == \"$IFACE\" && \$13 == \"MASQUERADE\" {next} {print \$0}' \"$VPNC_DOWN_FILE\" > \"$VPNC_DOWN_FILE.tmp\" && mv \"$VPNC_DOWN_FILE.tmp\" \"$VPNC_DOWN_FILE\"" 1234 | eval "$CMD" 1235 | # PREROUTING 1236 | CMD="awk '\$5 == \"PREROUTING\" && \$7 == \"$VPN_SERVER_TUN\" && \$11 == \"$IPSET_NAME\" {next} {print \$0}' \"$VPNC_DOWN_FILE\" > \"$VPNC_DOWN_FILE.tmp\" && mv \"$VPNC_DOWN_FILE.tmp\" \"$VPNC_DOWN_FILE\"" 1237 | eval "$CMD" 1238 | logger -t "($(basename "$0"))" $$ "iptables entry deleted from $VPNC_DOWN_FILE" 1239 | Check_For_Shebang "$VPNC_DOWN_FILE" 1240 | fi 1241 | fi 1242 | 1243 | #set permissions for each file 1244 | [ -s "$VPNC_UP_FILE" ] && chmod 755 "$VPNC_UP_FILE" 1245 | [ -s "$VPNC_DOWN_FILE" ] && chmod 755 "$VPNC_DOWN_FILE" 1246 | 1247 | } 1248 | 1249 | Harvest_Domains() { 1250 | 1251 | SCAN_SPACE_LIST=$(echo "$@" | sed -n "s/^.*autoscan=//p" | awk '{print $1}' | tr ',' ' ') 1252 | 1253 | true >/opt/tmp/DOMAIN_LIST 1254 | 1255 | for TOP_LEVEL_DOMAIN in $SCAN_SPACE_LIST; do 1256 | SCAN_LIST=$(grep "$TOP_LEVEL_DOMAIN" "/opt/var/log/dnsmasq.log" | grep query | awk '{print $(NF-2)}' | awk -F\. '{print $(NF-1) FS $NF}' | sort | uniq) 1257 | [ -n "$SCAN_LIST" ] && echo "$SCAN_LIST" >>/opt/tmp/DOMAIN_LIST && logger -t "($(basename "$0"))" $$ "Added $SCAN_LIST during autoscan" 1258 | done 1259 | 1260 | DOMAIN_LIST=$(awk '{ print $1 }' "/opt/tmp/DOMAIN_LIST" | sort -u | tr '\n' '/' | sed -n 's/\/$/\n/p') 1261 | NAT_ENTRY=$(echo "$DOMAIN_LIST" | sed 's|/|,|g') 1262 | 1263 | rm /opt/tmp/DOMAIN_LIST 1264 | 1265 | if [ -z "$DOMAIN_LIST" ]; then 1266 | Error_Exit "No domain names were harvested from $DNSMASQ_LOG_FILE" 1267 | else 1268 | DNSMASQ_ENTRY="/$DOMAIN_LIST/$IPSET_NAME" 1269 | Process_DNSMASQ "$IPSET_NAME" "$DNSMASQ_ENTRY" "$DIR" 1270 | fi 1271 | } 1272 | 1273 | Dnsmasq_Log_File() { 1274 | 1275 | if [ -s "/opt/var/log/dnsmasq.log" ]; then 1276 | DNSMASQ_LOG_FILE="/opt/var/log/dnsmasq.log" 1277 | elif [ -s "/tmp/var/log/dnsmasq.log" ]; then 1278 | DNSMASQ_LOG_FILE="/tmp/var/log/dnsmasq.log" 1279 | elif [ -n "$(find / -name "dnsmasq.log")" ]; then 1280 | DNSMASQ_LOG_FILE=$(find / -name "dnsmasq.log") 1281 | else 1282 | Error_Exit "ERROR dnsmasq.log file NOT found!" 1283 | fi 1284 | } 1285 | 1286 | Check_Second_Parm() { 1287 | 1288 | if [ "$(echo "$2" | grep -c 'client=')" -eq 0 ] || [ "$(echo "$2" | grep -c 'ipset_name=')" -eq 0 ]; then 1289 | Error_Exit "ERROR Expecting first parameter to be 'server=' or 'ipset_name='" 1290 | fi 1291 | } 1292 | 1293 | Define_IFACE() { 1294 | 1295 | ### Define interface/bitmask to route traffic to. Use existing PREROUTING rule for IPSET to determine FWMARK. 1296 | FWMARK=$(iptables -nvL PREROUTING -t mangle --line | grep "br0" | grep -m 1 " $IPSET_NAME" | awk '{print $16}') 1297 | 1298 | [ -n "$FWMARK" ] || Error_Exit "Error! Mandatory PREROUTING rule for IPSET name $IPSET_NAME does not exist." 1299 | 1300 | TAG_MARK="$FWMARK/$FWMARK" 1301 | FWMARK_SUBSTR=$(echo "$FWMARK" | awk '{ string=substr($0, 3, 6); print string; }') 1302 | 1303 | case "$FWMARK_SUBSTR" in 1304 | 8000) IFACE="br0" ;; 1305 | 1000) IFACE="tun11" ;; 1306 | 2000) IFACE="tun12" ;; 1307 | 4000) IFACE="tun13" ;; 1308 | 7000) IFACE="tun14" ;; 1309 | 3000) IFACE="tun15" ;; 1310 | *) Error_Exit "ERROR $1 should be a 1-5=VPN" ;; 1311 | esac 1312 | 1313 | } 1314 | 1315 | #==================== End of Functions ===================================== 1316 | ## Begin ## 1317 | logger -st "($(basename "$0"))" $$ Starting Script Execution $@ 1318 | Check_Lock "$@" 1319 | SCR_NAME=$(basename "$0" | sed 's/.sh//') 1320 | NAT_START="/jffs/scripts/nat-start" 1321 | 1322 | # Check if user specified 'dir=' parameter 1323 | if [ "$(echo "$@" | grep -c 'dir=')" -gt 0 ]; then 1324 | if [ "$(echo "$@" | grep -c 'asnum=')" -gt 0 ]; then 1325 | logger -st "($(basename "$0"))" $$ "ASN Method stores IPv4 addresses in memory. Ignoring 'dir=' parm" location. 1326 | # set DIR to default location and ignore when writing to nat-start in Check_Nat_Start_For_Entries function 1327 | DIR="/opt/tmp" 1328 | else 1329 | DIR=$(echo "$@" | sed -n "s/^.*dir=//p" | awk '{print $1}') # v1.2 Mount point/directory for backups 1330 | fi 1331 | else 1332 | DIR="/opt/tmp" 1333 | fi 1334 | 1335 | ####################################################################### 1336 | # Check if 'server=' parameter specified 1337 | ####################################################################### 1338 | 1339 | if [ "$(echo "$@" | grep -c 'server=')" -gt 0 ]; then 1340 | SERVER=$(echo "$@" | sed -n "s/^.*server=//p" | awk '{print $1}') 1341 | case "$SERVER" in 1342 | 1 | 2 | both) ;; 1343 | *) Error_Exit "ERROR: Invalid Server '$SERVER' specified." ;; 1344 | esac 1345 | 1346 | if [ "$(echo "$@" | grep -c 'client=')" -eq 0 ] && [ "$(echo "$@" | grep -c 'ipset_name=')" -eq 0 ]; then 1347 | Error_Exit "ERROR Expecting second parameter to be either 'client=' or 'ipset_name='" 1348 | fi 1349 | 1350 | ### Process server when 'client=' specified 1351 | if [ "$(echo "$@" | grep -c 'client=')" -gt 0 ]; then 1352 | VPN_CLIENT_INSTANCE=$(echo "$@" | sed -n "s/^.*client=//p" | awk '{print $1}') 1353 | case "$VPN_CLIENT_INSTANCE" in 1354 | 1) IFACE="tun11" ;; 1355 | 2) IFACE="tun12" ;; 1356 | 3) IFACE="tun13" ;; 1357 | 4) IFACE="tun14" ;; 1358 | 5) IFACE="tun15" ;; 1359 | *) Error_Exit "ERROR 'client=$VPN_CLIENT_INSTANCE' reference should be a 1-5" ;; 1360 | esac 1361 | 1362 | if [ "$(echo $@ | grep -cw 'del')" -ge 1 ]; then 1363 | if [ "$SERVER" = "both" ]; then 1364 | for SERVER in 1 2; do 1365 | VPN_Server_to_VPN_Client "$SERVER" "$IFACE" "$VPN_CLIENT_INSTANCE" "del" 1366 | done 1367 | else 1368 | VPN_Server_to_VPN_Client "$SERVER" "$IFACE" "$VPN_CLIENT_INSTANCE" "del" 1369 | fi 1370 | else 1371 | if [ "$SERVER" = "both" ]; then 1372 | for SERVER in 1 2; do 1373 | VPN_Server_to_VPN_Client "$SERVER" "$IFACE" "$VPN_CLIENT_INSTANCE" 1374 | done 1375 | else 1376 | VPN_Server_to_VPN_Client "$SERVER" "$IFACE" "$VPN_CLIENT_INSTANCE" 1377 | fi 1378 | fi 1379 | Exit_Routine 1380 | fi 1381 | 1382 | #### Process server when 'ipset_name=' specified 1383 | if [ "$(echo "$@" | grep -c 'ipset_name=')" -ge 1 ]; then 1384 | IPSET_NAME=$(echo "$@" | sed -n "s/^.*ipset_name=//p" | awk '{print $1}' | tr ',' ' ') 1385 | for IPSET_NAME in $IPSET_NAME; do 1386 | # Check if IPSET list exists 1387 | if [ -n "$IPSET_NAME" ]; then 1388 | if [ "$(ipset list -n "$IPSET_NAME" 2>/dev/null)" != "$IPSET_NAME" ]; then 1389 | Error_Exit "IPSET name $IPSET_NAME does not exist." 1390 | fi 1391 | fi 1392 | done 1393 | 1394 | IPSET_NAME=$(echo "$@" | sed -n "s/^.*ipset_name=//p" | awk '{print $1}' | tr ',' ' ') 1395 | for IPSET_NAME in $IPSET_NAME; do 1396 | Define_IFACE "$IPSET_NAME" 1397 | 1398 | case "$IFACE" in 1399 | tun11) VPN_CLIENT_INSTANCE=1 ;; 1400 | tun12) VPN_CLIENT_INSTANCE=2 ;; 1401 | tun13) VPN_CLIENT_INSTANCE=3 ;; 1402 | tun14) VPN_CLIENT_INSTANCE=4 ;; 1403 | tun15) VPN_CLIENT_INSTANCE=5 ;; 1404 | esac 1405 | 1406 | if [ "$(echo $@ | grep -cw 'del')" -ge 1 ]; then 1407 | if [ "$SERVER" = "both" ]; then 1408 | for SERVER in 1 2; do 1409 | VPN_Server_to_IPSET "$SERVER" "$VPN_CLIENT_INSTANCE" "$IFACE" "$IPSET_NAME" "$TAG_MARK" "del" 1410 | done 1411 | else 1412 | VPN_Server_to_IPSET "$SERVER" "$VPN_CLIENT_INSTANCE" "$IFACE" "$IPSET_NAME" "$TAG_MARK" "del" 1413 | fi 1414 | else 1415 | if [ "$SERVER" = "both" ]; then 1416 | for SERVER in 1 2; do 1417 | VPN_Server_to_IPSET "$SERVER" "$VPN_CLIENT_INSTANCE" "$IFACE" "$IPSET_NAME" "$TAG_MARK" 1418 | done 1419 | else 1420 | VPN_Server_to_IPSET "$SERVER" "$VPN_CLIENT_INSTANCE" "$IFACE" "$IPSET_NAME" "$TAG_MARK" 1421 | fi 1422 | fi 1423 | done 1424 | # nat-start File 1425 | SCRIPT_ENTRY="sh /jffs/scripts/x3mRouting/x3mRouting.sh $1 $2" 1426 | if [ "$(echo $@ | grep -cw 'del')" -eq 0 ]; then 1427 | if [ -s "$NAT_START" ]; then # file exists 1428 | if [ "$(grep -cw "$SCRIPT_ENTRY" "$NAT_START")" -eq 0 ]; then # if true, then no lines exist 1429 | echo "$SCRIPT_ENTRY" >>"$NAT_START" # add $SCRIPT_ENTRY to $VPNC_UP_FILE 1430 | logger -st "($(basename "$0"))" $$ "$SCRIPT_ENTRY added to $NAT_START" 1431 | fi 1432 | else # nat-start does not exist 1433 | true >"$NAT_START" 1434 | { 1435 | printf '%s\n' "#!/bin/sh" 1436 | printf '%s\n' "$SCRIPT_ENTRY" 1437 | } >"$NAT_START" 1438 | chmod 755 "$NAT_START" 1439 | logger -st "($(basename "$0"))" $$ "$SCRIPT_ENTRY added to $NAT_START" 1440 | fi 1441 | else # del flagged passed 1442 | [ -s "$NAT_START" ] && sed "/$1 $2/d" "$NAT_START" >"$NAT_START.tmp" && mv "$NAT_START.tmp" "$NAT_START" 1443 | logger -t "($(basename "$0"))" $$ "$SCRIPT_ENTRY entry deleted from $NAT_START" 1444 | Check_For_Shebang "$NAT_START" 1445 | fi 1446 | Exit_Routine 1447 | fi 1448 | fi 1449 | ###################################################################### 1450 | # End of special processing for VPN Server 1451 | ###################################################################### 1452 | 1453 | ####################################################################### 1454 | # Check if 'ipset_name=' parameter specified 1455 | # This section creates IPSET list with no routing rules 1456 | ####################################################################### 1457 | if [ "$(echo "$@" | grep -c 'ipset_name=')" -gt 0 ]; then 1458 | IPSET_NAME=$(echo "$@" | sed -n "s/^.*ipset_name=//p" | awk '{print $1}') # ipset name 1459 | 1460 | if [ "$(echo "$@" | grep -cw 'del')" -gt 0 ]; then 1461 | Delete_Ipset_List "$IPSET_NAME" "$DIR" 1462 | Exit_Routine 1463 | fi 1464 | 1465 | # Error_Exit if 'src=' parm specified 1466 | if [ "$(echo "$@" | grep -c 'src=')" -gt 0 ]; then 1467 | Error_Exit "The 'src=' parameter can't be used with the 'ipset_name=' parameter" 1468 | fi 1469 | 1470 | # Error_Exit if 'src_range=' parm specified 1471 | if [ "$(echo "$@" | grep -c 'src_range=')" -gt 0 ]; then 1472 | Error_Exit "The 'src_range=' parameter can't be used with the 'ipset_name=' parameter" 1473 | fi 1474 | 1475 | # Check for 'dnsmasq=' parm 1476 | if [ "$(echo "$@" | grep -c 'dnsmasq=')" -gt 0 ]; then 1477 | DNSMASQ_Parm $@ 1478 | Check_Nat_Start_For_Entries "$IPSET_NAME" "dnsmasq=$DOMAINS" "$DIR" 1479 | Exit_Routine 1480 | fi 1481 | 1482 | # Check for 'dnsmasq_file=' parm 1483 | if [ "$(echo "$@" | grep -c 'dnsmasq_file=')" -gt 0 ]; then 1484 | DNSMASQ_Parm $@ 1485 | Check_Nat_Start_For_Entries "$IPSET_NAME" "dnsmasq_file=$DNSMASQ_FILE" "$DIR" 1486 | Exit_Routine 1487 | fi 1488 | 1489 | # Check for 'autoscan=' parm 1490 | if [ "$(echo "$@" | grep -c 'autoscan=')" -gt 0 ]; then 1491 | Dnsmasq_Log_File 1492 | Harvest_Domains $@ 1493 | Check_Nat_Start_For_Entries "$IPSET_NAME" "dnsmasq=$NAT_ENTRY" "$DIR" 1494 | Exit_Routine 1495 | fi 1496 | 1497 | # check if 'asnum=' parm 1498 | if [ "$(echo "$@" | grep -c 'asnum=')" -gt 0 ]; then 1499 | ASNUM_Parm $@ 1500 | ASN=$(echo "$@" | sed -n "s/^.*asnum=//p" | awk '{print $1}') 1501 | Check_Nat_Start_For_Entries "$IPSET_NAME" "asnum=$ASN" "$DIR" 1502 | Exit_Routine 1503 | fi 1504 | 1505 | # check if 'aws_region=' parm 1506 | if [ "$(echo "$@" | grep -c 'aws_region=')" -gt 0 ]; then 1507 | AWS_Region_Parm $@ 1508 | AWS_REGION=$(echo "$@" | sed -n "s/^.*aws_region=//p" | awk '{print $1}') 1509 | Check_Nat_Start_For_Entries "$IPSET_NAME" "aws_region=$AWS_REGION" "$DIR" 1510 | Exit_Routine 1511 | fi 1512 | 1513 | # Manual Method to create ipset list if IP address specified 1514 | if [ -z "$2" ] || [ "$(echo "$@" | grep -c 'ip=')" -gt 0 ]; then 1515 | Manual_Method $@ 1516 | Check_Nat_Start_For_Entries "$IPSET_NAME" "Manual" "$DIR" 1517 | Exit_Routine 1518 | fi 1519 | 1520 | # Manual Method to create ipset list if IP address specified 1521 | if [ -s "$DIR/$IPSET_NAME" ]; then 1522 | Manual_Method $@ 1523 | Check_Nat_Start_For_Entries "$IPSET_NAME" "Manual" "$DIR" 1524 | Exit_Routine 1525 | else 1526 | Error_Exit "ERROR! The save/restore file $DIR/$IPSET_NAME does not exist." 1527 | fi 1528 | 1529 | # If I reached this point, I have encountered a value I don't expect 1530 | Error_Exit "Encountered an invalid parameter: " $@ 1531 | fi 1532 | ############################################################################################## 1533 | # End of Special Processing for 'ipset_name=' parm 1534 | ############################################################################################## 1535 | 1536 | ############################################################################################## 1537 | # Start of Processing for Routing Rules 1538 | ############################################################################################## 1539 | 1540 | # Validate SRC_IFACE 1541 | SRC_IFACE="$1" 1542 | case "$SRC_IFACE" in 1543 | ALL | 1 | 2 | 3 | 4 | 5) ;; 1544 | *) Check_Second_Parm $@ ;; 1545 | esac 1546 | 1547 | # Check for DST_IFACE 1548 | if [ -n "$2" ]; then 1549 | DST_IFACE=$2 1550 | if [ "$SRC_IFACE" = "ALL" ]; then 1551 | case "$DST_IFACE" in 1552 | 1 | 2 | 3 | 4 | 5) ;; 1553 | *) Error_Exit "ERROR: Invalid Source '$SRC_IFACE' and Destination ($DST_IFACE) combination." ;; 1554 | esac 1555 | fi 1556 | if [ "$SRC_IFACE" = "1" ] || [ "$SRC_IFACE" = "2" ] || [ "$SRC_IFACE" = "3" ] || [ "$SRC_IFACE" = "4" ] || [ "$SRC_IFACE" = "5" ]; then 1557 | case "$DST_IFACE" in 1558 | 0) ;; 1559 | *) Error_Exit "ERROR: Invalid Source '$SRC_IFACE' and Destination ($DST_IFACE) combination." ;; 1560 | esac 1561 | fi 1562 | Set_Fwmark_Parms 1563 | else 1564 | Error_Exit "ERROR missing arg2 'dst_iface'" 1565 | fi 1566 | 1567 | # Check for IPSET list name parm 1568 | if [ -n "$3" ]; then 1569 | IPSET_NAME=$3 1570 | else 1571 | Error_Exit "ERROR missing arg3 'ipset_name'" 1572 | fi 1573 | 1574 | # Validate DST_IFACE and set destination TAG_MARK 1575 | case "$DST_IFACE" in 1576 | 0) 1577 | TAG_MARK="$FWMARK_WAN" 1578 | TARGET_DESC="WAN" 1579 | ;; 1580 | 1) 1581 | TAG_MARK="$FWMARK_OVPNC1" 1582 | TARGET_DESC="VPN Client 1" 1583 | ;; 1584 | 2) 1585 | TAG_MARK="$FWMARK_OVPNC2" 1586 | TARGET_DESC="VPN Client 2" 1587 | ;; 1588 | 3) 1589 | TAG_MARK="$FWMARK_OVPNC3" 1590 | TARGET_DESC="VPN Client 3" 1591 | ;; 1592 | 4) 1593 | TAG_MARK="$FWMARK_OVPNC4" 1594 | TARGET_DESC="VPN Client 4" 1595 | ;; 1596 | 5) 1597 | TAG_MARK="$FWMARK_OVPNC5" 1598 | TARGET_DESC="VPN Client 5" 1599 | ;; 1600 | *) 1601 | Error_Exit "ERROR $DST_IFACE should be 0-WAN or 1,2,3,4,5 VPN Client number" 1602 | ;; 1603 | esac 1604 | 1605 | Set_IP_Rule "$DST_IFACE" 1606 | 1607 | # Check if delete option specified 1608 | if [ "$(echo "$@" | grep -cw 'del')" -gt 0 ]; then 1609 | Delete_Ipset_List "$IPSET_NAME" "$DIR" 1610 | Exit_Routine 1611 | fi 1612 | 1613 | # 'src=' or 'src_range=' parms require exception processing 1614 | if [ "$(echo "$@" | grep -c 'src=')" -gt 0 ] || [ "$(echo "$@" | grep -c 'src_range=')" -gt 0 ]; then 1615 | Process_Src_Option $@ 1616 | Exit_Routine 1617 | fi 1618 | 1619 | # Check for 'dnsmasq' parm which indicates DNSMASQ method & make sure 'autoscan' parm is not passed! 1620 | if [ "$(echo "$@" | grep -c 'dnsmasq=')" -gt 0 ]; then 1621 | DNSMASQ_Parm $@ 1622 | Create_Routing_Rules "$IPSET_NAME" 1623 | Check_Files_For_Entries "$SRC_IFACE" "$DST_IFACE" "$IPSET_NAME" "dnsmasq=$DOMAINS" "$DIR" 1624 | Exit_Routine 1625 | fi 1626 | 1627 | # Check for 'dnsmasq_file' parm 1628 | if [ "$(echo "$@" | grep -c 'dnsmasq_file=')" -gt 0 ]; then 1629 | DNSMASQ_Parm $@ 1630 | Create_Routing_Rules "$IPSET_NAME" 1631 | Check_Files_For_Entries "$SRC_IFACE" "$DST_IFACE" "$IPSET_NAME" "dnsmasq_file=$DNSMASQ_FILE" "$DIR" 1632 | Exit_Routine 1633 | fi 1634 | 1635 | # autoscan method 1636 | if [ "$(echo "$@" | grep -c 'autoscan')" -gt 0 ]; then 1637 | Dnsmasq_Log_File $@ 1638 | Harvest_Domains $@ 1639 | Create_Routing_Rules "$IPSET_NAME" 1640 | Check_Files_For_Entries "$SRC_IFACE" "$DST_IFACE" "$IPSET_NAME" "dnsmasq=$NAT_ENTRY" "$DIR" 1641 | Exit_Routine 1642 | fi 1643 | 1644 | # ASN Method 1645 | if [ "$(echo "$@" | grep -c 'asnum=')" -gt 0 ]; then 1646 | ASNUM_Parm $@ 1647 | Create_Routing_Rules "$IPSET_NAME" 1648 | ASN=$(echo "$@" | sed -n "s/^.*asnum=//p" | awk '{print $1}') 1649 | Check_Files_For_Entries "$SRC_IFACE" "$DST_IFACE" "$IPSET_NAME" "asnum=$ASN" "$DIR" 1650 | Exit_Routine 1651 | fi 1652 | 1653 | # Amazon Method 1654 | if [ "$(echo "$@" | grep -c 'aws_region=')" -gt 0 ]; then 1655 | AWS_Region_Parm $@ 1656 | Create_Routing_Rules "$IPSET_NAME" 1657 | AWS_REGION=$(echo "$@" | sed -n "s/^.*aws_region=//p" | awk '{print $1}') 1658 | Check_Files_For_Entries "$SRC_IFACE" "$DST_IFACE" "$IPSET_NAME" "aws_region=$AWS_REGION" "$DIR" 1659 | Exit_Routine 1660 | fi 1661 | 1662 | # Manual Method to create ipset list if IP address specified 1663 | if [ -z "$4" ] || [ "$(echo "$@" | grep -c 'dir=')" -gt 0 ] || [ "$(echo "$@" | grep -c 'ip=')" -gt 0 ]; then 1664 | Manual_Method $@ 1665 | Create_Routing_Rules "$IPSET_NAME" 1666 | Check_Files_For_Entries "$SRC_IFACE" "$DST_IFACE" "$IPSET_NAME" "Manual" "$DIR" 1667 | Exit_Routine 1668 | fi 1669 | 1670 | # If I reached this point, I have encountered a value I don't expect 1671 | Error_Exit "Encountered an invalid parameter: " $@ 1672 | ############################################################################################## 1673 | # End of Processing for Routing Rules 1674 | ############################################################################################## 1675 | --------------------------------------------------------------------------------