Linux Network
Table of Contents
네트워크
용어
- LAN (Local Address Network)
- ARP (Address Resolution Protocol) : IP와 MAC를 매치하기 위한 프로토콜
- NDP (Neighbor Discover Protocol) : 이웃 탐색 프로토콜, 동일 네트워크 내 접속된 노드간의 관계를 판단하는 방법을 제공
Network Layer
- L2 (Data Link layer) : Mac
- L3 (Network layer), : IP
- L4 (Transport layer) : IP + Port
- L7 (Application layer) : IP + Port + 패킷
호스트명 변경
- hostnamectl
▒ hostnamectl set-hostname "cb-k8s-master" && exec bash
- Linux
reboot
명령이 hang 걸렸을 경우 대처 방법 원본
▒ echo 1 > /proc/sys/kernel/sysrq
▒ echo b > /proc/sysrq-trigger
도메인 점검
-
nslookup
: DNS 서버에 질의하여, 도메인의 정보를 조회 하는 명령어 -
IP로 도메인 찾기
▒ nslookup 209.132.183.181
- 특정 DNS (8.8.8.8 google)를 사용하여 도메인 검색
▒ nslookup redhat.com 8.8.8.8
원격서버 포트 점검
nc
(network cat)
▒ nc -z 8.8.8.8 53
nmap
▒ nmap localhost
▒ nmap ko.wikipedia.org -p 80
로컬 포트 점검
losf
- https://zetawiki.com/wiki/리눅스_lsof
- “List Open Files” 시스템에서 열려있는 파일에 대한 정보를 출력
▒ lsof -i -nP | grep LISTEN | awk '{print $(NF-1)" "$1}' | sort -u
- 특정 포트를 사용하는 프로세스 정보 보기
▒ lsof -i TCP:22
- 특정 명령어가 사용하는 포트
▒ lsof -c httpd
netstat
- https://zetawiki.com/wiki/리눅스_netstat
▒ netstat -tnlp # listening port 확인
ip
- link : 모든 네트워크 인터페이스 관리하고 출력
- address : ip 주소 관리하고 출력
- route : 라우팅 테이블을 관리하고 출력
- maddr : 멀티 캐스트 ip를 관리하고 출력
- neigh : ARP, NDP 관리하고 출력
ip link
▒ ip link set eth0 up # eth0 인터페이스 활성화
▒ ip link set eth0 down # eth0 인터페이스 비활성화
ip addr
▒ ip addr show # ip 정보 출력
▒ ip addr add 192.168.5.10/24 dev eth0 # eth0 인터페이스에 ip 설정
▒ ip addr del 192.168.5.10/24 dev eth0 # eth0 인터페이스의 ip 삭제
ip route
▒ ip route # 라우팅 테이블 출력
▒ ip route show # 라우팅 정보 출력
▒ ip route add default via 192.168.5.1 # 게이트웨이 설정
▒ ip route del default via 192.168.5.1 # 게이트웨이 삭제
▒ ip route add 10.20.12.0/24 via 192.168.5.1 dev eth0 # 정적 라우팅 정보 설정
▒ ip route get 8.8.8.8 # 라우팅 경로 출력
▒ ip -o route get 8.8.8.8 | sed -e 's/^.* src \([^ ]*\) .*$/\1/' # 라우팅 경로 source 출력
▒ ip -o route get 8.8.8.8 | awk '{ print $5; exit }' # 라우팅 경로 network interface 출력
▒ ip route del 10.20.12.0/24 # 정적 라우팅 정보 삭제
route
- Routing 테이블 출력
▒ route -n
▒ netstat -rn
- 추가
route add
명령으로 route table에 rule 추가 가능- 재부팅시 reset, 재부팅시에도 반영되도록 하는 방법은 리눅스 계열별로 참조
▒ route add default gw 192.168.1.254 eth0 # default gateway 추가
▒ route add default gw 192.168.1.254 netmask 255.255.255.0 dev eth0 # network-interface gateway 추가
▒ route add -net 111.222.33.44 netmask 255.255.255.255 dev eth0 # 111.222.33.44 요청 eth0 로 응답
▒ route add -net 111.222.33.0 netmask 255.255.255.0 dev eth0 # 111.222.33.* 요청 eth0 로 응답
- 삭제
▒ route del default gw 192.168.1.254 # gateway 삭제
▒ route del -net 111.222.33.44 netmask 255.255.255.255 dev eth0 # routing 삭제
- 참고 :
traceroute
(routing trace)
▒ apt-get install traceroute # 설치
▒ traceroute 10.90.1.11 # routing trace
iptable
-
Chain
- PREROUTING :외부로부터 들어오는 트래픽
- POSTROUTING :외부로 나가는 트래픽
- INPUT : 로컬 프로세스로 들어오는 트래픽
- OUTPUT : 로컬에서 발생해 외부로 나가는 트래픽
- FORWARD : 경유하는 트래픽 (로컬 프로세스를 거치지 않는)
- 조회
▒ iptables -nL -t nat # 조회
▒ iptables -nL PREROUTING -t nat # DNAT 조회
▒ iptables -nL POSTROUTING -t nat # SNAT 조회
- 삭제
▒ iptables -nL POSTROUTING -t nat --line-number
▒ iptables -t nat -D POSTROUTING 7 # 7은 라인번호(num)
- Rule
-A
: 체인의 가장 마지막에 룰을 추가-I
: 룰 순서 설정, 입력하지 않으면 1(가장 처음)에 추가
- 저장
https://ko.linux-console.net/?p=10360#gsc.tab=0
▒ sudo DEBIAN_FRONTEND=noninteractive apt-get -yq install iptables-persistent
▒ sudo iptables-save -t nat | sudo tee /etc/iptables/rules.v4
Use cases
- outbound 패킷 source-ip 변환
▒ iptables -t nat -A POSTROUTING -o eth0:1 -j SNAT --to 172.10.0.92 # I/F eth0:1 outbound 패킷 Source를 '172.10.0.92'로 변환
▒ iptables -t nat -A POSTROUTING -d 10.244.1.5 -j SNAT --to-source 172.10.0.92 # IP '10.244.1.5' outbound 패킷 Source를 '172.10.0.92'로 변환
125.131.213.4:80
로 들어오는 패킷을81
포트로 라우팅- 외부에서 들어오는 패킷 (PREROUTING)과 로컬 발생 패킷(OUTPUT) 을 동시에 지정
▒ iptables -A PREROUTING -t nat -j DNAT -p tcp -d 125.131.213.4 --dport 80 --to-destination 125.131.213.4:81
▒ iptables -A OUTPUT -t nat -j DNAT -p tcp -d 125.131.213.4 --dport 80 --to-destination 125.131.213.4:81
- I/F
eth0
로80
포트로 들어오는 패킷을81
포트로 라우팅 (DNAT 대신 REDIRECT 활용하는 방법)- dhcp 처럼 dynamic IP 환경에서 활용가능
▒ iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 81
- 로컬 패킷 허용/제거
▒ iptables -A INPUT -s 172.10.0.92 -j DROP # inbound 패킷 제거
▒ iptables -A OUTPUT -d 172.10.0.92 -j DROP # outbound 제거
▒ iptables -A INPUT -p tcp --dport 81 -j ACCEPT # inbound 패킷 허용 (tcp/81)
- 로컬 프로세스 outbound 패킷 변경
▒ iptables -t nat -I OUTPUT --src 54.238.87.186 --dst 18.180.118.194 -p tcp --dport 8080 -j REDIRECT --to-ports 8080 # 로컬 8080 포트로 redirect.
▒ iptables -t nat -A OUTPUT -d 18.180.118.194 -j DNAT --to-destination 172.10.0.134 # destination IP 변경
tcpdump
packet dump
ping
으로 source-ip, destination-ip 확인 가능
▒ tcpdump icmp -n
▒ tcpdump -i eth0
▒ tcpdump src 10.244.191.1 and dst 10.244.61.65
▒ tcpdump src 10.244.191.1 and port 80 and dst 10.244.61.65
- if eth0 를 통해 source-ip “172.10.0.191” 에서 destionation-ip “54.248.191.2” 8080 포트로 가는 패킷 덤프
▒ tcpdump -i eth0 src 172.10.0.191 and port 8080 and dst 54.248.191.23
hostname
▒ hostname -s # 호스트명
▒ hostname -I # ip
▒ hostname -I | awk '{print $1}' # private ip
퍼블릭 아이피
▒ yum install -y bind-utils # 설치
▒ dig +short myip.opendns.com @resolver1.opendns.com
▒ curl ifconfig.me
IP alias
- 활성화
▒ yum install -y net-tools # 설치
▒ ifconfig eth0:1 $(dig +short myip.opendns.com @resolver1.opendns.com) up
- 비활성화
▒ ifconfig eth0:1 down
▒ ip addr
posted at 2022/03/18 09:42