Как написать программу для определения серого адреса? Добрый день!
Имею подключение к Интернету через Ростелеком через роутер F@st 1744 v4 со стандартной прошивкой от провайдера, сервер на базе Ubuntu Server. Проблема в том, что время от времени (раз в неделю примерно) роутер получает серый ip-адрес. Сервисы на сервере, соответственно, становятся недоступны извне. После n-нного числа принудительных дисконнектов снова присваивается белый ip-адрес, все сервисы на сервере становятся вновь доступны.
По причине того, что провайдер не дает подключить услугу "Статический ip-адрес" хочу написать программу, которая при получении серого ip-адреса отправляет роутер в ребут до тех пор, пока он не получит белый. Вопрос в том, каким образом выявить признак "серости" адреса, если такой адрес может начинаться с 77.ххх.ххх.ххх (так же, как и белый).

21 Авг 2019 в 06:37
212 +1
0
Ответы
1

Для определения "серого" адреса можно использовать услуги сторонних сервисов для проверки IP-адреса на черные списки или провести анализ маршрутизации IP-трафика. Можно также проверить метрики, такие как Time to Live (TTL) и значение CIDR (Classless Inter-Domain Routing), чтобы определить, является ли адрес "серым".

Вот пример кода на Python, который проверяет текущий IP-адрес и перезагружает роутер, если он является "серым":

import requests
import subprocess
def is_gray_ip(address):
blacklists = ['https://domains.tgnet.ru/ip.txt',
'http://www.stopforumspam.com/api?ip=%s' % address]
for blacklist in blacklists:
response = requests.get(blacklist)
if response.text.strip() == address:
return True
return False
def get_current_ip():
ip = requests.get('https://api.ipify.org').text
return ip
def reboot_router():
subprocess.run(['ssh', 'admin@router_ip', 'reboot']) # replace 'router_ip' with actual IP of your router
if __name__ == "__main__":
current_ip = get_current_ip()
if is_gray_ip(current_ip):
print("Gray IP address detected. Rebooting router...")
reboot_router()
else:
print("White IP address detected. Everything is OK.")

Этот код проверит текущий IP-адрес на черные списки и, если обнаружит, что адрес "серый", отправит команду на перезагрузку роутера. Не забудьте заменить 'router_ip' на реальный IP вашего роутера.

Обратите внимание, что для перезагрузки роутера через SSH вам потребуется настроить доступ к роутеру по SSH. Также помните, что перезагрузка роутера может временно прервать ваш доступ к Интернету. Не забудьте проверить работоспособность вашей программы на песочнице перед использованием в реальной среде.

20 Апр 2024 в 13:15
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир