Wie man prüft, ob eine Netzwerk-Socket-Option in Linux konfiguriert ist

LinuxLinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie prüfen können, ob eine Netzwerksocket-Option in Linux konfiguriert ist. Wir werden die Verwendung des Befehls ss mit der Option -o untersuchen, um erweiterte Socket-Informationen anzuzeigen. Dadurch können Sie verschiedene Socket-Optionen wie die TCP-Fenstergröße und die MSS (Maximum Segment Size) anzeigen.

Das Lab führt Sie durch die Verwendung von ss -no state all, um Socket-Details zu untersuchen und die Auflösung von Dienstnamen zu vermeiden, um eine schnellere Ausgabe zu erhalten. Sie lernen auch, wie Sie die Ausgabe interpretieren, die den Socket-Zustand, die Adressen und erweiterte Informationen enthält, die für die Diagnose von Netzwerkleistungsproblemen von entscheidender Bedeutung sind.


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{{"Wie man prüft, ob eine Netzwerk-Socket-Option in Linux konfiguriert ist"}} linux/cat -.-> lab-558889{{"Wie man prüft, ob eine Netzwerk-Socket-Option in Linux konfiguriert ist"}} linux/grep -.-> lab-558889{{"Wie man prüft, ob eine Netzwerk-Socket-Option in Linux konfiguriert ist"}} linux/ps -.-> lab-558889{{"Wie man prüft, ob eine Netzwerk-Socket-Option in Linux konfiguriert ist"}} linux/sudo -.-> lab-558889{{"Wie man prüft, ob eine Netzwerk-Socket-Option in Linux konfiguriert ist"}} linux/netstat -.-> lab-558889{{"Wie man prüft, ob eine Netzwerk-Socket-Option in Linux konfiguriert ist"}} linux/nano -.-> lab-558889{{"Wie man prüft, ob eine Netzwerk-Socket-Option in Linux konfiguriert ist"}} end

Prüfen von Socket-Optionen mit ss -o

In diesem Schritt werden wir untersuchen, wie man den Befehl ss verwendet, um Socket-Optionen zu prüfen. Der Befehl ss ist ein leistungsstarkes Werkzeug zur Untersuchung von Netzwerksockets. Es ist ähnlich wie netstat, aber ss ist im Allgemeinen schneller und liefert detailliertere Informationen. Wir werden uns auf die Verwendung der Option -o konzentrieren, um erweiterte Socket-Informationen anzuzeigen.

Zunächst verstehen wir, was ein Socket ist. Ein Socket ist ein Endpunkt einer bidirektionalen Kommunikationsverbindung zwischen zwei Programmen, die im Netzwerk laufen. Sockets sind grundlegend für die Netzwerkprogrammierung, und ihr Verständnis ist entscheidend für die Fehlerbehebung und Optimierung von Netzwerken.

Der Befehl ss mit der Option -o ermöglicht es Ihnen, verschiedene Socket-Optionen anzuzeigen, wie z. B. die TCP-Fenstergröße, die TCP-MSS (Maximum Segment Size) und andere TCP-verwandte Parameter. Diese Informationen können für die Diagnose von Netzwerkleistungsproblemen unschätzbar sein.

Öffnen Sie zunächst Ihr Terminal.

Jetzt führen wir den Befehl ss mit der Option -o aus, um die Socket-Informationen anzuzeigen. Wir verwenden auch die Option -n, um zu verhindern, dass ss versucht, Dienstnamen aufzulösen, was die Ausgabe verlangsamen kann.

Geben Sie den folgenden Befehl in Ihr Terminal ein und drücken Sie die Eingabetaste:

ss -no state all

Dieser Befehl macht Folgendes:

  • ss: Ruft das Socket-Statistik-Tool auf.
  • -n: Verhindert die Auflösung von Dienstnamen.
  • -o: Zeigt erweiterte Informationen an.
  • state all: Zeigt alle Sockets an, unabhängig von ihrem Zustand.

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

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

Die Ausgabe zeigt verschiedene Socket-Verbindungen, ihren Zustand und andere relevante Informationen. Das Feld skmem zeigt die Speicherauslastung im Zusammenhang mit dem Socket an. Die Felder rcv_space und snd_space zeigen die Empfangs- und Sendepuffergrößen an.

Jetzt filtern wir die Ausgabe, um uns auf TCP-Sockets zu konzentrieren und Prozessinformationen einzubeziehen. Dies hilft uns zu identifizieren, welche Prozesse bestimmte Sockets verwenden.

