동일한 라우터에있는 OpenVPN 서버 및 클라이언트에 대한 정책 라우팅?

ndvour

문제

하는 OpenVPN 서버 인스턴스 ( tun, udp, 포트 1194) 또한 OpenVPN을 클라이언트 인스턴스 (실행하는 리눅스 기반의 라우터 설정 tun, udp포트 1197에 VPN 제공 업체에 연결을). 클라이언트와 서버 인스턴스 모두 개별적으로 잘 작동합니다 . 그러나 VPN 클라이언트 인스턴스가 활성화 된 경우 클라이언트는 VPN 서버에 연결할 수 없습니다.

VPN 클라이언트 인스턴스가 main라우팅 테이블을 수정 하여 라우터 OUTPUT( FORWARD)와 라우터 ( )를 통한 모든 트래픽 이 VPN 공급자로 라우팅 되기 때문에 이런 일이 발생 한다고 확신합니다 . 이것은 원하는 기본 동작이지만 인터넷에서 시작되는 연결에는 해당되지 않습니다.

iptables및 / 또는을 사용 ip하여 인터넷에서 시작된 모든 (또는 최소한 VPN) 연결이 표준 기본 게이트웨이 ( 192.168.1.1) 를 통해 라우팅되도록 라우팅 정책을 어떻게 설정할 수 있습니까?

설정

LINUX ROUTER
-----------------------------------------
| LAN if:        br-lan, 192.168.2.1/24 |
| VPN client if: tun0,   10.63.10.6/32  |
| VPN server if: tun1,   10.255.0.1/24  |
| DMZ if:        eth0,   192.168.1.2/24 |
-----------------------------------------
               |
GATEWAY ROUTER |
--------------------------
| DMZ if: 192.168.1.1/24 |
| WAN if: x.x.x.x/x      |
--------------------------
               |
INTERNET       |     VPN CLIENT OF LINUX ROUTER (public IP: y.y.y.y/y)
-----------------    --------------------------------------
|               |----| VPN client if: tun1, 10.255.0.6/24 |
-----------------    --------------------------------------
               |
               |
VPN PROVIDER OF LINUX ROUTER
--------------------------------    
| VPN server if: 10.63.10.1/32 |
--------------------------------

보시다시피 우리는 여기서 이중 NAT 상황에 있습니다. VPN 클라이언트 인스턴스가 비활성화되었을 때 클라이언트 연결할 있기 때문에 불편할 수 있지만 문제는 아닙니다 .

VPN 클라이언트 및 서버 인스턴스를 활성화하면 다음과 같이 main라우팅 테이블 됩니다 ip route list table main.

0.0.0.0/1 via 10.63.10.5 dev tun0   #added by VPN client instance
default via 192.168.1.1 dev eth0  proto static 
10.63.10.1 via 10.63.10.5 dev tun0   #added by VPN client instance
10.63.10.5 dev tun0  proto kernel  scope link  src 10.63.10.6   #added by VPN client instance
10.255.0.0/24 via 10.255.0.2 dev tun1 
10.255.0.2 dev tun1  proto kernel  scope link  src 10.255.0.1 
128.0.0.0/1 via 10.63.10.5 dev tun0   #added by VPN client instance
178.162.199.211 via 192.168.1.1 dev eth0   #added by VPN client instance
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.2 
192.168.2.0/24 dev br-lan  proto kernel  scope link  src 192.168.2.1 

다음은 다음과 같은 IP 규칙입니다 ip rule list.

0:  from all lookup 128   #a non-existent table
1:  from all lookup local 
32766:  from all lookup main 
32767:  from all lookup default   #empty table

시도

우선 VPN 클라이언트 인스턴스 수정없이 테이블 의 정확한 사본 인 no_vpn_provider라우팅 테이블 ( echo "2 no_vpn_provider" >> /etc/iproute2/rt_tables)을 구축했습니다 main. ip route list table no_vpn_provider

default via 192.168.1.1 dev eth0  proto static 
10.255.0.0/24 via 10.255.0.2 dev tun1 
10.255.0.2 dev tun1  proto kernel  scope link  src 10.255.0.1 
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.2 
192.168.2.0/24 dev br-lan  proto kernel  scope link  src 192.168.2.1

1) 이 간단한 ip규칙을 시도했습니다

ip rule add from 192.168.1.2 table no_vpn_provider priority 2
ip rule add from 10.255.0.1 table no_vpn_provider priority 3

여기서 192.168.1.2및는 10.255.0.1외부 인터페이스의 IP 주소이다 eth0및 VPN 서버 인터페이스의 tun1각각.

나는 또한 시도 from all iif eth0하고 from all iif tun1대신 from 192.168.1.2하고 from 10.255.0.1.

2) 인터페이스에 대한 0x1새로운 연결 ( conntrack모듈이 설치됨)으로 마킹을 시도 eth0하고tun1

iptables -t mangle -A PREROUTING -m conntrack --ctstate NEW -i eth0 -j CONNMARK --set-mark 0x1
iptables -t mangle -A PREROUTING -m conntrack --ctstate NEW -i tun1 -j CONNMARK --set-mark 0x1

