가상 게이트웨이 iptables

가상 게이트웨이 iptables

간단한 네트워크 구성을 설정하려고 하는데 알 수 없습니다. 내 목표는 LAN 클라이언트가 VPN을 통과하면서 서버 자체에 액세스할 수 있도록 하는 것입니다. 현재 설정:

GW 기계:

VPN interface -> vpn0 [10.x.y.z]
LAN interface -> lan0 [172.16.1.0/24], machine itself is 172.16.1.1

VPN 연결을 위한 별도의 라우팅 테이블을 만들었고 이에 액세스할 수 있습니다(예: ping -I vpn0 10.20.30.40VPN 네트워크의 컴퓨터). 현재 다음과 같이 하면 LAN 클라이언트에 대해 VPN 액세스를 활성화할 수 있습니다.

ip rule add from 172.16.1.0/24 table vpntable
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o vpn0 -j MASQUERADE

그러나 이 경우 클라이언트는 172.16.1.1예상대로 게이트웨이 컴퓨터( ) 자체에 액세스할 수 없습니다. 나의 목표는 달성할 수 있는 것이다.둘 다게이트웨이 시스템과 VPN은 LAN 측에서 제공됩니다. 이것이 범인이라고 확신 MASQUERADE하지만 어느 방향으로 가야할지 모르겠습니다. 나는 두 가지 생각을 염두에두고 있습니다 :

  1. 모듈을 통해 가상 인터페이스를 생성 dummy하고 이를 LAN 클라이언트용 "게이트웨이"로 구성하시겠습니까? 기본적으로 그들은 에 접근할 수 있을 것입니다 172.16.1.1. 만약 그들이 와 같은 일을 한다면 ip route add 10.20.30.0/24 via 172.16.16.1, 172.16.16.1그 가상 인터페이스의 주소는 어디에 있습니까? 그러나 나는 결국 많은 SNAT규칙을 수렁에 빠뜨리고 더 많은 오버헤드를 초래할까 걱정됩니다.
  2. 연결 태그를 통한 정책 기반 라우팅? 이 경우 고객은 추가적인 조치를 취할 필요가 없습니다.

GW 시스템은 Ubuntu LTS이고 전달이 켜져 있으며 언급된 규칙을 제외하고 iptables는 비어 있습니다.

이 주제에 대한 의견을 보내 주시면 감사하겠습니다. 감사합니다!

고쳐 쓰다:

vpntableVPN 네트워크와 관련된 경로가 포함되어 있습니다.

default via 10.20.1.1 dev vpn0

답변1

Netfilter와 NAT는 여기에 관련되지 않으며 라우팅에 관한 것입니다.


정책 규칙이 순회됨에 따라가상 개인 넷리스트첫째, 기본 경로로 인해 이 경로 테이블은 항상 일치하여 경로 조회에 대한 답변을 제공합니다.기본게이트웨이 자체 172.16.1.1을 사용하는 경우 라우팅 테이블은 더 이상 사용되지 않습니다. 그래서 사용해서 말할 것이 없습니다랜 0더 이상은 아닙니다.

따라서 초기 경로 선택에서는랜 0:

$ ip route get to 172.16.1.2
172.16.1.2 dev lan0 src 172.16.1.1 uid 1000 
    cache 

이 경로를 선택하면 주소가 172.16.1.0/24의 172.16.1.1 부분으로 설정되므로 다음을 사용하는 것으로 전환됩니다.VPN0:

$ ip route get from 172.16.1.1 to 172.16.1.2
172.16.1.2 from 172.16.1.1 via 10.20.1.1 dev vpn0 table vpntable uid 1000 
    cache 

수정 사항은 유지할 예외를 추가하는 것입니다.랜 0이 경우.

이를 수행하는 방법에는 여러 가지가 있으며 모두 문제를 해결해야 합니다. 일반적으로 첫 번째 또는 마지막 방법(가장 쉬운)이 사용됩니다.

  • VPN 경로 테이블에 LAN 경로 지정

    ip route add 172.16.1.0/24 dev lan0 table vpntable
    
  • iif lo또는 LAN을 먼저 구문 분석하여 로컬 트래픽을 얻습니다(여기서 특별한 의미는로컬에서 시작된 트래픽, 실제로는 관련이 없습니다루오인터페이스) 및 통화 라우팅 규칙기본라우팅 테이블. 우선순위가 낮은 후에 추가되고 호출하기 전에 평가됩니다.가상 개인 넷리스트라우팅 테이블:

    ip rule add iif lo to 172.16.1.0/24 lookup main
    
  • 또는 이전 글머리 기호의 변형: VPN 규칙을 건너뛰고 바로 통화로 이동기본라우팅 테이블:

    ip rule add iif lo to 172.16.1.0/24 goto 32766
    
  • 또는 초기 라우팅 규칙의 주소 대신 인터페이스를 지정합니다(제거해야 함).

    ip rule delete from 172.16.1.0/24 lookup vpntable
    ip rule add iif lan0 lookup vpntable
    

    이렇게 하면 로컬 주소가 출처가 아니기 때문에 로컬 주소가 실행되지 않습니다.랜 0.

첫 번째 방법과 달리 마지막 방법은 172.16.1.1 원본(여전히 MASQUERADE 규칙을 통해 NAT를 수행함)에 바인딩할 때 기본적으로 게이트웨이에서 VPN 사용을 허용하지 않습니다.

관련 정보