Geben Sie den folgenden Befehl in Ihr Terminal ein und drücken Sie die Eingabetaste:

sudo ss -tnpo state all

Dieser Befehl fügt die folgenden Optionen hinzu:

  • -t: Filtert nach TCP-Sockets.
  • -p: Zeigt den Prozess an, der den Socket verwendet.

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

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))

Die Spalte Process zeigt jetzt den Prozessnamen und die PID (Prozess-ID) in Verbindung mit jedem Socket an. Dies kann sehr nützlich sein, um zu identifizieren, welche Anwendungen bestimmte Netzwerkverbindungen verwenden.

Durch die Verwendung von ss -o können Sie wertvolle Einblicke in die Konfiguration und den Status der Netzwerksockets auf Ihrem System erhalten. Diese Informationen können zur Fehlerbehebung von Netzwerkproblemen, zur Optimierung der Netzwerkleistung und zum Verständnis der Verwendung von Netzwerkressourcen durch Anwendungen genutzt werden.

Überprüfen von Socket-Einstellungen in /proc/sys/net

In diesem Schritt werden wir untersuchen, wie man Socket-Einstellungen mithilfe des Verzeichnisses /proc/sys/net überprüft. Das /proc-Dateisystem ist ein virtuelles Dateisystem, das Informationen über laufende Prozesse und die Kernel-Konfiguration bereitstellt. Das Verzeichnis /proc/sys/net enthält verschiedene Dateien, die Netzwerkparameter steuern, einschließlich Socket-Einstellungen.

Das Verständnis dieser Einstellungen ist entscheidend für die Optimierung der Netzwerkleistung und die Fehlerbehebung von Netzwerkproblemen. Diese Einstellungen beeinflussen, wie der Kernel Netzwerkverbindungen, Puffergrößen, Timeouts und andere kritische Parameter behandelt.

Öffnen Sie zunächst Ihr Terminal.

Beginnen wir damit, den Inhalt des Verzeichnisses /proc/sys/net/ipv4 aufzulisten. Dieses Verzeichnis enthält spezifische Einstellungen für IPv4-Netzwerke.

Geben Sie den folgenden Befehl in Ihr Terminal ein und drücken Sie die Eingabetaste:

ls /proc/sys/net/ipv4

Dieser Befehl listet die Dateien im Verzeichnis /proc/sys/net/ipv4 auf. Jede Datei repräsentiert einen bestimmten Netzwerkparameter.

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

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

Jetzt untersuchen wir den Wert einer bestimmten Einstellung. Beispielsweise überprüfen wir den Wert von tcp_syn_retries. Diese Einstellung bestimmt, wie oft der Kernel versucht, ein SYN-Paket bei der Herstellung einer TCP-Verbindung neu zu übertragen.

Um den Wert von tcp_syn_retries anzuzeigen, verwenden Sie den cat-Befehl:

cat /proc/sys/net/ipv4/tcp_syn_retries

Sie sollten als Ausgabe eine Zahl sehen, typischerweise 6. Dies bedeutet, dass der Kernel bis zu 6 Mal versucht, das SYN-Paket neu zu übertragen.

6

Sie können auch den Inhalt anderer Dateien im Verzeichnis /proc/sys/net/ipv4 anzeigen, um deren aktuelle Werte zu sehen. Beispielsweise können Sie die Datei ip_local_port_range anzeigen, um den Bereich der lokalen Ports anzuzeigen, die das System verwenden kann:

cat /proc/sys/net/ipv4/ip_local_port_range

Die Ausgabe zeigt die untere und obere Grenze des Bereichs der lokalen Ports:

32768   60999

Um Einstellungen in Bezug auf alle IP-Versionen zu untersuchen, können Sie auch /proc/sys/net/core überprüfen.

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

Und überprüfen Sie den Wert von rmem_default:

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

Durch die Untersuchung der Dateien im Verzeichnis /proc/sys/net können Sie ein besseres Verständnis davon erhalten, wie Ihr System für das Netzwerk konfiguriert ist. Dieses Wissen kann für die Fehlerbehebung von Netzwerkproblemen und die Optimierung der Netzwerkleistung unschätzbar sein.

Prüfen der Socket-Konfiguration mit sysctl

In diesem Schritt werden wir untersuchen, wie man die Socket-Konfiguration mithilfe des Befehls sysctl prüft. sysctl ist ein Befehlszeilen-Programm, das es Ihnen ermöglicht, Kernel-Parameter zur Laufzeit anzuzeigen und zu ändern. Es ist ein leistungsstarkes Werkzeug zur Feinabstimmung des Verhaltens Ihres Systems, einschließlich der Netzwerkeinstellungen.