표시된 연결에 새 라우팅 테이블을 사용하도록이 규칙을 추가합니다.

ip rule add fwmark 0x1 table no_vpn_provider priority 2

3) VPN 서버 포트에서 나가는 패킷표시해 보았습니다.1194

iptables -t mangle -A OUTPUT -p udp --sport 1194 -j MARK --set-mark 0x1
iptables -t mangle -A OUTPUT -p tcp --sport 1194 -j MARK --set-mark 0x1   # just in case

동일한 규칙을 사용하여

ip rule add fwmark 0x1 table no_vpn_provider priority 2

나는 또한 2)와 3)을 다른 표시로 시도하고 ( -I)를 추가하는 대신 ( ) 를 삽입했습니다 -A. 내 방화벽이 전혀 표시하지 않는 것으로 의심됩니다.

iptables -t mangle -A FORWARD -s 192.168.2.0/24 -j MARK --set-mark 0x1
ip rule add fwmark 0x1 table no_vpn_provider priority 2

그러나 예상대로 내 LAN의 패킷이 VPN 공급자에게 전달되지 않았습니다.

4) 지금까지 작동 하는 유일한 것은 이 추악한 규칙입니다.

ip rule add from all to y.y.y.y/y table no_vpn_provider priority 2

여기서 yyyy / y는 연결을 시도하는 클라이언트의 공용 IP 주소입니다. 클라이언트가 항상 동일한 네트워크에서 연결되지 않기 때문에 이것은 물론 끔찍한 솔루션입니다.

ndvour

IP 주소가있는 인터페이스에서 보낸 모든 패킷 192.168.1.2이 사용자 지정 라우팅 테이블을 no_vpn_provider사용하도록하려면 다음을 사용하면됩니다.

ip rule add from 192.168.1.2 table no_vpn_provider priority 2

