Рандомизация порта источника для новых соединений

Обычно, когда исходный порт выбирается сетевым приложением, он выбирается последовательно между свободными портами, такими как 32000, 32001 и т. Д. Я хочу рандомизировать выбор порта источника. Я пробовал это с помощью iptables следующим образом, но это не помогло.

Chain POSTROUTING (policy ACCEPT 462 packets, 31025 bytes) 743 44580 MASQUERADE tcp -- * !lo 0.0.0.0/0 0.0.0.0/0 masq ports: 32768-61000 random 

Может ли кто-нибудь помочь мне в решении этого?

  • Отмена определенного ограничения ip / port iptables
  • Будет ли графический интерфейс брандмауэра в CentOS перезаписывать изменения, внесенные с помощью руководства IPTABLES?
  • Почему iptables принимает пакеты на данном порту, когда он закрыт?
  • Изменение IP-таблиц для разрешения FTP через TLS с использованием пассивных портов
  • Как ограничить исходящие подключения к одной программе?
  • Локальная переадресация портов автоматически настраивается при загрузке?
  • Как регистрировать входящий трафик icmp?
  • Ли Linux все еще применяет ограничение отслеживания соединений?
  • One Solution collect form web for “Рандомизация порта источника для новых соединений”

    Диапазон эфемерных портов легко настраивается с помощью sysctl net.ipv4.ip_local_port_range="32768 61000" , и вы также можете исключать порты с параметром net.ipv4.ip_local_reserved_ports .

    Для большей настройки я хотел бы начать с изучения источника ядра, AFAIK – это net / ipv4 / inet_connection_sock.c, где мое первое впечатление заключается в том, что назначение является случайным, а не последовательным.

     # net/ipv4/inet_connection_sock.c ... /* Obtain a reference to a local port for the given sock, * if snum is zero it means select any available local port. */ int inet_csk_get_port(struct sock *sk, unsigned short snum) { ... inet_get_local_port_range(net, &low, &high); remaining = (high - low) + 1; smallest_rover = rover = net_random() % remaining + low; 
    Linux и Unix - лучшая ОС в мире.