OpenVPN 전용 네트워크 인터페이스

OpenVPN 전용 네트워크 인터페이스

특정 애플리케이션을 통해 VPN 연결을 제공하기 위해 OpenVPN 클라이언트 서비스를 사용하려고 합니다. 제 경우에는 Tor를 설정하고 Tor 연결만 VPN을 통과하도록 설정하고 싶었습니다. 이를 어떻게 달성해야 합니까? 그리고 (이 인터페이스에 많은 시간을 낭비했고 부끄럽습니다) 인터페이스를 ip link add포함한 링크를 추가해 보았습니다 . 그런데 OpenVPN에 인터페이스를 지정해서 사용하라고 했더니 무슨 이유에서인지 내 인터페이스에 유출이 되었는데, 이는 합격으로 확인되었습니다. 이것이 도움이 된다면 내 설정은 WSL2.0, Debian 12입니다.tuntapdummytun0dev tun0/etc/openvpn/client.confeth0curl https://ipconfig.me/ip

답변1

OpenVPN이 SSH 및 기타 서비스를 방해하는 것을 방지하기 위해 네트워크 네임스페이스와 veth 장치를 사용하여 비슷한 작업을 수행했습니다. 단계 요약몇년전 내 블로그 포스팅:

  1. 네임스페이스를 설정하고 다음을 입력합니다.

    NS_NAME=vpn
    ip netns add "$NS_NAME"
    ip netns exec "$SHELL"
    ln -s /proc/1/ns/net /var/run/netns/default
    

    여기서는 " "라는 새 네트워크 네임스페이스를 만들고 vpn그 안에서 셸을 시작합니다. 기본 네임스페이스에는 이름이 없을 수 있으므로 이름을 설정합니다( default).

  2. veth 쌍을 생성하고 그 중 하나를 기본 네임스페이스로 이동합니다(우리는 이미 새 네임스페이스의 셸에 있으므로 장치가 생성되었습니다).

    ip link add dev veth1 mtu 1500 type veth peer name veth2 mtu 1500
    ip link set dev veth2 netns default
    
  3. veth 인터페이스를 열고 IP를 할당합니다.

    ip addr add dev veth1 10.0.0.1/24
    ip link set veth1 up
    ip netns exec default ip link set veth2 up
    
  4. 올바른 네트워크 인터페이스(여기서는 IP가 192.168.1.2라고 가정)를 통해 외부 네트워크로 라우팅하고 다시 라우팅합니다.

    ip route add 192.168.1.2/32 dev veth1
    ip route add default via 192.168.1.2
    ip netns exec default ip route add 10.0.0.0/24 dev veth2
    
  5. iptables를 사용하여 패킷 전달을 설정합니다.

    ip netns exec default iptables -A FORWARD -i veth2 -o eth0 -j ACCEPT
    ip netns exec default iptables -A FORWARD -o veth2 -i eth0 -j ACCEPT
    ip netns exec default iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE
    
  6. 다음을 사용하여 IPv4 전달을 활성화합니다.sysctl

    sysctl -w net.ipv4.ip_forward=1
    

이 네트워크 네임스페이스에서 OpenVPN을 시작한 다음(예: openvpn여기에서 명령 자체를 실행하거나 systemd를 사용하여 이 네임스페이스에 연결) 동일한 네임스페이스에서 VPN이 필요한 모든 서비스를 실행합니다.

관련 정보