특정 NIC를 사용하도록 프로세스 구성

특정 NIC를 사용하도록 프로세스 구성

두 개의 네트워크 카드(이더넷 하나와 모바일 테더링 하나)가 있습니다. 내 이더넷 인터넷 연결은 포트 필터링되어 있어 특정 애플리케이션을 사용할 수 없습니다. 모든 앱은 모바일 테더링에서 실행되지만 데이터가 제한되어 있으므로 선택한 특정 앱에서만 해당 NIC를 사용하고 싶습니다.

따라서 질문은 다음과 같습니다. 특정 프로세스만 특정 네트워크 카드를 사용하도록 강제하는 방법은 무엇입니까?

답변1

기본적으로 프로세스를 "감옥"하여 특정 네트워크 카드에 강제로 바인딩하려고 합니다. 많은 사람들이 LD_PRELOAD를 사용하지만 LD_PRELOAD는 프로세스에서 사용하는 라우팅을 제어하지 않습니다. 첫 번째 경로를 사용합니다. 가능한 해결책 중 하나는 슈퍼유저입니다.https://superuser.com/questions/241178/how-to-use- Different-network-interfaces-for- Different-processes/241215#241215

ip netns는 이것을 할 수 있습니다.

핵심요약: 네트워크 네임스페이스를 생성하고 인터페이스를 연결한 후 "ip netns exec NAME cmd..."를 실행하세요.

배포판이 ip netns를 지원하는지 확인하세요... (Backtrack 5r3은 지원하지 않지만 Kali는 지원합니다;)

자세한 내용은:

#create netns
ip netns add myNamespace
#link iface to netns
ip link set eth0 netns myNamespace
#set ip address in namespace
ip netns exec myNamespace ifconfig eth0 192.168.0.10/24 up
#set loopback (may be needed by process run in this namespace)
ip netns exec myNamespace ifconfig lo 127.0.0.1/8 up
#set route in namespace
ip netns exec myNamespace route add default gw 192.168.0.1
#force firefox to run inside namespace (using eth0 as outgoing interface and the route)
ip netns exec myNamespace firefox

관련 정보