Linux でネットワークソケットオプションが設定されているかどうかを確認する方法

LinuxLinuxBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Linux でネットワークソケットオプションが設定されているかどうかを確認する方法を学びます。拡張ソケット情報を表示するために -o オプション付きの ss コマンドの使用方法を調べます。これにより、TCP ウィンドウサイズや MSS などのさまざまなソケットオプションを表示できます。

この実験では、ss -no state all を使用してソケットの詳細を調べる方法を案内します。このコマンドはサービス名の解決を行わないため、出力が高速になります。また、ソケットの状態、アドレス、およびネットワークパフォーマンスの問題を診断するために重要な拡張情報を含む出力の解釈方法も学びます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL 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(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) 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 に似ていますが、一般的に ss の方が高速で、より詳細な情報を提供します。ここでは、拡張ソケット情報を表示する -o オプションの使用に焦点を当てます。

まず、ソケットとは何かを理解しましょう。ソケットは、ネットワーク上で実行されている 2 つのプログラム間の双方向通信リンクのエンドポイントです。ソケットはネットワークプログラミングの基礎であり、ネットワークのトラブルシューティングや最適化において理解することが重要です。

-o オプション付きの ss コマンドを使用すると、TCP ウィンドウサイズ、TCP MSS (Maximum Segment Size)、その他の TCP 関連パラメータなど、さまざまなソケットオプションを表示できます。この情報は、ネットワークパフォーマンスの問題を診断するために非常に役立ちます。

まず、ターミナルを開きましょう。

では、-o オプション付きの ss コマンドを実行して、ソケット情報を表示しましょう。また、-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_spacesnd_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 (Process ID) が表示されます。これは、特定のネットワーク接続を使用しているアプリケーションを特定するのに非常に役立ちます。

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 の値を確認してみましょう。この設定は、TCP 接続を確立する際にカーネルが SYN パケットを再送信する試行回数を決定します。

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/ ディレクトリに新しい設定ファイルを作成する必要があります。

たとえば、/etc/sysctl.d/ ディレクトリに 99-labex.conf という名前の新しいファイルを作成し、それに 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 ファイルを変更することで、システムのネットワーク設定を微調整して、パフォーマンスとセキュリティを最適化することができます。

まとめ

この実験では、ss コマンドを使用して Linux でネットワークソケットオプションを確認する方法を探りました。重要なポイントは、ss -no state all を使用して、TCP ウィンドウサイズや最大セグメントサイズ(MSS)などの拡張ソケット情報を表示する方法を理解することです。これらの情報は、ネットワークパフォーマンスの問題を診断するために重要です。

この実験では、ソケットがネットワーク通信のエンドポイントとして重要であることを強調し、ss コマンドがソケットパラメータに関する詳細な洞察を提供し、効果的なネットワークのトラブルシューティングと最適化を可能にすることを示しました。