Linux:Network
Linux 네트워크 관리에 대한 내용 정리.
Manually Network Setting
RHEL-based
RHEL에서 /etc/sysconfig/network-scripts/ifcfg-eth0
를1 아래와 같이 편집한다. (IP=192.168.152.231, GateWay=192.168.152.2, DNS=192.168.152.2, MAC=00:21:5e:30:10:9e 로 가정한다)
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
HWADDR=00:21:5e:30:10:9e
NM_CONTROLLED=no
NETMASK=255.255.255.0
GATEWAY=192.168.152.2
DNS1=192.168.152.2
IPADDR=192.168.152.231
TYPE=Ethernet
IPV6INIT=no
USERCTL=no
- 만약 bonding 설정이 되었다면
/etc/sysconfig/network-scripts/ifcfg-bond0
파일을 수정해야 한다. (역시, bond뒤의 숫자는 시스템마다 다를수 있다)
이후 service network restart
를 사용하여 네트워크를 재시작 한다.
Debian-based
Debian:NetworkConfiguration 항목 참조.
How to check the ethernet port ENABLE/DISABLE
리눅스 네트워크 성능 파라미터
리눅스에서 네트워크가 느려질 경우
Linux에서 서버가 대량의 데이터를 전송하는 과정에서 네트워크가 느려지는 원인은 여러 가지가 있을 수 있습니다. 다음은 주요 원인과 그에 대한 설명입니다:
TCP Congestion Control (혼잡 제어)
- 원인: 네트워크 혼잡 상황에서 TCP 혼잡 제어 알고리즘이 전송 속도를 줄이기 때문에 느려질 수 있습니다.
- 확인 방법: 현재 사용 중인 혼잡 제어 알고리즘 확인
- 해결 방안: 환경에 맞는 혼잡 제어 알고리즘 (e.g., cubic, bbr)을 선택
NIC (Network Interface Card) Buffer Overflow
- 원인: 네트워크 인터페이스 카드(NIC)의 송신 버퍼가 가득 차면서 데이터 전송이 지연될 수 있습니다.
- 확인 방법: ethtool이나 ifconfig를 사용해 NIC 상태를 확인
- 해결 방안: NIC 드라이버 최적화 또는 고성능 NIC로 업그레이드
Socket Send Buffer 크기 제한
- 원인: 애플리케이션의 소켓 송신 버퍼 크기가 작아 대량의 데이터를 처리하지 못하고 전송 지연이 발생
- 확인 방법: 현재 송신 버퍼 크기 확인
- 해결 방안: 소켓 버퍼 크기를 늘림
Interrupt 및 CPU Bottleneck
- 원인: 대량의 패킷 처리가 NIC의 하드웨어 인터럽트를 통해 CPU 부하를 증가시킴
- 확인 방법: top, htop, 또는 sar를 사용해 CPU 사용률 확인
- 해결 방안:
- RSS (Receive Side Scaling) 활성화로 멀티코어 활용
- IRQ Affinity 조정
네트워크 MTU (Maximum Transmission Unit)
- 원인: MTU 값이 너무 작거나 클 경우, 패킷 분할(fragmentation) 또는 재조립 과정에서 성능 저하 발생
- 확인 방법: 현재 MTU 확인
- 해결 방안: MTU 크기 조정 (일반적으로 1500 또는 네트워크 환경에 따라 조정)
커널 네트워크 큐 관리
- 원인: 커널의
netdev_max_backlog
값이 낮아 대량의 데이터가 전송 대기열에서 드롭됨 - 확인 방법: 현재 대기열 크기 확인
- 해결 방안: 대기열 크기 증가
Disk I/O 병목 현상
- 원인: 데이터 소스가 디스크에서 읽히는 경우, 디스크 I/O가 느려 네트워크 전송 속도가 영향을 받음
- 확인 방법: iostat 또는 iotop으로 I/O 성능 확인
- 해결 방안: SSD로 업그레이드하거나 I/O 캐싱을 활성화
네트워크 경로 및 QoS (Quality of Service)
- 원인: 서버와 클라이언트 간의 네트워크 경로에서 병목 현상 발생
- 확인 방법: ping 및 traceroute로 경로 상태 확인. 또는 SNMP같은 네트워크 모니터링 프로토콜 지원하는 장비는 Nagios 같은 소프트웨어로 모니터링.
- 해결 방안: 네트워크 장비 QoS 설정 또는 데이터 트래픽 분산
커널 옵션 최적화 필요
- 원인: 대량 전송 시 기본 TCP 세팅이 비효율적일 수 있음
- 해결 방안: 다음 커널 파라미터 조정
sysctl -w net.ipv4.tcp_window_scaling=1
sysctl -w net.ipv4.tcp_moderate_rcvbuf=1
sysctl -w net.core.optmem_max=25165824
Bridge
- 리눅스로 Bridge Firewall 만들기
- CentOS5 리눅스 브리지 방화벽 구축
- Troubleshooting Ethernet bridging on Linux
- secure :: 리눅스 iptables: Bridge방화벽(네트워크) 구성 후 각 서버 테스트
- Linux Network Bridge (네트워크 브릿지)
Tools
- 패킷 스니퍼(Burp Suite, Zap Proxy, Wireshark), Recon, OSINT, 포트스캐너
See also
- ifconfig
- Virtual LAN (VLAN)
- OpenVSwitch
- Computer Network (컴퓨터 네트워크, PC와 PC의 직접적인 네트워크 연결 등...)
- ArchLinux:Network
- Network monitoring
- veth - 리눅스 가상 이더넷 인터페이스
- iperf3
- vegeta
- netdata
Favorite site
- SuSE 리눅스 네트워크 설정 - LAN(Local Area Network)에 리눅스 연결
- Doly의 CentOS7 강좌16 6. CentOS 네트워크 1 - 개념, 2 - 이더넷 설정
- Handbook:AMD64/Networking/Introduction
- Generic Network Configuration Information
- Joinc: Linux IP forwarding
- Joinc: Network Namespace
- Joinc: Bridge
- WiFi/HowToUse - Debian Wiki