저는 여러 유형의 VPN을 지원하는 Ubuntu Linux 워크스테이션(Astrrill)에서 독점 VPN 클라이언트를 사용합니다. VPN 유형 중 하나는 tun0
연결 시 가상 인터페이스를 생성하는 OpenVPN입니다.
혼란스러운 점은 클라이언트에서 OpenVPN을 선택할 때 VPN을 통해 내 컴퓨터의 특정 애플리케이션의 트래픽만 라우팅하도록 선택할 수 있는 반면, 다른 애플리케이션의 트래픽은 VPN을 사용하지 않고 물리적 네트워크 컴퓨터를 통과하도록 한다는 것입니다. 상호 작용.
Linux에서 라우팅이 어떻게 작동하는지 어느 정도 알고 있다고 생각했지만 이 VPN 클라이언트가 애플리케이션에 따라 트래픽을 다르게 라우팅하는 방법을 보거나 이해할 수 없습니다.
이 애플리케이션별 라우팅을 활성화하면 클라이언트가 라우팅 테이블에 다음 항목을 추가하는 것을 볼 수 있지만 그 외에는 아무 것도 볼 수 없습니다.
198.18.32.0/21 dev tun0 proto kernel scope link metric 950
단일 IPTables 규칙이 없으므로 IPTables를 통해 수행되지 않습니다.
그것이 어떻게 수행되는지 아는 사람이 있습니까?
답변1
Linux에서 NameSpaces를 설정하면 이를 달성할 수 있습니다. 여기서는 다양한 프로세스에 대해 다양한 네트워크나 경로를 가질 수 있습니다.
예를 들어
test라는 이름의 새 네임스페이스를 만들려면 다음을 실행하세요.
ip netns add test
네트워크 인터페이스(또는 터널 인터페이스)를 할당합니다.
ip link set tun0 netns test
네트워크 인터페이스는 한 번에 하나의 네임스페이스에서만 활성화될 수 있습니다.
이 네임스페이스에서 프로그램을 실행하려면 다음을 수행하면 됩니다.
ip netns exec test <command to run against that namespace>