답변:
아닙니다. 정상적인 수단을 사용하지 않는 것이 좋습니다. 라우팅이 라우팅 중입니다. 라우팅은 OSI 모델에서 아래로 작동합니다. 당신이해야 할 일은 응용 프로그램 수준 (상위)에서 인식하여 사용중인 프로그램 등을 감지 할 수 있다는 것입니다. NORMAL 라우터는 응용 프로그램이나 포트 번호를 기반으로 경로를 구성 할 수 없습니다.
그래도 가능하다고 생각합니다. 라우터는 포트를 볼 수 있으므로 포트 번호로 필터링하여 트래픽을 다른 경로로 보낼 수 있습니다. 나는 이것을 할 수있는 Cisco 라우터로 얼마 전에 무언가를 읽었을 것이라고 확신합니다. 그들은 싸게 오지 않으며 많은 구성이 필요한 비즈니스 라우터이며 가정용으로 간단한 것을 원한다고 생각합니다.
요약하자면,이 기능이 필요한 라우터와 가정에서 사용하는 늪지 표준 기능이며, 기업에서도 이러한 기능을 지원하지 않습니다. Cisco와 Sonicwall의 고급 라인 만이 이러한 기능을 제공합니다.
적어도 Linux 에서이 작업을 수행 할 수 있습니다 (BSD 및 OS X에서도 생각하고 있습니다). 당신은 그렇게 할 수 있습니다 :
위의 단계를 수행하기위한 스크립트가 여기 있거나 다른 안내서가 있습니다 .
다음은 VPN을 통한 전송 라우팅 (자신의 VPN 서버 사용 )에 대한 자세한 안내서 입니다.
Windows 방화벽을 사용하여이 작업을 수행 할 수 있습니다 (Win 7 또는 Vista를 사용하는 경우). 이에 대한 안내서를 작성했습니다.
평소처럼 VPN에 연결하십시오.
네트워크 및 공유 센터를 열고 작업 표시 줄에서 인터넷 연결 아이콘을 마우스 오른쪽 버튼으로 클릭하고 "네트워크 및 공유 센터 열기"를 선택하십시오 (아래 참조).
"연결된 네트워크보기"아래에 두 개의 네트워크 (VPN 연결 및 "네트워크"라고도 함)가 ISP 연결이라고 표시되어 있습니다. VPN이 "공용 네트워크"이고 ISP 연결이 "홈 네트워크"인지 확인하십시오. 연결을 변경해야 할 경우 연결을 클릭하면 옵션 창이 나타납니다 (아래 참조).
제어판으로 이동하여 시스템 및 보안을 클릭하십시오 (아래 참조).
결과 창에서 Windows 방화벽을 클릭하십시오 (아래 참조).
Windows 방화벽 창의 왼쪽 창에서 고급 설정을 클릭하십시오 (아래 참조). 참고 : 방화벽 설정을 변경하려면 관리자로 로그인해야합니다.
고급 보안 기능을 가진 Windows 방화벽이라는 제목의 창이 나타납니다. 이 창에서 인바운드 규칙을 클릭하십시오 (아래 참조).
오른쪽 창에 새 규칙에 대한 옵션이 표시됩니다. 클릭하십시오 (아래 참조).
새 인바운드 규칙 마법사 (표시되어야 함)에서 다음을 수행하십시오.
프로그램을 선택하고 다음을 클릭하십시오.
VPN 연결을 제외한 모든 트래픽을 차단하려는 프로그램을 선택하고 다음을 클릭하십시오.
연결 차단을 선택하십시오.
틱 도메인 및 개인. 공개가 해제되어 있는지 확인하십시오.
아웃 바운드 규칙에 대해 9 단계를 반복하십시오.
GNU / Linux에서 네트워크 네임 스페이스를 사용하여이를 수행 할 수 있습니다.
별도의 네임 스페이스에서 OpenVPN과 단일 응용 프로그램을 실행하는 방법은 다음과 같습니다.
net 네트워크 네임 스페이스를 만듭니다.
ip netns add myvpn
네임 스페이스에서 루프백 인터페이스를 시작하십시오 (그렇지 않으면 많은 것들이 예상대로 작동하지 않습니다…)
ip netns exec myvpn ip addr add 127.0.0.1/8 dev lo
ip netns exec myvpn ip link set lo up
네임 스페이스에서 OpenVPN이 실제 네트워크에 액세스 할 수 있도록 가상 네트워크 인터페이스를 만들고 네임 스페이스 (vpn0)의 인터페이스를 기본 게이트웨이로 사용하도록 네임 스페이스 (vpn1)의 인터페이스를 구성합니다.
ip link add vpn0 type veth peer name vpn1
ip link set vpn0 up
ip link set vpn1 netns myvpn up
ip addr add 10.200.200.1/24 dev vpn0
ip netns exec myvpn ip addr add 10.200.200.2/24 dev vpn1
ip netns exec myvpn ip route add default via 10.200.200.1 dev vpn1
네임 스페이스에서 인터페이스에 IPv4 라우팅 및 NAT를 활성화합니다. 내 기본 인터페이스는 무선 인터페이스이므로 나가는 인터페이스의 iptables에서 wl + (wlan0, wlp3s0 등과 일치 할 수 있음)를 사용합니다. 유선 인터페이스를 사용하는 경우 en + (또는 브리지 된 인터페이스의 경우 br +)를 사용해야합니다.
iptables -A INPUT \! -i vpn0 -s 10.200.200.0/24 -j DROP
iptables -t nat -A POSTROUTING -s 10.200.200.0/24 -o wl+ -j MASQUERADE
sysctl -q net.ipv4.ip_forward=1
네임 스페이스 내에서 사용할 네임 서버 구성
mkdir -p /etc/netns/myvpn
echo 'nameserver 8.8.8.8' > /etc/netns/myvpn/resolv.conf
거의 끝났으니 이제 네임 스페이스에서 완전한 네트워크 액세스가 가능해야합니다
ip netns exec myvpn ping www.google.com
마지막으로 네임 스페이스에서 OpenVPN을 시작하십시오.
ip netns exec myvpn openvpn --config /etc/openvpn/myvpn.conf
네임 스페이스에 tun0이 설치되면 원하는 프로그램을 시작할 수 있습니다!
while ! ip netns exec myvpn ip a show dev tun0 up; do sleep .5; done
ip netns exec myvpn sudo -u $MYSELF popcorntime
또한 소스 기사에는 필요에 맞게 조정할 수있는 래퍼 스크립트가 있습니다.
Windows 에서이 작업을 수행했습니다. 나가는 네트워크 패키지를 VPN의 인터페이스에 바인딩하는 것이 좋습니다. 사람들은 이것에 대해 ForceBindIP 를 제안 하지만 이 답변 덕분에 프록시를 사용할 아이디어가 있습니다. 이 방법의 단점은 앱에서 프록시를 지원해야하거나 프록시를 사용해야한다는 것입니다 ( 여기 및 여기 참조 ). 단점은 브라우저에서 VPN 사용을 FoxyProxy 또는 유사한 애드온을 사용하는 특정 도메인으로 제한 할 수 있다는 것입니다.
SOCKS 모드에서 3proxy 를 사용 하고 외부 인터페이스를 VPN의 IP에 바인딩합니다. OpenVPN은 VPN 연결에 사용됩니다.
내 .ovpn 파일 ( client
, dev tun
)에 다음 줄을 추가했습니다.
route-nopull
route 0.0.0.0 0.0.0.0 vpn_gateway
pull-filter ignore "dhcp-option DNS "
script-security 2
up 'c:\path\to\up.cmd'
down 'c:\path\to\down.cmd'
route-nopull
서버에서 푸시 된 경로를 무시합니다. 귀하의 경우 리디렉션 게이트웨이를 주석 처리해야 할 수도 있습니다.
route
이 인터페이스에 대한 경로를 추가하려면이 줄이 없으면 앱이 바인딩되어 있어도 사용되지 않습니다.
pull-filter
그렇지 않으면 route-nopull
푸시 된 경로와 함께 삭제되는 푸시 된 DNS를 유지 합니다. 이 옵션은 OpenVPN 2.4부터 지원되며 OpenVPN 2.3 (Windows XP 용 최신 릴리스)을 사용해야 dhcp-option DNS x.x.x.x
하는 경우 하드 코드 된 IP가있는 두 줄을 대신 추가해야합니다 .
script-security 2
스크립팅을 허용합니다.
up
스크립트:
cd %~dp0
echo auth none> 3proxy-openvpn.conf
echo internal 127.0.0.1>> 3proxy-openvpn.conf
echo external %4>> 3proxy-openvpn.conf
echo socks>> 3proxy-openvpn.conf
start /b 3proxy.exe 3proxy-openvpn.conf
down
스크립트:
taskkill /f /im 3proxy.exe
따라서이 구성을 사용하여 VPN에 연결하면 3proxy.exe
프로세스가 시작되고 DNS 확인 기능이있는 로컬 호스트 제한 SOCKS5 프록시가 1080
포트에서 실행됩니다. 이제 localhost:1080
SOCKS 프록시 를 사용하도록 앱을 구성하면됩니다 .
Options error: option 'route' cannot be used in this context ([PUSH-OPTIONS])
와 Options error: option 'redirect-gateway' cannot be used in this context ([PUSH-OPTIONS])
. 덜,이 솔루션은 작동합니다. down 및 up 스크립트에 대한 아포스트로피를 건너 뛰면 이중 백 슬래시를 사용하십시오.c:\\path\\to\\script
Linux를 사용 중이고 openVPN을 사용하는 경우 VPNShift 가 아름답게 작동합니다.
가상 머신을 통해 VPN에 액세스하십시오.
호스트 시스템에서 사용하는 대신 VM에서 '선택된'애플리케이션을 사용하십시오.
PS 물론 호스트 시스템을 통해 VM에 네트워크 액세스 권한을 부여해야합니다.
나는 이것이 방금 뛰어 다니는 답이 늦다는 것을 알고 있지만 누군가와 관련이있는 경우 VPN을 통해 작업 트래픽을 실행하고 싶었지만 개인 트래픽을 통해 라우팅하지 않으려는 것과 같은 상황이있었습니다. 프록시 서버 등. 그래서 당시에는 Win7을 실행했지만 많은 시스템에서 여전히 WinXP를 실행하고있었습니다. 결국 그들은 문제를 해결하는 작업을 위해 두 번째 PC를 제공했습니다 (두 PC에 연결된 스위치 박스가 앞뒤로 움직일 수 있음).이 전에 나는 내 작업 OS로 설정 한 Virtual XP를 실행했습니다. 나는 VM에서 VPN을 사용하여 작업에 연결하여 개인 OS 트래픽에 작업 제한 및 감시가 없도록 할 것입니다.