Как проверить, настроена ли опция сетевого сокета в Linux

LinuxLinuxBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабораторном занятии вы узнаете, как проверить, настроена ли опция сетевого сокета в Linux. Мы рассмотрим использование команды ss с опцией -o для отображения расширенной информации о сокетах, которая позволит вам просматривать различные опции сокетов, такие как размер окна TCP и MSS (Maximum Segment Size).

В рамках лабораторной работы вы научитесь использовать команду ss -no state all для изучения деталей сокетов, при этом разрешение имен служб будет отключено для более быстрого вывода. Вы также узнаете, как интерпретировать вывод, который включает состояние сокета, адреса и расширенную информацию, важную для диагностики проблем с сетевой производительностью.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux(("Linux")) -.-> linux/RemoteAccessandNetworkingGroup(["Remote Access and Networking"]) linux(("Linux")) -.-> linux/VersionControlandTextEditorsGroup(["Version Control and Text Editors"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") linux/SystemInformationandMonitoringGroup -.-> linux/ps("Process Displaying") linux/UserandGroupManagementGroup -.-> linux/sudo("Privilege Granting") linux/RemoteAccessandNetworkingGroup -.-> linux/netstat("Network Monitoring") linux/VersionControlandTextEditorsGroup -.-> linux/nano("Simple Text Editing") subgraph Lab Skills linux/ls -.-> lab-558889{{"Как проверить, настроена ли опция сетевого сокета в Linux"}} linux/cat -.-> lab-558889{{"Как проверить, настроена ли опция сетевого сокета в Linux"}} linux/grep -.-> lab-558889{{"Как проверить, настроена ли опция сетевого сокета в Linux"}} linux/ps -.-> lab-558889{{"Как проверить, настроена ли опция сетевого сокета в Linux"}} linux/sudo -.-> lab-558889{{"Как проверить, настроена ли опция сетевого сокета в Linux"}} linux/netstat -.-> lab-558889{{"Как проверить, настроена ли опция сетевого сокета в Linux"}} linux/nano -.-> lab-558889{{"Как проверить, настроена ли опция сетевого сокета в Linux"}} end

Проверка опций сокетов с помощью ss -o

На этом этапе мы рассмотрим, как использовать команду ss для проверки опций сокетов. Команда ss представляет собой мощный инструмент для исследования сетевых сокетов. Она аналогична netstat, но, как правило, работает быстрее и предоставляет более подробную информацию. Мы сосредоточимся на использовании опции -o для отображения расширенной информации о сокетах.

Сначала разберемся, что такое сокет. Сокет представляет собой конечную точку двусторонней связи между двумя программами, работающими в сети. Сокеты являются основой сетевого программирования, и понимание их принципов работы имеет решающее значение для устранения неполадок и оптимизации сети.

Команда ss с опцией -o позволяет просматривать различные опции сокетов, такие как размер окна TCP, TCP MSS (Maximum Segment Size) и другие параметры, связанные с протоколом TCP. Эта информация может быть неоценима при диагностике проблем с сетевой производительностью.

Для начала откройте терминал.

Теперь запустим команду ss с опцией -o, чтобы увидеть информацию о сокетах. Мы также будем использовать опцию -n, чтобы избежать попыток ss разрешить имена служб, что может замедлить вывод.

Введите следующую команду в терминал и нажмите Enter:

ss -no state all

Эта команда выполняет следующие действия:

  • ss: Запускает инструмент для сбора статистики о сокетах.
  • -n: Предотвращает разрешение имен служб.
  • -o: Показывает расширенную информацию.
  • state all: Отображает все сокеты, независимо от их состояния.

Вы должны увидеть вывод, похожий на следующий:

Netid  State   Recv-Q Send-Q   Local Address:Port   Peer Address:Port  Process
nl     UNCONN  0      0                rtnl:kernel
nl     UNCONN  0      0          fib_trie:kernel
nl     UNCONN  0      0                 xfrm:kernel
tcp    LISTEN  0      4096               0.0.0.0:22          0.0.0.0:*
        skmem:(r0,rb369280,t0,tb87380) tclass 0 pclass 0
tcp    ESTAB   0      0           127.0.0.1:38768         127.0.0.1:22
        skmem:(r0,rb87380,t0,tb87380) tclass 0 pclass 0 rcv_space:2048,4194304,65535 rcv_qlen:0 snd_space:32768,4194304,65535 snd_qlen:0
tcp    LISTEN  0      4096                  [::]:22             [::]:*
        skmem:(r0,rb369280,t0,tb87380) tclass 0 pclass 0

Вывод показывает различные сетевые соединения, их состояния и другую соответствующую информацию. Поле skmem показывает использование памяти, связанное с сокетом. Поля rcv_space и snd_space показывают размеры буферов приема и передачи данных.

Теперь отфильтруем вывод, чтобы сосредоточиться на сокетах TCP и включить информацию о процессах. Это поможет нам определить, какие процессы используют конкретные сокеты.

Введите следующую команду в терминал и нажмите Enter:

sudo ss -tnpo state all

В этой команде добавлены следующие опции:

  • -t: Фильтрует сокеты по протоколу TCP.
  • -p: Показывает процесс, использующий сокет.

Вы должны увидеть вывод, похожий на следующий:

State   Recv-Q Send-Q   Local Address:Port   Peer Address:Port  Process
LISTEN  0      4096               0.0.0.0:22          0.0.0.0:*    users:(("sshd",pid=942,fd=3))
ESTAB   0      0           127.0.0.1:22          127.0.0.1:49134  users:(("sshd",pid=1147,fd=5))
LISTEN  0      4096                  [::]:22             [::]:*    users:(("sshd",pid=942,fd=4))

Столбец Process теперь показывает имя процесса и PID (идентификатор процесса), связанные с каждым сокетом. Это может быть очень полезно для определения, какие приложения используют конкретные сетевые соединения.

Используя ss -o, вы можете получить ценную информацию о конфигурации и статусе сетевых сокетов на вашей системе. Эта информация может быть использована для устранения неполадок в сети, оптимизации сетевой производительности и понимания того, как приложения используют сетевые ресурсы.

Проверка настроек сокетов в /proc/sys/net

На этом этапе мы рассмотрим, как проверить настройки сокетов с использованием директории /proc/sys/net. Файловая система /proc представляет собой виртуальную файловую систему, которая предоставляет информацию о запущенных процессах и конфигурации ядра. Директория /proc/sys/net содержит различные файлы, которые управляют сетевыми параметрами, включая настройки сокетов.

Понимание этих настроек имеет решающее значение для оптимизации сетевой производительности и устранения неполадок, связанных с сетью. Эти настройки влияют на то, как ядро обрабатывает сетевые соединения, размеры буферов, таймауты и другие важные параметры.

Для начала откройте терминал.

Начнем с вывода содержимого директории /proc/sys/net/ipv4. Эта директория содержит настройки, специфичные для сетей IPv4.

Введите следующую команду в терминал и нажмите Enter:

ls /proc/sys/net/ipv4

Эта команда выведет список файлов в директории /proc/sys/net/ipv4. Каждый файл представляет собой определенный сетевой параметр.

Вы должны увидеть вывод, похожий на следующий:

conf  icmp_echo_ignore_all  icmp_ignore_bogus_error_responses  icmp_timestamp_ignore_replies  ip_default_ttl  ip_forward  ip_local_port_range  neigh  route  tcp_abc  tcp_adv_win_scale  tcp_allowed_congestion_control  tcp_congestion_control  tcp_dsack  tcp_ecn  tcp_fack  tcp_fastopen  tcp_fin_timeout  tcp_frto  tcp_keepalive_intvl  tcp_keepalive_probes  tcp_keepalive_time  tcp_low_latency  tcp_max_syn_backlog  tcp_max_tw_buckets  tcp_moderate_rcvbuf  tcp_mtu_probing  tcp_no_metrics_save  tcp_orphan_retries  tcp_reordering  tcp_retries1  tcp_retries2  tcp_rfc1337  tcp_rmem  tcp_sack  tcp_slow_start_after_idle  tcp_syn_retries  tcp_syncookies  tcp_timestamps  tcp_tw_recycle  tcp_tw_reuse  tcp_wmem

Теперь рассмотрим значение конкретной настройки. Например, проверим значение параметра tcp_syn_retries. Этот параметр определяет, сколько раз ядро будет пытаться повторно отправить пакет SYN при установке TCP-соединения.

Чтобы просмотреть значение параметра tcp_syn_retries, используйте команду cat:

cat /proc/sys/net/ipv4/tcp_syn_retries

В качестве вывода вы должны увидеть число, обычно 6. Это означает, что ядро будет пытаться повторно отправить пакет SYN до 6 раз.

6

Вы также можете просмотреть содержимое других файлов в директории /proc/sys/net/ipv4, чтобы увидеть их текущие значения. Например, чтобы просмотреть диапазон локальных портов, которые может использовать система, вы можете просмотреть файл ip_local_port_range:

cat /proc/sys/net/ipv4/ip_local_port_range

Вывод покажет нижнюю и верхнюю границы диапазона локальных портов:

32768   60999

Для изучения настроек, связанных со всеми версиями IP, вы также можете проверить директорию /proc/sys/net/core.

ls /proc/sys/net/core
default_qdisc  dev_weight  message_burst  message_cost  netdev_max_backlog  optmem_max  rmem_default  rmem_max  somaxconn  warnings  wmem_default  wmem_max

И проверить значение параметра rmem_default:

cat /proc/sys/net/core/rmem_default
212992

Изучением файлов в директории /proc/sys/net вы можете лучше понять, как ваша система настроена для работы в сети. Эта информация может быть неоценима при устранении неполадок в сети и оптимизации сетевой производительности.

Проверка конфигурации сокетов с помощью sysctl

На этом этапе мы рассмотрим, как проверить конфигурацию сокетов с использованием команды sysctl. sysctl представляет собой утилиту командной строки, которая позволяет просматривать и изменять параметры ядра во время выполнения. Это мощный инструмент для тонкой настройки поведения системы, включая настройки сети.

sysctl считывает и записывает значения из виртуальной файловой системы /proc/sys. На предыдущем этапе мы использовали команду cat для прямого чтения значений из файлов в /proc/sys/net. sysctl предоставляет более удобный и структурированный способ доступа к этим параметрам и их изменения.

Для начала откройте терминал.

Начнем с вывода списка всех доступных параметров sysctl, связанных с сетью. Для этого можно использовать команду sysctl -a и отфильтровать вывод с помощью grep, чтобы сосредоточиться на сетевых настройках.

Введите следующую команду в терминал и нажмите Enter:

sysctl -a | grep net.

Эта команда выполняет следующие действия:

  • sysctl -a: Выводит список всех параметров ядра.
  • grep net.: Фильтрует вывод, показывая только параметры, начинающиеся с net..

Вы должны увидеть длинный список сетевых параметров и их текущих значений. Вывод будет похож на следующий:

net.bridge.bridge-nf-call-arptables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-ip6tables = 0
net.core.bpf_jit_enable = 0
net.core.busy_poll = 50
net.core.busy_read = 50
net.core.default_qdisc = fq_codel
net.core.dev_weight = 64
net.core.message_burst = 10
net.core.message_cost = 5
net.core.netdev_max_backlog = 1000
net.core.optmem_max = 20480
net.core.rmem_default = 212992
net.core.rmem_max = 1703936
net.core.somaxconn = 128
net.core.warnings = 1
net.core.wmem_default = 212992
net.core.wmem_max = 1703936
net.ipv4.conf.all.accept_redirects = 1
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.all.arp_filter = 0
net.ipv4.conf.all.arp_ignore = 0
net.ipv4.conf.all.arp_notify = 0
net.ipv4.conf.all.bootp_relay = 0
net.ipv4.conf.all.forwarding = 0
net.ipv4.conf.all.ignore_routes_with_linkdown = 0
net.ipv4.conf.all.log_martians = 0
net.ipv4.conf.all.mc_forwarding = 0
net.ipv4.conf.all.medium_id = 0
net.ipv4.conf.all.promote_secondaries = 1
net.ipv4.conf.all.proxy_arp = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.all.secure_redirects = 1
net.ipv4.conf.all.send_redirects = 1
net.ipv4.conf.default.accept_redirects = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.default.arp_filter = 0
net.ipv4.conf.default.arp_ignore = 0
net.ipv4.conf.default.arp_notify = 0
net.ipv4.conf.default.bootp_relay = 0
net.ipv4.conf.default.forwarding = 0
net.ipv4.conf.default.ignore_routes_with_linkdown = 0
net.ipv4.conf.default.log_martians = 0
net.ipv4.conf.default.mc_forwarding = 0
net.ipv4.conf.default.medium_id = 0
net.ipv4.conf.default.promote_secondaries = 1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.default.secure_redirects = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.lo.accept_redirects = 1
net.ipv4.conf.lo.accept_source_route = 0
net.ipv4.conf.lo.arp_filter = 0
net.ipv4.conf.lo.arp_ignore = 0
net.ipv4.conf.lo.arp_notify = 0
net.ipv4.conf.lo.bootp_relay = 0
net.ipv4.conf.lo.forwarding = 0
net.ipv4.conf.lo.ignore_routes_with_linkdown = 0
net.ipv4.conf.lo.log_martians = 0
net.ipv4.conf.lo.mc_forwarding = 0
net.ipv4.conf.lo.medium_id = 0
net.ipv4.conf.lo.promote_secondaries = 1
net.ipv4.conf.lo.proxy_arp = 0
net.ipv4.conf.lo.rp_filter = 0
net.ipv4.conf.lo.secure_redirects = 1
net.ipv4.conf.lo.send_redirects = 1
net.ipv4.icmp_echo_ignore_all = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.icmp_timestamp_ignore_replies = 0
net.ipv4.ip_default_ttl = 64
net.ipv4.ip_forward = 0
net.ipv4.ip_local_port_range = 32768	60999
net.ipv4.neigh.default.anycast_delay = 1
net.ipv4.neigh.default.app_solicit = 0
net.ipv4.neigh.default.base_reachable_time_ms = 30000
net.ipv4.neigh.default.gc_interval = 30
net.ipv4.neigh.default.gc_stale_time = 60
net.ipv4.neigh.default.locktime = 0
net.ipv4.neigh.default.mcast_solicit = 3
net.ipv4.neigh.default.proxy_qlen = 64
net.ipv4.neigh.default.retrans_time_ms = 1000
net.ipv4.neigh.default.ucast_solicit = 3
net.ipv4.route.flush = 0
net.ipv4.route.gc_elasticity = 9
net.ipv4.route.gc_interval = 30
net.ipv4.route.gc_min_interval = 0
net.ipv4.route.gc_timeout = 210
net.ipv4.route.max_size = 4096
net.ipv4.route.min_adv_mss = 536
net.ipv4.route.mtu_expires = 600
net.ipv4.tcp_abc = 0
net.ipv4.tcp_adv_win_scale = 1
net.ipv4.tcp_allowed_congestion_control = reno
net.ipv4.tcp_congestion_control = reno
net.ipv4.tcp_dsack = 1
net.ipv4.tcp_ecn = 2
net.ipv4.tcp_fack = 1
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_fin_timeout = 60
net.ipv4.tcp_frto = 2
net.ipv4.tcp_keepalive_intvl = 75
net.ipv4.tcp_keepalive_probes = 9
net.ipv4.tcp_keepalive_time = 7200
net.ipv4.tcp_low_latency = 0
net.ipv4.tcp_max_syn_backlog = 256
net.ipv4.tcp_max_tw_buckets = 180000
net.ipv4.tcp_moderate_rcvbuf = 1
net.ipv4.tcp_mtu_probing = 0
net.ipv4.tcp_no_metrics_save = 0
net.ipv4.tcp_orphan_retries = 8
net.ipv4.tcp_reordering = 3
net.ipv4.tcp_retries1 = 8
net.ipv4.tcp_retries2 = 15
net.ipv4.tcp_rfc1337 = 0
net.ipv4.tcp_rmem = 4096	212992	6291456
net.ipv4.tcp_sack = 1
net.ipv4.tcp_slow_start_after_idle = 1
net.ipv4.tcp_syn_retries = 6
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_tw_reuse = 0
net.ipv4.tcp_wmem = 4096	16384	4194304
net.ipv6.conf.all.accept_dad = 1
net.ipv6.conf.all.accept_ra = 1
net.ipv6.conf.all.accept_redirects = 1
net.ipv6.conf.all.autoconf = 1
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.all.force_mld_version = 0
net.ipv6.conf.all.hop_limit = 64
net.ipv6.conf.all.ignore_routes_with_linkdown = 0
net.ipv6.conf.all.max_addresses = 16
net.ipv6.conf.all.mldv1_unsolicited_report_interval = 1000
net.ipv6.conf.all.mldv2_unsolicited_report_interval = 100
net.ipv6.conf.all.mtu = 0
net.ipv6.conf.all.proxy_ndp = 0
net.ipv6.conf.all.regen_max_random_factor = 600
net.ipv6.conf.all.router_solicitation_delay = 1
net.ipv6.conf.all.router_solicitation_interval = 4
net.ipv6.conf.all.router_solicitations = -1
net.ipv6.conf.all.seg6_enabled = 1
net.ipv6.conf.all.seg6_require_hmac = 0
net.ipv6.conf.all.use_optimistic_dad = 0
net.ipv6.conf.all.use_tempaddr = 0
net.ipv6.conf.default.accept_dad = 1
net.ipv6.conf.default.accept_ra = 1
net.ipv6.conf.default.accept_redirects = 1
net.ipv6.conf.default.autoconf = 1
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.default.force_mld_version = 0
net.ipv6.conf.default.hop_limit = 64
net.ipv6.conf.default.ignore_routes_with_linkdown = 0
net.ipv6.conf.default.max_addresses = 16
net.ipv6.conf.default.mldv1_unsolicited_report_interval = 1000
net.ipv6.conf.default.mldv2_unsolicited_report_interval = 100
net.ipv6.conf.default.mtu = 0
net.ipv6.conf.default.proxy_ndp = 0
net.ipv6.conf.default.regen_max_random_factor = 600
net.ipv6.conf.default.router_solicitation_delay = 1
net.ipv6.conf.default.router_solicitation_interval = 4
net.ipv6.conf.default.router_solicitations = -1
net.ipv6.conf.default.seg6_enabled = 1
net.ipv6.conf.default.seg6_require_hmac = 0
net.ipv6.conf.default.use_optimistic_dad = 0
net.ipv6.conf.default.use_tempaddr = 0
net.ipv6.conf.eth0.accept_dad = 1
net.ipv6.conf.eth0.accept_ra = 1
net.ipv6.conf.eth0.accept_redirects = 1
net.ipv6.conf.eth0.autoconf = 1
net.ipv6.conf.eth0.disable_ipv6 = 0
net.ipv6.conf.eth0.force_mld_version = 0
net.ipv6.conf.eth0.hop_limit = 64
net.ipv6.conf.eth0.ignore_routes_with_linkdown = 0
net.ipv6.conf.eth0.max_addresses = 16
net.ipv6.conf.eth0.mldv1_unsolicited_report_interval = 1000
net.ipv6.conf.eth0.mldv2_unsolicited_report_interval = 100
net.ipv6.conf.eth0.mtu = 1500
net.ipv6.conf.eth0.proxy_ndp = 0
net.ipv6.conf.eth0.regen_max_random_factor = 600
net.ipv6.conf.eth0.router_solicitation_delay = 1
net.ipv6.conf.eth0.router_solicitation_interval = 4
net.ipv6.conf.eth0.router_solicitations = -1
net.ipv6.conf.eth0.seg6_enabled = 1
net.ipv6.conf.eth0.seg6_require_hmac = 0
net.ipv6.conf.eth0.use_optimistic_dad = 0
net.ipv6.conf.eth0.use_tempaddr = 0
net.ipv6.conf.lo.accept_dad = 1
net.ipv6.conf.lo.accept_ra = 1
net.ipv6.conf.lo.accept_redirects = 1
net.ipv6.conf.lo.autoconf = 1
net.ipv6.conf.lo.disable_ipv6 = 0
net.ipv6.conf.lo.force_mld_version = 0
net.ipv6.conf.lo.hop_limit = 64
net.ipv6.conf.lo.ignore_routes_with_linkdown = 0
net.ipv6.conf.lo.max_addresses = 16
net.ipv6.conf.lo.mldv1_unsolicited_report_interval = 1000
net.ipv6.conf.lo.mldv2_unsolicited_report_interval = 100
net.ipv6.conf.lo.mtu = 65536
net.ipv6.conf.lo.proxy_ndp = 0
net.ipv6.conf.lo.regen_max_random_factor = 600
net.ipv6.conf.lo.router_solicitation_delay = 1
net.ipv6.conf.lo.router_solicitation_interval = 4
net.ipv6.conf.lo.router_solicitations = -1
net.ipv6.conf.lo.seg6_enabled = 1
net.ipv6.conf.lo.seg6_require_hmac = 0
net.ipv6.conf.lo.use_optimistic_dad = 0
net.ipv6.conf.lo.use_tempaddr = 0
net.netfilter.nf_conntrack_acct = 0
net.netfilter.nf_conntrack_buckets = 65536
net.netfilter.nf_conntrack_checksum = 0
net.netfilter.nf_conntrack_count = 256
net.netfilter.nf_conntrack_expect_max = 128
net.netfilter.nf_conntrack_frag6_high_thresh = 1048576
net.netfilter.nf_conntrack_frag6_low_thresh = 524288
net.netfilter.nf_conntrack_frag6_timeout = 60
net.netfilter.nf_conntrack_frag_high_thresh = 1048576
net.netfilter.nf_conntrack_frag_low_thresh = 524288
net.netfilter.nf_conntrack_frag_timeout = 60
net.netfilter.nf_conntrack_generic_timeout = 3600
net.netfilter.nf_conntrack_helper = 1
net.netfilter.nf_conntrack_icmpv6_timeout = 10
net.netfilter.nf_conntrack_icmp_timeout = 30
net.netfilter.nf_conntrack_log_invalid = 0
net.netfilter.nf_conntrack_max = 262144
net.netfilter.nf_conntrack_sctp_timeout_closed = 0
net.netfilter.nf_conntrack_sctp_timeout_cookie_echoed = 120
net.netfilter.nf_conntrack_sctp_timeout_cookie_wait = 120
net.netfilter.nf_conntrack_sctp_timeout_heartbeat_ack = 0
net.netfilter.nf_conntrack_sctp_timeout_heartbeat_sent = 30
net.netfilter.nf_conntrack_sctp_timeout_shutdown_ack_sent = 0
net.netfilter.nf_conntrack_sctp_timeout_shutdown_recd = 0
net.netfilter.nf_conntrack_sctp_timeout_shutdown_sent = 0
net.netfilter.nf_conntrack_tcp_loose = 1
net.netfilter.nf_conntrack_tcp_max_retrans = 3
net.netfilter.nf_conntrack_tcp_timeout_close = 10
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_established = 86400
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_last_ack = 30
net.netfilter.nf_conntrack_tcp_timeout_max_retrans = 300
net.netfilter.nf_conntrack_tcp_timeout_syn_recv = 60
net.netfilter.nf_conntrack_tcp_timeout_syn_sent = 120
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.unix.max_dgram_qlen = 512

Чтобы просмотреть значение конкретного параметра, используйте команду sysctl, за которой следует имя параметра. Например, чтобы просмотреть значение параметра net.ipv4.ip_forward, введите следующую команду и нажмите Enter:

sysctl net.ipv4.ip_forward

Эта команда отобразит текущее значение параметра net.ipv4.ip_forward.

net.ipv4.ip_forward = 0

Для изменения параметра sysctl можно использовать опцию -w, за которой следует имя параметра и новое значение. Однако имейте в виду, что изменения, сделанные с помощью опции -w, являются временными и будут потеряны после перезагрузки системы.

Например, чтобы временно включить IP-переадресацию (установить net.ipv4.ip_forward в значение 1), введите следующую команду и нажмите Enter:

sudo sysctl -w net.ipv4.ip_forward=1

Вы можете убедиться, что значение было изменено, запустив команду sysctl еще раз:

sysctl net.ipv4.ip_forward

Теперь вывод должен показать:

net.ipv4.ip_forward = 1

Для того чтобы изменения стали постоянными, вам нужно отредактировать файл /etc/sysctl.conf или создать новый файл конфигурации в директории /etc/sysctl.d/.

Например, создадим новый файл с именем 99-labex.conf в директории /etc/sysctl.d/ и добавим в него настройку net.ipv4.ip_forward=1.

Сначала создайте файл с помощью nano:

sudo nano /etc/sysctl.d/99-labex.conf

Затем добавьте следующую строку в файл:

net.ipv4.ip_forward=1

Нажмите Ctrl+X, затем Y, а затем Enter, чтобы сохранить файл.

Наконец, примените изменения, запустив следующую команду:

sudo sysctl -p /etc/sysctl.d/99-labex.conf

Эта команда прочитает файл конфигурации и применит настройки.

Используя команду sysctl и изменяя файл /etc/sysctl.conf, вы можете настроить сетевые параметры системы для оптимизации производительности и безопасности.

Резюме

В этом практическом занятии мы изучили, как проверять параметры сетевых сокетов в Linux с использованием команды ss. Основная идея заключается в понимании того, как использовать команду ss -no state all для отображения расширенной информации о сокетах, включая размер окна TCP и MSS (Maximum Segment Size, максимальный размер сегмента), которые являются важными для диагностики проблем с сетевой производительностью.

В практическом занятии подчеркивается важность сокетов как конечных точек сетевого взаимодействия и показано, как команда ss позволяет получить подробную информацию о параметрах сокетов, что облегчает эффективное устранение неполадок в сети и ее оптимизацию.