리눅스 tc Traffic Control 사용 방법 포트 미러링 방법

Traffic Control 줄여서 TC는 네트워크 트래픽을 제어하는 유틸리티 패키지입니다.

TC는 네트워크 대역폭 제한, 패킷 필터링, 대기 시간 및 패킷 손실 제어 등 다양한 기능을 수행할 수 있습니다. 오늘은 리눅스 TC를 사용해서 포트 미러링을 하는 방법에 대해서 알아보겠습니다. 

 

대역폭 제한 적용할 클래스 생성

# sudo tc qdisc add dev eth0 root handle 1: htb default 10

위 명령어는 eth0 인터페이스의 루트 클래스를 1:로 지정하고, HTB(Hierarchical Token Bucket) 클래스를 생성합니다. 10은 기본 클래스로 지정됩니다.

 

클래스에 대한 대역폭 제한을 설정

# sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 1mbps

위 명령어는 클래스 1:1을 생성하고, 이 클래스의 대역폭 제한을 1Mbps로 설정합니다.

 

 

TC를 사용하여 미러링(Mirroring) 기능 구현하기

미러링 수행할 두 개의 네트워크 인터페이스 선택

첫 번째 인터페이스에 대한 ingress(입력) 트래픽 캡쳐, 두 번째 인터페이스에 대한 egress(출력) 트래픽 캡쳐하는 각각의 캡쳐 포인트 생성

eth0 eth1 미러링 설정

# sudo tc qdisc add dev eth0 handle 1: ingress
# sudo tc qdisc add dev eth1 handle 1: ingress

eth0 및 eth1 네트워크 인터페이스 모두에 수신 qdisc를 추가합니다. (ingress : 들어오는 트래픽)

 

캡처 포인트 지정하기

# sudo tc qdisc add dev eth1 handle 2: root htb default 1

위 명령어들은 eth0와 eth1 인터페이스의 ingress 트래픽을 캡처하는 캡처 포인트를 각각 1:로 지정합니다. 또한 eth1 인터페이스의 egress 트래픽을 캡처하는 캡처 포인트를 2:로 지정하고, 기본 클래스를 1로 설정합니다.

 

ingress 캡쳐 포인트에서 캡쳐된 패킷을 두 번째 인터페이스의 egress 캡쳐 포인트로 복사

# sudo tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip src 10.0.0.0/8 flowid 1:1 action mirred egress mirror dev eth1
# sudo tc filter add dev eth1 parent 1: protocol ip prio 1 u32 match ip dst 10.0.0.0/8 flowid 2:1

위 명령어는 eth0 인터페이스의 ingress 캡처 포인트에서 10.0.0.1 송신지 IP 주소를 가진 패킷을 캡처하고, 해당 패킷을 eth1 인터페이스의 egress 캡처 포인트로 복사합니다. 이때, 복사된 패킷은 mirror 명령어를 사용하여 복사된 것임을 표시합니다. 마지막으로, eth1 인터페이스의 egress 캡처 포인트에서 해당 패킷을 전송합니다.

 

필요한 경우, 미러링할 패킷을 필터링하여 선택적으로 캡처할 수 있습니다.

# sudo tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip src 10.0.0.1 match ip dst 10.0.0.2 flowid 1:1 action mirred egress mirror dev eth1

위 명령어는 eth0 인터페이스의 ingress 캡처 포인트에서 10.0.0.1 송신지 IP 주소와 10.0.0.2 수신지 IP 주소를 가진 트래픽을 eth1로 미러링합니다.

 

[IT/네트워크(Network)] - [네트워크] 스위치(Switch) - L2, L3, L4 스위치 - L7 스위치

 

[네트워크] 스위치(Switch) - L2, L3, L4 스위치 - L7 스위치

안녕하세요 it를 공부하시거나 일을 하시는 분들은 네트워크를 빼놓을 수 없는데요 스위치의 종류에는 계층별로 Layer2 스위치 줄여서 L2, L3, L4 ,L7 스위치라고 부릅니다 어느정도 규모가 있는 곳

coconuts.tistory.com

[IT/리눅스(Linux)] - 네트워크 netstat 통신 상태 확인(포트, 서비스)

 

네트워크 netstat 통신 상태 확인(포트, 서비스)

개요 ㅇ 호스트에 장착된 네트워크 인터페이스의 통신 상태를 보여줌 - 연결 상태 (ESTABLISHED, LISTENING, TIME_WAIT, SYN_SENT) ☞ TCP 상태, TCP 연결설정 참조 - 프로토콜 (TCP, UDP 등) - 연결에 사용된 IP 주소

coconuts.tistory.com

 

댓글

Designed by JB FACTORY