소개
이 랩에서는 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_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 (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 명령이 소켓 매개변수에 대한 자세한 통찰력을 제공하여 효과적인 네트워크 문제 해결 및 최적화를 가능하게 하는 방법을 보여주었습니다.



