🖧 Как изменить диапазон портов, доступный для автоматического назначения |

🖧 Как изменить диапазон портов, доступный для автоматического назначения

Мануал

Изменение диапазона, доступных для автоматического назначения портов.

Как по умолчанию

По умолчанию порты, доступные для автоматического назначения, находятся в диапазоне от 32768 до 60999.

sysctl net.ipv4.ip_local_port_range
net.ipv4.ip_local_port_range = 32768    60999

Если зарезервированных портов нет:

sysctl net.ipv4.ip_local_reserved_ports
net.ipv4.ip_local_reserved_ports =

Непривилегированные порты начинаются с порта 1024.

$ sysctl net.ipv4.ip_unprivileged_port_start
net.ipv4.ip_unprivileged_port_start = 1024

Пользовательские значения

Определим зарезервированные порты.

sudo sysctl --write net.ipv4.ip_local_reserved_ports=8080-8081,9418
net.ipv4.ip_local_reserved_ports = 8080-8081,9418

Определим порты, доступные для автоматического назначения портов.

sudo sysctl --write net.ipv4.ip_local_port_range="4096 60990"
net.ipv4.ip_local_port_range = 4096 60990

Сделаем эту модификацию постоянной.

sudo tee /etc/sysctl.d/20-local_port_range.conf 1>/dev/null <<EOF
net.ipv4.ip_local_reserved_ports = 8080-8081,9418
net.ipv4.ip_local_port_range = 4096 60990
EOF

Убедитесь, что он будет загружаться при загрузке.

sudo sysctl --load /etc/sysctl.d/20-local_port_range.conf
net.ipv4.ip_local_reserved_ports = 8080-8081,9418
net.ipv4.ip_local_port_range = 4096 60990

Дополнительные примечания

Пожалуйста, прочитайте статью IP Sysctl для получения более подробной информации.

IP Sysctl — The Linux Kernel documentation

Вы можете использовать простой скрипт Python, чтобы проверить, работает ли он так, как ожидалось.

import socket

repeat_count = 20000
opened_ports = set()

def open_port():
  with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
    sock.bind(('', 0))
    _, port = sock.getsockname()
    return port

def main():
  for _ in range(repeat_count):
    opened_ports.add(open_port())

  print("Opened ports:")
  print("  Min: ", min(opened_ports))
  print("  Max: ", max(opened_ports))

if __name__=="__main__":
  main()
Opened ports:
  Min:  4097
  Max:  60981

см. также:

🐧 Как правильно защитить sysctl на Linux от спуффинга и Syn-флуда

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий