NAT는 내부 Wi-Fi 인터페이스에서 특정 IP를 ppp0으로 전달하고 다른 IP를 eth0으로 전달합니다.

NAT는 내부 Wi-Fi 인터페이스에서 특정 IP를 ppp0으로 전달하고 다른 IP를 eth0으로 전달합니다.

기본적으로 NAT용으로 구성된 armbian 배포판이 있습니다. 여기서 wlan0은 내부 인터페이스이고 eth0은 인터넷을 제공하는 "공용" 인터페이스입니다(이 세트는 armbian-config에서 즉시 제공됩니다).

내 장치는 wlan0을 통해 연결되고 172.24.1.114와 같은 IP를 얻습니다.

IP 10.10.10.12로 ppp0을 생성하는 원격 네트워크에 VPN을 추가했습니다.

이 정보를 통해 내가 달성하고 싶은 것은 다음과 같습니다.

  • 단 하나의 IP(예: 172.24.1.114)만 항상 ppp0으로 이동해야 합니다(즉, ppp0에서 들어오고 나가는 모든 트래픽은 ppp0으로 이동해야 원격 IP를 사용하여 컴퓨터에 연결하고 인터넷을 탐색할 수 있습니다).

  • 다른 모든 IP는 일반적으로 eth0에 액세스할 수 있습니다.

armbian-config에 구성된 NAT부터 시작하여 추가 iptables 규칙을 추가했습니다.

-A FORWARD -i wlan0 -o ppp0 -j ACCEPT (this is before -A FORWARD -i wlan0-o eth0 -j ACCEPT created by armbian-config)
-A POSTROUTING -o ppp0 -j MASQUERADE (order shouldn't impact with -A POSTROUTING -o eth0 -j MASQUERADE created by armbian-config)
-A FORWARD -i ppp0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT (just to be sure!)

이러한 추가 규칙과 armbian-config의 규칙이 가장 잘 작동하는 것 같습니다.

From 172.24.1.114 client I can see content of a remote web server, say http://10.10.10.20 ( so apparently it goes thru ppp0)
From 172.24.1.114 client I can navigate on internet, but unfortunately checking the IP I go out with (using a geo ip website), it still results the one from eth0
All other clients correctly navigate going out thru eth0

요약하자면, 이제 해당 IP에 대해 VPN을 통해 원격 네트워크에 액세스할 수 있지만 ppp0을 통해 탐색할 수는 없습니다.

마지막 노력으로 이 가이드와 같은 규칙 정책을 설정하는 방법을 찾았습니다.http://wiki.wlug.org.nz/SourceBasedRouting) 소스 IP 172.24.1.114를 기본 테이블이 아닌 사용자 정의 테이블에 지정할 수 있도록 이 새 테이블에 기본 게이트웨이 10.10.10.1 dev ppp0을 추가했습니다. 이로 인해 해당 IP에 대한 네트워크 탐색이 부족해집니다.

답변1

나는 모든 것을 알아 냈습니다. 먼저, 필수 iptables 규칙은 다음과 같습니다(이 규칙은 원격 VPN 시스템에 대한 액세스를 허용합니다).

-A FORWARD -i wlan0 -o ppp0 -j ACCEPT
-A POSTROUTING -o ppp0 -j MASQUERADE

그런 다음 어떤 IP 또는 IP 범위에 다른 경로가 있어야 하는지 표시하려면 정책 규칙이 필요합니다.

  • /etc/iproute2/rt_tables항목(ID 테이블 이름)을 열고 입력하세요.

    100   my_custom_table
    
  • ip rule add from 172.24.1.114/24 table my_custom_table(소스 IP 172.xxx를 얻기 위해 메인 테이블 외에 다른 테이블로 이동하라는 지시)

  • ip route add 172.24.1.0/24 dev wlan0 table my_custom_table(ppp0에서 반환된 데이터 패킷을 수신해야 함)

  • ip route add default via 10.10.10.1 dev ppp0 table my_custom_table(패킷을 VPN으로 라우팅하는 게이트웨이)

VPN 서버의 방화벽이 VPN IP에서 들어오는 트래픽을 허용하는지 확인하세요.

답변2

ip rule해당 소스 주소에 대해 하나를 만드는 것이 올바른 접근 방식입니다.

이러한 문제를 진단하는 것은 tcpdump유용합니다 .

VPN 클라이언트 자체가 VPN을 통해 인터넷에 액세스할 수 있나요?

  • 그렇다면 VPN 클라이언트의 주소에 NAT를 추가해야 합니다.
  • 그렇지 않은 경우 VPN 서버에 NAT를 추가하고 차단되지 않았는지 확인해야 합니다.

관련 정보