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.
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 der 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.
Untersuchen 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 mitnet.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.