sysctl liest und schreibt Werte aus dem virtuellen Dateisystem /proc/sys. Im vorherigen Schritt haben wir cat verwendet, um Werte direkt aus Dateien in /proc/sys/net zu lesen. sysctl bietet eine bequemere und strukturiertere Möglichkeit, auf diese Parameter zuzugreifen und sie zu ändern.

Öffnen Sie zunächst Ihr Terminal.

Beginnen wir damit, alle verfügbaren netzwerkbezogenen sysctl-Parameter aufzulisten. Dazu können wir den Befehl sysctl -a verwenden und die Ausgabe mit grep filtern, um uns auf die Netzwerkeinstellungen zu konzentrieren.

Geben Sie den folgenden Befehl in Ihr Terminal ein und drücken Sie die Eingabetaste:

sysctl -a | grep net.

Dieser Befehl macht Folgendes:

  • sysctl -a: Listet alle Kernel-Parameter auf.
  • grep net.: Filtert die Ausgabe, um nur Parameter anzuzeigen, die mit net. beginnen.

Sie sollten eine lange Liste netzwerkbezogener Parameter und ihrer aktuellen Werte sehen. Die Ausgabe wird ähnlich wie folgt aussehen:

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

Um den Wert eines bestimmten Parameters anzuzeigen, verwenden Sie den sysctl-Befehl, gefolgt vom Parameternamen. Beispielsweise geben Sie den folgenden Befehl ein und drücken Sie die Eingabetaste, um den Wert von net.ipv4.ip_forward anzuzeigen:

sysctl net.ipv4.ip_forward

Dieser Befehl zeigt den aktuellen Wert des Parameters net.ipv4.ip_forward an.

net.ipv4.ip_forward = 0

Um einen sysctl-Parameter zu ändern, können Sie die Option -w verwenden, gefolgt vom Parameternamen und dem neuen Wert. Beachten Sie jedoch, dass Änderungen, die mit der Option -w vorgenommen werden, temporär sind und nach einem Neustart verloren gehen.

Beispielsweise geben Sie den folgenden Befehl ein und drücken Sie die Eingabetaste, um die IP-Weiterleitung temporär zu aktivieren (setzen Sie net.ipv4.ip_forward auf 1):

sudo sysctl -w net.ipv4.ip_forward=1

Sie können überprüfen, ob der Wert geändert wurde, indem Sie den sysctl-Befehl erneut ausführen:

sysctl net.ipv4.ip_forward

Die Ausgabe sollte jetzt Folgendes anzeigen:

net.ipv4.ip_forward = 1

Um die Änderung dauerhaft zu machen, müssen Sie die Datei /etc/sysctl.conf bearbeiten oder eine neue Konfigurationsdatei im Verzeichnis /etc/sysctl.d/ erstellen.

Beispielsweise erstellen wir eine neue Datei namens 99-labex.conf im Verzeichnis /etc/sysctl.d/ und fügen die Einstellung net.ipv4.ip_forward=1 hinzu.

Erstellen Sie zunächst die Datei mit nano:

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

Fügen Sie dann die folgende Zeile in die Datei ein:

net.ipv4.ip_forward=1

Drücken Sie Ctrl+X, dann Y und schließlich Enter, um die Datei zu speichern.

Wenden Sie schließlich die Änderungen an, indem Sie den folgenden Befehl ausführen:

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

Dieser Befehl liest die Konfigurationsdatei und wendet die Einstellungen an.

Durch die Verwendung des sysctl-Befehls und die Bearbeitung der Datei /etc/sysctl.conf können Sie die Netzwerkeinstellungen Ihres Systems feinabstimmen, um die Leistung und Sicherheit zu optimieren.

Zusammenfassung

In diesem Lab haben wir untersucht, wie man Netzwerk-Socket-Optionen in Linux mit dem Befehl ss prüft. Der wichtigste Punkt ist das Verständnis, wie man ss -no state all verwendet, um erweiterte Socket-Informationen anzuzeigen, einschließlich der TCP-Fenstergröße und der MSS (Maximum Segment Size), die für die Diagnose von Netzwerkleistungsproblemen von entscheidender Bedeutung sind.

Das Lab hat die Wichtigkeit von Sockets als Endpunkte für die Netzwerkkommunikation betont und gezeigt, wie der ss-Befehl detaillierte Einblicke in die Socket-Parameter bietet, was eine effektive Netzwerkfehlerbehebung und -optimierung ermöglicht.