프로그래밍 방식으로 패킷 대상을 설정하고 Netfilter를 사용하여 라우팅합니다.

프로그래밍 방식으로 패킷 대상을 설정하고 Netfilter를 사용하여 라우팅합니다.

저는 iptables와 해당 모듈을 처음 접했고 이를 이해하는 데 도움이 필요합니다.


질문

대규모 NAT 라우팅을 관리합니다. 100,000개 이상의 고정 IP(및 증가하고 있음)를 처리하고 이를 N 환경 중 하나로 라우팅해야 합니다.


표적

목표는 동적 DNAT 라우팅을 갖는 것입니다. 이것이 의미하는 바는 다음 프로세스를 사용하여 설명할 수 있습니다.

  1. 머신(Linux)은 네트워크 계층 요청을 받습니다.
  2. Netfilter가 요청을 가로챕니다.프로그래밍 방식으로
  3. Netfilter는 대상을 다음으로 변경합니다.사람들지적 재산권
  4. 요청 전달

현재 솔루션

현재 구현은 정적으로 수행됩니다. IP당 MASQUERADE와 함께 다음 DNAT 규칙을 사용하여 SNAT를 처리합니다.

iptables -t nat -A PREROUTING -s {USER-STATIC-IP_1} -j DNAT --to-destination {ENV-IP_1}
...
iptables -t nat -A PREROUTING -s {USER-STATIC-IP_N} -j DNAT --to-destination {ENV-IP_N}
iptables -t nat -A POSTROUTING -j MASQUERADE

질문:

  • 확장 - iptables 규칙은 영원히 커질 수 없습니다.
  • 복제 - 규칙 데이터는 중앙 집중화되지 않고 대신 각 시스템에서 현금화됩니다.
  • 관리 - N개의 규칙을 관리하고 시스템 간에 동기화하는 것은 번거롭습니다.
  • 로깅 - 로깅할 수 있지만 스트리밍할 수는 없습니다. LOG iptables 모듈을 사용해야 합니다
  • 직접적인 제어 없음 - 패킷 흐름에 대한 실제 제어가 없습니다. 정적 규칙만 추가하고 제거할 수 있지만 패킷과 상호 작용할 수는 없습니다.

도전

  • Netfilter를 사용하여 네트워크 요청 가로채기(프로그래밍 방식으로 요청을 가로챌 수 있는 다른 모듈을 찾을 수 없음)
  • 요청의 비동기 처리. 모든 IP를 중앙 집중화하기 위해 IP 주소를 데이터베이스(빠른 데이터베이스)에 저장하고 싶습니다.
  • 업데이트 중가방손상 없는 목적지
  • 응답은 사용자에게 다시 라우팅되어야 합니다(MASQUERADE 스타일).
  • Netfilter와의 통합에 사용되는 프로그래밍 언어는 빠르고(컴파일 가능) 새로운 프로그래머에게 친숙해야 합니다(I파이썬그리고가다).

이것은 매우 복잡한 질문이었고 나에게는 정말 어려운 질문이었습니다.

어떤 도움이라도 대단히 감사하겠습니다.

관련 정보