Linux 에서 네트워크 소켓 옵션 설정 확인 방법

LinuxBeginner
지금 연습하기

소개

이 랩에서는 Linux 에서 네트워크 소켓 옵션이 구성되었는지 확인하는 방법을 배우게 됩니다. ss 명령을 -o 옵션과 함께 사용하여 확장 소켓 정보를 표시하는 방법을 살펴보고, TCP 윈도우 크기 및 MSS 와 같은 다양한 소켓 옵션을 확인할 수 있습니다.

이 랩에서는 ss -no state all을 사용하여 소켓 세부 정보를 검사하는 방법을 안내하며, 서비스 이름 확인을 방지하여 더 빠른 출력을 얻을 수 있습니다. 또한 소켓 상태, 주소 및 네트워크 성능 문제를 진단하는 데 중요한 확장 정보를 포함하는 출력을 해석하는 방법도 배우게 됩니다.

ss -o 로 소켓 옵션 확인

이 단계에서는 ss 명령을 사용하여 소켓 옵션을 확인하는 방법을 살펴보겠습니다. ss 명령은 네트워크 소켓을 조사하는 강력한 도구입니다. netstat과 유사하지만, ss는 일반적으로 더 빠르고 더 자세한 정보를 제공합니다. 확장 소켓 정보를 표시하기 위해 -o 옵션을 사용하는 데 중점을 두겠습니다.

먼저, 소켓이 무엇인지 이해해 봅시다. 소켓은 네트워크에서 실행되는 두 프로그램 간의 양방향 통신 링크의 종점입니다. 소켓은 네트워크 프로그래밍의 기본이며, 이를 이해하는 것은 네트워크 문제 해결 및 최적화에 매우 중요합니다.

-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, 프로세스 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 에서 네트워크 소켓 옵션을 확인하는 방법을 살펴보았습니다. 핵심은 네트워크 성능 문제를 진단하는 데 중요한 TCP 윈도우 크기 및 MSS 를 포함한 확장 소켓 정보를 표시하기 위해 ss -no state all을 사용하는 방법을 이해하는 것입니다.

이 랩에서는 네트워크 통신의 종착점으로서 소켓의 중요성을 강조하고 ss 명령이 소켓 매개변수에 대한 자세한 통찰력을 제공하여 효과적인 네트워크 문제 해결 및 최적화를 가능하게 하는 방법을 보여주었습니다.