Tinyproxy: 다양한 네트워크 카드(eth0, eth1)를 모니터링하고 바인딩합니다. 라우팅 문제

Tinyproxy: 다양한 네트워크 카드(eth0, eth1)를 모니터링하고 바인딩합니다. 라우팅 문제

여기에 이미지 설명을 입력하세요.

Linux 서버에는 2개의 NIC가 있습니다: eth0eth1.

서버에 IP가 있습니다.

192.168.2.200/24 on eth0 
192.168.3.200/24 on eth1 

두 네트워크 모두 기본 서브넷 마스크( 255.255.255.0)와 기본 게이트웨이를 갖습니다 192.168.x.254.

다음 구성의 Tinyproxy가 서버에서 실행 중입니다.

Listen 192.168.2.200
Bind 192.168.3.200

아이디어는 프록시를 인터넷에 공개적으로 노출하고 이 프록시의 트래픽이 eth0인터넷에서 필요한 리소스에 도달하기 위해 다른 인터페이스를 거쳐야 한다는 것입니다 eth1.

192.168.3.0더 낮은 메트릭을 기본 경로로 설정한 경우에만 LAN에서 작동합니다. 그런데 더 이상 라우터에서 포트를 전달할 수 없으므로 eth0LAN 내에서만 프록시를 사용할 수 있고 외부에서는 액세스할 수 없습니다.

반대로, 192.168.2.0더 낮은 메트릭의 기본 경로를 기본 경로로 설정하면 인터넷에서 프록시에 액세스할 수 있지만 인터페이스를 통해 리소스를 검색할 수는 없습니다 eth1.

어쩌면 라우팅에 도움이 필요할 수도 있습니다.

내가 뭘 잘못했나요?

미리 감사드립니다.

답변1

초기 코멘트:

  • 설정의 다음 부분에서 네트워크 연결이 끊어졌습니다. 이 작업은 원격 위치가 아닌 LAN에서 프록시 서버에 연결하거나 직접 콘솔 액세스를 통해 수행해야 합니다.

  • 네트워크 구성 도구와의 적절한 통합은 여전히 ​​필요하며 여기서는 제공되지 않습니다.


현재 설정과 주소(특히 나가는 소켓)가 사용되는 방식을 악용할 수 있습니다.정책 기반 라우팅목표를 성취하다.

  • 192.168.2.200에서 전송된 모든 항목은 "왼쪽 인터넷"을 사용합니다.
  • 192.168.3.200에서 전송된 모든 항목은 "적절한 인터넷"을 사용합니다.
  • 바인딩되지 않은 소켓에서 방출된 모든 항목(INADDR_ANY에 대한 바인딩이라고도 함)은 기본 테이블의 일반적인 기본 경로에 라우팅 결정을 남깁니다. 합리적인 옵션은 "올바른 인터넷"을 사용하는 것입니다. 이는 프록시 서버의 클라이언트 부분이기도 하고 서버 자체에서 사용하는 것이 합리적이기 때문입니다(예: 패키지 업데이트). 아래의 규칙과 경로는 대칭이므로 다른 선택(세 번째 인터페이스의 세 번째 게이트웨이 포함)을 선택하면 여전히 프록시가 예상대로 작동합니다.

  • 기본 경로를 제거하여 처음부터 시작

    연결 손실을 방지하려면 콘솔 또는 LAN 액세스가 필요합니다. 물론 아래 명령은 실제로 경로를 새로 고치는 것이 아니라 네트워크 구성 도구를 사용하여 실제로 통합되어야 합니다.

    ip route flush default
    
  • 기본 테이블에 "기본" 기본 경로를 다시 추가합니다.

    ip route add default via 192.168.3.254 dev eth1
    
  • 양 당사자에 대해 대칭적으로 대체 기본 경로를 준비합니다.

    임의의 라우팅 테이블 10000(왼쪽)과 10001(오른쪽)을 사용합니다. LAN 경로로 이러한 테이블을 다시 채울 필요가 없습니다.기본라우팅 테이블은 기본 경로 억제자의 규칙을 사용하여 유지됩니다(다음 글머리 기호 참조).

    ip route add default via 192.168.2.254 dev eth0 table 10000
    ip route add default via 192.168.3.254 dev eth1 table 10001
    
  • 이러한 라우팅 테이블을 선택하는 정책 규칙을 추가합니다.

    규칙부터 시작하여 기본 라우팅 테이블인 LAN 경로에서 기본이 아닌 모든 경로를 찾습니다. 이 규칙에서는 기본 경로 결과가 표시되지 않으므로 suppress_prefixlength 0다음 두 규칙이 올바른 경로 테이블과 올바른 기본 경로를 선택할 수 있습니다.

    ip rule add pref 1999 lookup main suppress_prefixlength 0
    
    ip rule add pref 2000 from 192.168.2.200 lookup 10000
    ip rule add pref 2001 from 192.168.3.200 lookup 10001
    

그게 전부입니다.


을 텐데소규모 에이전트192.168.2.200에서 트래픽을 수신하고 192.168.3.200에서 트래픽을 보내는 경우 양방향의 모든 경로가 예상대로 작동합니다.

  • 프록시의 서버 측은 eth0에서 클라이언트를 수신하고 응답합니다.

    # ip route get iif eth0 from 192.0.2.2 to 192.168.2.200
    local 192.168.2.200 from 192.0.2.2 dev lo table local 
        cache <local> iif eth0 
    # ip route get from 192.168.2.200 to 192.0.2.2
    192.0.2.2 from 192.168.2.200 via 192.168.2.254 dev eth0 table 10000 uid 0 
        cache 
    
  • 프록시의 클라이언트는 eth1의 서버에 메시지를 보내고 서버로부터 응답을 받습니다.

    # ip route get from 192.168.3.200 to 192.0.2.2
    192.0.2.2 from 192.168.3.200 via 192.168.3.254 dev eth1 table 10001 uid 0 
        cache 
    # ip route get iif eth1 from 192.0.2.2 to 192.168.3.200
    local 192.168.3.200 from 192.0.2.2 dev lo table local 
        cache <local> iif eth1 
    
  • 바인딩되지 않은 쿼리는 평소와 같이 기본 테이블을 사용합니다.

    # ip route get to 192.0.2.2
    192.0.2.2 via 192.168.3.254 dev eth1 src 192.168.3.200 uid 0 
        cache 
    
  • 특별한 경우

    오른쪽 LAN 측(192.168.3.0/24)에 있는 클라이언트 또는 왼쪽 LAN 측(192.168.2.0/24)에 있는 서버의 경우 에이전트 자체가 아닌 LAN 시스템과 관련된 조정이 필요할 수 있습니다. 필요한 경우 특정 상황에 따라 이 답변을 수정할 수 있습니다.

관련 정보