VPN을 사용하여 모든 네트워크 트래픽을 처리하고 싶습니다.와는 별개로단일 임의 명령의 트래픽용. 이를 수행할 수 있는 방법이 있습니까?
내가 원하는 것을 대략적으로 달성하는 더 쉬운 방법이 있다는 것을 알고 있습니다. 예를 들어 내 명령이 ssh인 경우 포트 22로 나가는 연결이 VPN을 통과하지 않도록 라우팅을 설정할 수 있습니다. 하지만 여기에는 제한이 있습니다. 내 명령이 사용하는 포트를 알아야 하며, 동시에 다른 SSH 세션을 실행하면 VPN을 통과하지 않고 하나의 명령만 수행하기를 원합니다. 또한 명령이 사용하는 포트나 연결되는 주소에 관계없이 작동하기를 원합니다(지금까지 어디에서도 예제를 찾지 못했습니다).
감사해요!
답변1
다양한 경로에 대해 명령을 실행하는 한 가지 방법은 iptables 및 정책 라우팅을 사용하는 것입니다. 명령을 실행하기 위해 새 사용자(또는 그룹)를 생성할 수 있습니다.
mangle
iptables 소유자 모듈을 사용하여 테이블에 트래픽을 표시합니다. 이 예에서 트래픽에는 식별자로 태그가 지정됩니다.10사용자용노브푼:
iptables -t mangle -A OUTPUT -m owner --uid novpn -j MARK --set-mark 10
새로운 라우팅 테이블 생성(테이블100) 태그가 지정된 트래픽에 대해 기본 경로와 규칙을 설정하여 태그가 지정된 트래픽에 새 라우팅 테이블을 적용합니다.
ip route add table 100 default via *DEFAULTGW*
ip rule add fwmark 10 table 100
ip route flush cache
이제 VPN을 통해 라우팅되지 않는 명령을 실행하려면 su
등을 사용하여 새 novpn 사용자로 명령을 실행할 수 있습니다.
명령을 실행하기 위해 새 사용자를 생성하는 것이 허용되지 않는 경우 별도의 사용자를 설정할 수 있습니다.네트워크 네임스페이스명령을 실행하는 자체 경로가 있습니다.