역사적 경험의 Linux 아래 PFRING 컴 파일 및 설치 과정
9735 단어 기술 수집LINUX 학습 노트
공식 사이트 주소:http://www.ntop.org/products/pf_ring / 다운로드 사이트:http://sourceforge.net/projects/ntop/files/PF_RING/
Linux 환경: Linux 버 전 3.1.0 - 229. el7. x8664 ([email protected]) (gcc version 4.8.2 20140120 (Red Hat 4.8.2-16) (GCC) ) #1 SMP Fri Mar 6 11:36:42 UTC 2015
1) PF 설치 여부 확인RING
pf 를 설치 했다 면ring, 실행 해 야 할 수도 있 습 니 다: rmmodpfring
pf 설치 여 부 를 확인 하지 못 하면ring, 실행: modinfopfring
2) 다운로드 사이트 에서 최신 버 전 을 다운로드 하 는 PFRING:
PF_RING-7.0.0.tar.gz
루트 사용자 로 서버 에 로그 인:
#cd /home
#tar zxf PF_RING-7.0.0.tar.gz
#cd PF_RING-7.0.0
컴 파일 및 설치 PFRING
1) 컴 파일 pf링 커 널 파일
커 널 모듈 디 렉 터 리 진입:
#cd /home/PF_RING-7.0.0/kernel
컴 파일 pf링 커 널 모듈:
#./configure
#make
#make install
PF_RING 커 널 모듈 에 설 치 된 디 렉 터 리:
/lib/modules/3.10.0-229.el7.x86_64/kernel/net/pf_ring
로 딩 pf링 커 널 모듈:
#modprobe pf_ring transparent_mode=1
pfring (pf ring) 이 실행 하 는 몇 가지 모드 를 pfring (pf ring) 모듈 에 삽입 할 때 다음 과 같은 인 자 를 추가 할 수 있 습 니 다.
insmod /kernel/pf_ring.ko [transparent_mode=0|1|2]
[min_num_slots=x][enable_tx_capture=1|0] [ enable_ip_defrag=1|0] [quick_mode=1|0]
그 중, transparentmode 는 pfring 의 실행 모드 를 지정 합 니 다.transparent_mode = 0: 패 킷 이 표준 인터페이스 에서 올 라 옵 니 다.이 모드 는 일반적인 libpcap 과 다 르 지 않 습 니 다. 성능 은 일반 libpcap 보다 좋 지 않 습 니 다. 사용 하지 않 는 것 을 권장 합 니 다.transparent_mode = 1: 패 킷 은 표준 인터페이스 에서 pfring 인터페이스 로 복사 하고 pfring 의 구동 을 지원 해 야 합 니 다.transparent_mode = 2: 순수 pfring 모드 는 pfring 의 구동 을 지원 해 야 합 니 다. 패 키 지 는 pfring 에서 만 올 라 가 고 일반적인 libpcap 프로그램 은 패 키 지 를 받 을 수 없습니다.이 모드 는 효율 이 가장 높 습 니 다.
혹은
insmod/kernel/pf_ring.ko [transparent_mode=0|1|2] [min_num_slots=x][enable_tx_capture=1|0][enable_ip_defrag=1|0] [quick_mode=1|0]
insmod /lib/modules/3.10.0-229.el7.x86_64/kernel/net/pf_ring/pf_ring.ko transparent_mode=2
pf 불 러 올 지 확인링 커 널 모듈:
#lsmod | grep pf_ring
로 딩 정보 보기:
#cat /proc/net/pf_ring/info
pf 삭제링 커 널 모듈:
#rmmod pf_ring
2) 컴 파일 pf링 개발 라 이브 러 리
입장 / home / pfRING - 7.0.0 / userland / lib 디 렉 터 리 에서 pf 컴 파일링 라 이브 러 리:
#cd /home/PF_RING-7.0.0/userland/lib
#./configure
오류 보고: checkingif libnuma is present... no
Please install libnuma-dev in order to usePF_RING
해결: libnuma - dev 라 이브 러 리 를 설치 해 야 합 니 다. CD 나 ISO 미 러 에서 numactl *. rpm 패 키 지 를 찾 아 rpm - ivh 명령 으로 설치 할 수 있 습 니 다.
#make
#make intall
주: 컴 파일 완 료 된 pf링 라 이브 러 리 와 헤더 파일 은 / usr / local / include 에서 찾 을 수 있 습 니 다.
주: lib / pf 부족ring. h 헤더 파일 은 / usr / include / linux / pfring. h 에서 찾 을 수 있 거나 / home / pfRING - 7.0.0 / kernel / linux 디 렉 터 리 에서 찾 을 수 있 습 니 다.
3) 컴 파일 지원 PFRING libpcap 라 이브 러 리
#cd /home/PF_RING-7.0.0/userland/libpcap
#./configure
#make
#make install
주: 원본 코드 수정, pfring 의 커 널 링 버퍼 는 10M 으로 설정 되 어 있 으 며, 기본 값 은 2M 소스 코드 입 니 다: userland / libpcap - 1.8.1 / pcap - linux. c 함수: int activatemmap(pcap_t*handle);
코드 세 션:
3310 if (handle->opt.buffer_size == 0) {
3311 /* by defaultrequest 2M for the ring buffer */
3312 handle->opt.buffer_size = 2*1024*1024;
3313 }
주: 컴 파일 된 libpcap 라 이브 러 리 와 헤더 파일 은 / usr / local / include / pcap 에서 찾 을 수 있 습 니 다.
4) 컴 파일 pf링 예시 코드
#cd /home/PF_RING-7.0.0/userland/examples
#make
#./alldevs
1. eth0 (PF_RING)
2. em1 (PF_RING)
3. br1 (PF_RING)
4. any (Pseudo-device that captures on all interfaces)
5. lo (PF_RING)
6. virbr0 (PF_RING)
7. eth1 (PF_RING)
8. em2 (PF_RING)
9. em3 (PF_RING)
10. em4 (PF_RING)
11. usbmon0 (All USB buses)
12. nflog (Linux netfilter log (NFLOG) interface)
13. nfqueue (Linux netfilter queue (NFQUEUE) interface)
14. usbmon1 (USB bus number 1)
15. usbmon2 (USB bus number 2)
PF_RING :pfcount、pfsend 。
#./pfcount -i eth0
Using PF_RING v.7.0.0
Capturing from eth0 [mac: 90:E2:BA:24:98:A0][if_index: 4][speed: 1000Mb/s]
# Device RX channels: 8
# Polling threads: 1
Dumping statistics on /proc/net/pf_ring/stats/37705-eth0.4
=========================
Absolute Stats: [17 pkts total][0 pkts dropped][0.0% dropped]
[17 pkts rcvd][1'472 bytes rcvd]
=========================
^CLeaving...
=========================
Absolute Stats: [44 pkts total][0 pkts dropped][0.0% dropped]
[44 pkts rcvd][3'828 bytes rcvd][83.76 pkt/sec][0.06 Mbit/sec]
=========================
Actual Stats: [27 pkts rcvd][525.30 ms][51.40 pps][0.00 Gbps]
=========================
///
5) 컴 파일 및 설치 PFRING 지원 드라이버
* ethtool 도 구 를 사용 하여 네트워크 카드 의 모델 을 봅 니 다. 예 를 들 어 ethtool - i eth 0
#lspci | grep Ethernet
* 드라이브 디 렉 터 리 에 들 어가 면 제로 복사 되 지 않 은 드라이브 를 사용 하 십시오.
cd /home/PF_RING-7.0.0/drivers/PF_RING_aware/non-ZC-drivers/intel
컴 파일 PFRING 에서 지원 하 는 네트워크 카드:
#cd e1000/e1000-8.0.35/src
#make && make install
네트워크 카드 구동 설치 위치:
/lib/modules/3.10.0-229.el7.x86_64/kernel/drivers/net/e1000/e1000.ko
마 운 트 해제 및 설치 PFRING 드라이브:
마 운 트 해제 드라이버: \ # rmmod e1000 설치 드라이버: \ # modprobe e1000 드라이브 보기: \ # ethtol - i eth0
메모: 통신망 카드 도 이 드라이버 를 사용 할 때 현장 작업 을 해 야 합 니 다. ssh 원 격 마 운 트 해제 드라이버 를 사용 하면 네트워크 가 연결 되 지 않 습 니 다.
주: 채집 에 사용 되 는 네트워크 카드 와 통신 에 사용 되 는 네트워크 카드 는 각각 다른 구동 을 사용 하 는 것 을 권장 합 니 다.
주: 네트워크 카드 이름과 MAC 주 소 를 설정 합 니 다. 아래 파일 을 컴 파일 하 십시오.
/etc/udev/rules.d/70-persistent-net.rules
///
6) 총괄
컴 파일 및 설치 PFRING 명령 은 다음 과 같이 정 리 됩 니 다 (루트 사용자 로 실행 할 필요 가 없습니다).
\ # 컴 파일 커 널
cd /home/PF_RING-7.0.0/kernel
make && sudo make install
\ # 컴 파일 PFRING 라 이브 러 리
cd ../userland/lib
./configure
\ # libpcap 라 이브 러 리 컴 파일
cd ../libpcap-1.8.1
./configure –prefix=/usr/local/pfring&& make && sudo make install
\ # TCPDUMP 컴 파일
cd ../tcpdump-4.1.1
./configure –prefix=/usr/local/pfring&& make && sudo make install
\ # 동적 라 이브 러 리 업데이트
sudo ldconfig
\ # 로드 모듈
sudo modprobe pf_ring
\ # 루트 권한 으로 승급, 실행
modinfo pf_ring && cat/proc/net/pf_ring/info
\ # ixgbe 모듈 의 절 류 률 증가
rmmod ixgbe
modprobe ixgbe InterruptThrottleRate=4000
\ # 고속 네트워크 의 수요 에 부합 하기 위해 서 는 링 슬롯 의 수 를 늘 려 야 합 니 다.
rmmod pf_ring
modprobe pf_ring transparent_mode=1 min_num_slots=65534 enable_tx_capture=0
PF 사용RING
지원 PF 를 사용 하면RING 의 libpcap 는 프로그램의 헤더 파일 에 \ # define HAVE 를 추가 하 는 것 을 기억 하 세 요.PF_RING 정의 또는 CXXFLAGS 에 - DAVEPF_RING。
PF 를 직접 사용 하면RINGAPI 컴 파일 코드 는 위의 정 의 를 추가 할 필요 가 없습니다.
PF_RINGAPI 는 doc 디 렉 터 리 에 있 는 UserGuide. pdf 파일 을 읽 거나 userland 디 렉 터 리 에 있 는 examples 의 pfcount 코드 를 읽 으 십시오.
부록 A 컴 파일 PFRING 문제
질문 1:. / runlex. sh: line 83: flex: command not found;
./runlex.sh: line 118: flex: command not found
정 답: sudo yuminstall flex
질문 2: make [2]: yacc: Command not found
answer:sudo yum install bison
질문 3: cannot find - lnuma
answer:sudo yum install numactl-devel
Redhat 6.3 버 전 은 인터넷 에서 다운로드 해 야 합 니 다: numactle - devel - 2.0.7 - 3. el6. x8664.rpm
문제 4: grammar. c: (. text + 0x44e): undefined reference to ` pcaplex’
answer: 오래된 libpcap 1.0.0 이전 버 전 을 삭제 합 니 다.
#rpm -aq | grep libpcap
#yum remove libpcap
질문 5: insmod: error inserting 'pfring.ko’: -1 Unknown symbol in module
해결: 현재 네트워크 카드 드라이브 를 마 운 트 해제 하지 않 아 새로운 드라이브 를 불 러 올 수 없 기 때문에 네트워크 카드 드라이브 를 마 운 트 해제 한 후에 다시 불 러 와 야 합 니 다.
문제 6: -- nodefs: unknown option
해결: rpm -- nodeps - e libpcap
부록 B 설정 PFRING
1. ixgbe 드라이브 를 불 러 오 면 InterruptThrottle Rate 를 4000 으로 설정 하 는 것 이 가장 좋 습 니 다.
modprobe ixgbe InterruptThrottleRate=4000
2. 로드 PFRING 구동, 투과 모드 2 를 사용 하고 합 리 적 인 버퍼 크기 를 설정 합 니 다.
modprobe pf_ring.ko transparent_mode=2min_num_slots=16384
3. 이 더 넷 설 비 를 최적화 하고 스루풋 에 영향 을 주 는 옵션 을 닫 습 니 다.eth 3 대신 적당 한 인 터 페 이 스 를 사용 합 니 다.
ethtool -C eth3 rx-usecs 1000
ethtool -C eth3 adaptive-rx off
ethtool -K eth3 tso off
ethtool -K eth3 gro off
ethtool -K eth3 lro off
ethtool -K eth3 gso off
ethtool -K eth3 rx off
ethtool -K eth3 tx off
ethtool -K eth3 sg off
4. CPU 친화력 설정
Snort 가 5Gbps 스루풋 에 도달 하기 위해 서 는 더 좋 은 하드웨어 (24 핵 CPU Intel X567) 가 필요 합 니 다. PF 를 사용 하 십시오.RING NAPI 나 DNA 를 가속 해 Silicom 네트워크 카드 를 선택 했다.
TX 캡 처 사용 안 함: insmodpfring.ko enable_tx_capture = 0 ring slots 수량 증가, 투과 모드 사용 1: insmod pfring.ko enable_tx_capture=0transparent_mode=1 min_num_slots=16384
참조 연결:https://blog.csdn.net/weixin_41486034/article/details/106240240