Linux:Network
Linux 네트워크 관리에 대한 내용 정리.
Categories
- Network
- Debian:NetworkConfiguration - 데비안 네트워크 설정
- Ubuntu:NetworkConfiguration - 우분투 네트워크 설정
- ArchLinux:Network
- netplan - Ubuntu 에서 정적 IP 설정하고 싶다면 Netplan#정적 IP 설정 방법 항목 참조.
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
리눅스 네트워크 성능 파라미터
무선 연결 (Wifi) 가능한 두 PC 간 통신 방법
라우터가 없을 때 Wifi 만으로 두 PC 간 통신 방법에 대하여 정리한다. Ubuntu 22.04 를 기준으로 설명한다.
Hotspot 방식 (가장 안정적)
| WARNING |
| Wi-Fi 핫스팟은 다른 사람들이 연결할 수 있는 Wi-Fi 네트워크를 생성하여 인터넷 연결을 공유할 수 있도록 해줍니다. 이를 위해서는 Wi-Fi 이외의 다른 경로를 통해 인터넷에 연결되어 있어야 합니다. 핫스팟을 켜면 해당 Interface 연결이 끊어지고 Wi-Fi를 통한 인터넷 접속이 불가능해집니다. |
A 노트북에서 Hotspot 생성
# NetworkManager 설치 확인
nmcli --version
# Hotspot 생성 (GUI 방식)
nmtui
# 또는 CLI 방식
nmcli device wifi hotspot ifname wlan0 ssid "MyHotspot" password "mypassword123"
B 노트북에서 연결
nmcli device wifi connect "MyHotspot" password "mypassword123"
# 연결 확인
nmcli device show
ip addr show
통신 시작
WiFi Direct (P2P 모드)
iw, wpasupplicant 사용. 드라이버 지원 확인:
A 노트북 - Group Owner (GO)
# P2P 인터페이스 생성
sudo ip link add p2p-wlan0 type bridge
sudo wpa_cli -i wlan0 p2p_group_add freq=2412
# 또는 더 간단하게
sudo systemctl start wpa_supplicant
# wpa_cli 대화형 모드
sudo wpa_cli -i wlan0
> p2p_listen
> p2p_group_add
Ad-hoc 모드 (간단한 P2P)
A 노트북
# Ad-hoc 네트워크 생성
sudo nmcli con add type wifi ifname wlan0 mode adhoc con-name adhoc ssid "adhoc-net"
sudo nmcli con modify adhoc wifi.channel 6
sudo nmcli con modify adhoc ipv4.method manual ipv4.addresses 192.168.100.1/24
sudo nmcli con up adhoc
# 확인
ifconfig wlan0
B 노트북
# 같은 Ad-hoc 네트워크에 연결
sudo nmcli con add type wifi ifname wlan0 mode adhoc con-name adhoc-join ssid "adhoc-net"
sudo nmcli con modify adhoc-join ipv4.method manual ipv4.addresses 192.168.100.2/24
sudo nmcli con up adhoc-join
# 확인
ping 192.168.100.1
Bluetooth (대안)
# Bluetooth 페어링
bluetoothctl
> power on
> discoverable on
> agent on
> default-agent
# 다른 노트북에서 검색 및 페어링
# 그 후 serial 통신 가능
실제 사용 예시 (Hotspot 추천)
A 노트북 (서버)
# Hotspot 시작
nmcli device wifi hotspot ifname wlan0 ssid "WorkNet" password "Pass123456"
# IP 확인
hostname -I
# 예: 10.42.0.1
# Python 서버 실행
python3 -m http.server 8000
B 노트북 (클라이언트)
# Hotspot에 연결
nmcli device wifi connect "WorkNet" password "Pass123456"
# A의 IP로 통신
curl http://10.42.0.1:8000
ssh user@10.42.0.1
각 방식 비교
| 방식 | 설정 난이도 | 안정성 | 속도 | 호환성 |
| Hotspot | ⭐ 낮음 | ⭐⭐⭐ 높음 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| WiFi Direct | ⭐⭐⭐ 높음 | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ |
| Ad-hoc | ⭐⭐ 중간 | ⭐⭐ 중간 | ⭐⭐ | ⭐⭐ |
| Bluetooth | ⭐⭐ 중간 | ⭐⭐ | ⭐ 낮음 | ⭐⭐⭐ |
리눅스에서 네트워크가 느려질 경우
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