저는 iptables와 해당 모듈을 처음 접했고 이를 이해하는 데 도움이 필요합니다.
질문
대규모 NAT 라우팅을 관리합니다. 100,000개 이상의 고정 IP(및 증가하고 있음)를 처리하고 이를 N 환경 중 하나로 라우팅해야 합니다.
표적
목표는 동적 DNAT 라우팅을 갖는 것입니다. 이것이 의미하는 바는 다음 프로세스를 사용하여 설명할 수 있습니다.
- 머신(Linux)은 네트워크 계층 요청을 받습니다.
- Netfilter가 요청을 가로챕니다.프로그래밍 방식으로
- Netfilter는 대상을 다음으로 변경합니다.사람들지적 재산권
- 요청 전달
현재 솔루션
현재 구현은 정적으로 수행됩니다. 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파이썬그리고가다).
이것은 매우 복잡한 질문이었고 나에게는 정말 어려운 질문이었습니다.
어떤 도움이라도 대단히 감사하겠습니다.