내가 시도한 것처럼 1). 문제는 기본적으로 OpenVPN 서버가 특정 IP 주소에 바인딩되지 않으므로 위의 규칙이 적용되지 않는다는 것입니다 ( https://serverfault.com/a/228258 ).

OpenVPN 서버를 IP 주소에 바인딩하려면 192.168.1.2이 줄을 구성 파일에 추가하기 만하면됩니다.

local 192.168.1.2

참고 를 사용하여 규칙과 사용자 지정 라우팅 테이블을 생성 ip하면 라우터를 재부팅 할 때마다 삭제됩니다. openvpn구성 에 따라 다시 시작할 때마다 사용자 지정 라우팅 테이블이 수정 될 수도 있습니다 openvpn. 필요할 때마다 규칙 및 사용자 지정 라우팅 테이블을 다시 만드는 스크립트를 작성할 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

동일한 라우터에있는 OpenVPN 서버 및 클라이언트에 대한 정책 라우팅?

분류에서Dev

클라이언트가 OpenVPN 클라우드에 로그인하면 네트워크 인터페이스가 내 사용자 지정 서브넷 IP 범위에 대한 트래픽을 라우팅하는 것을 어떻게 알 수 있습니까?

분류에서Dev

MacOS X 클라이언트 및 로컬 및 원격 네트워크의 동일한 서브넷이있는 OpenVPN

분류에서Dev

Blazor에서 클라이언트와 서버에 동일한 권한 부여 정책 사용

분류에서Dev

내 OpenVPN 클라이언트가 OpenVPN 서버와 동일한 LAN에있는 컴퓨터에 액세스 할 수없는 이유는 무엇입니까?

분류에서Dev

동일한 컴퓨터의 OpenVPN 클라이언트 및 서버-클라이언트가 연결되어있을 때 서버에서 연결을 허용하지 않습니다.

분류에서Dev

Linux IPv6 : 라우터 알림에서 학습 한 기본 게이트웨이에 대한 정책 라우팅 테이블 지정?

분류에서Dev

우분투의 Openvpn 서버 및 Windows의 클라이언트

분류에서Dev

우분투의 Openvpn 서버 및 Windows의 클라이언트

분류에서Dev

16.04 서버에서 OpenVPN 클라이언트를위한 올바른 systemd 방법?

분류에서Dev

Aerospike Java 클라이언트에 대한 읽기 정책

분류에서Dev

Openvpn 터널을 통해 특정 클라이언트 라우팅

분류에서Dev

동일한 인터페이스에서 수신 및 발신 라우팅

분류에서Dev

Azure 클라우드 서비스에서 내 API 및 내 웹 클라이언트에 대한 SSL을 설정하려면 어떻게하나요?

분류에서Dev

서버와 클라이언트가 동일한 장치 및 앱에 대해 다른 GCM 등록 ID를 얻음

분류에서Dev

특정 IP 범위에 대해 OpenVPN에서 클라이언트와 클라이언트 간 통신 허용

분류에서Dev

두 장치 모두 동일한 포트에서 수신 대기하는 프로그램이있는 경우 라우터는 데이터를 라우팅 할 장치를 어떻게 결정합니까?

분류에서Dev

Mac OS X에서 선택한 서브넷에 대한 CISCO VPN 클라이언트 라우팅 비활성화

분류에서Dev

동일한 URL을 사용하여 서버 측 (다른 컨테이너) 및 클라이언트 측 (브라우저)에서 Docker 컨테이너 참조

분류에서Dev

Win7에서 관리자 권한이없는 OpenVPN 클라이언트

분류에서Dev

JWT (서버 및 클라이언트 측)에 대한 몇 가지 기본 질문

분류에서Dev

2 개의 동일한 서브넷을 사용할 때 Openvpn 클라이언트가 openvpn 서버 측 LAN에 액세스 할 수 없음

분류에서Dev

OpenVPN 서버에 인터넷이있는 동안 OpenVPN 서버를 다른 VPN에 연결할 때 OpenVPN 클라이언트 인터넷이 끊김

분류에서Dev

서버 측에 대한 클라이언트 측 데이터

분류에서Dev

LoadBalancer를 가리키는 Route 53에 대한 다중 라우팅 정책

분류에서Dev

openvpn 라우팅

분류에서Dev

Azure에서 SAS, 정책 및 CORS를 설정하는 Java 클라이언트

분류에서Dev

브라우저와 서버에 대한 socket.io 클라이언트 동작의 차이점

분류에서Dev

Cloudinary 클라이언트 측 CORS 정책에 대한 Axios 요청 오류

Related 관련 기사

  1. 1

    동일한 라우터에있는 OpenVPN 서버 및 클라이언트에 대한 정책 라우팅?

  2. 2

    클라이언트가 OpenVPN 클라우드에 로그인하면 네트워크 인터페이스가 내 사용자 지정 서브넷 IP 범위에 대한 트래픽을 라우팅하는 것을 어떻게 알 수 있습니까?

  3. 3

    MacOS X 클라이언트 및 로컬 및 원격 네트워크의 동일한 서브넷이있는 OpenVPN

  4. 4

    Blazor에서 클라이언트와 서버에 동일한 권한 부여 정책 사용

  5. 5

    내 OpenVPN 클라이언트가 OpenVPN 서버와 동일한 LAN에있는 컴퓨터에 액세스 할 수없는 이유는 무엇입니까?

  6. 6

    동일한 컴퓨터의 OpenVPN 클라이언트 및 서버-클라이언트가 연결되어있을 때 서버에서 연결을 허용하지 않습니다.

  7. 7

    Linux IPv6 : 라우터 알림에서 학습 한 기본 게이트웨이에 대한 정책 라우팅 테이블 지정?

  8. 8

    우분투의 Openvpn 서버 및 Windows의 클라이언트

  9. 9

    우분투의 Openvpn 서버 및 Windows의 클라이언트

  10. 10

    16.04 서버에서 OpenVPN 클라이언트를위한 올바른 systemd 방법?

  11. 11

    Aerospike Java 클라이언트에 대한 읽기 정책

  12. 12

    Openvpn 터널을 통해 특정 클라이언트 라우팅

  13. 13

    동일한 인터페이스에서 수신 및 발신 라우팅

  14. 14

    Azure 클라우드 서비스에서 내 API 및 내 웹 클라이언트에 대한 SSL을 설정하려면 어떻게하나요?

  15. 15

    서버와 클라이언트가 동일한 장치 및 앱에 대해 다른 GCM 등록 ID를 얻음

  16. 16

    특정 IP 범위에 대해 OpenVPN에서 클라이언트와 클라이언트 간 통신 허용

  17. 17

    두 장치 모두 동일한 포트에서 수신 대기하는 프로그램이있는 경우 라우터는 데이터를 라우팅 할 장치를 어떻게 결정합니까?

  18. 18

    Mac OS X에서 선택한 서브넷에 대한 CISCO VPN 클라이언트 라우팅 비활성화

  19. 19

    동일한 URL을 사용하여 서버 측 (다른 컨테이너) 및 클라이언트 측 (브라우저)에서 Docker 컨테이너 참조

  20. 20

    Win7에서 관리자 권한이없는 OpenVPN 클라이언트

  21. 21

    JWT (서버 및 클라이언트 측)에 대한 몇 가지 기본 질문

  22. 22

    2 개의 동일한 서브넷을 사용할 때 Openvpn 클라이언트가 openvpn 서버 측 LAN에 액세스 할 수 없음

  23. 23

    OpenVPN 서버에 인터넷이있는 동안 OpenVPN 서버를 다른 VPN에 연결할 때 OpenVPN 클라이언트 인터넷이 끊김

  24. 24

    서버 측에 대한 클라이언트 측 데이터

  25. 25

    LoadBalancer를 가리키는 Route 53에 대한 다중 라우팅 정책

  26. 26

    openvpn 라우팅

  27. 27

    Azure에서 SAS, 정책 및 CORS를 설정하는 Java 클라이언트

  28. 28

    브라우저와 서버에 대한 socket.io 클라이언트 동작의 차이점

  29. 29

    Cloudinary 클라이언트 측 CORS 정책에 대한 Axios 요청 오류

뜨겁다태그

보관