[unix] 사용자 (및 해당 앱)를 하나의 네트워크 인터페이스로 제한 할 수 있습니까?

실제로 이것을 적용하는 두 가지 시나리오가 있습니다.

  1. Multiseat Desktop : 인터넷 게이트웨이를 통한 두 개의 네트워크 연결 및 각각 대역폭 집약적 인 작업을 수행하는 두 개의 계정. 하나의 계정이 eth0 만 사용하고 두 번째 계정은 eth1 만 사용하도록 분할하고 싶습니다.

  2. 서버 : 서버에 두 개의 IP가 있고 메일 사용자가 두 번째 IP (eth0 : 1 별칭)의 전자 메일 만 보내도록하고 싶습니다.

두 번째는 해당 인터페이스를 통해 이메일 트래픽을 라우팅하기 위해 IPTabled 일 수 있습니다 (어떻게할지 모르겠습니다).하지만 첫 번째는 모든 종류의 트래픽을 처리하므로 사용자 기반이어야합니다. 사용자 기반 솔루션이 있다면 두 곳 모두에 적용 할 수 있습니다.



답변

iptables 소유자 모듈과 영리한 패킷 관리 를 사용하고 싶을 것입니다.

owner이 모듈은 로컬로 생성 된 패킷에 대해 패킷 작성자의 다양한 특성을 일치시킵니다. OUTPUT 체인에서만 유효하며, 심지어 일부 패킷 (예 : ICMP 핑 응답)에는 소유자가 없으므로 일치하지 않을 수 있습니다.

–uid-owner userid 주어진 유효 (숫자) 사용자 ID를 가진 프로세스에 의해 패킷이 작성된 경우 일치합니다.

–gid-owner groupid 주어진 유효 (숫자) 그룹 ID를 가진 프로세스에 의해 패킷이 작성된 경우 일치합니다.

–pid-owner processid 주어진 프로세스 ID를 가진 프로세스가 패킷을 생성 한 경우 일치합니다.

–sid-owner sessionid 주어진 세션 그룹의 프로세스에서 패킷을 만든 경우 일치합니다.


답변

실제 머신에서 두 개의 가상 머신을 설정하고 한 VM이 eth0을 사용하고 다른 VM이 eth1을 사용하도록 네트워크 인터페이스 브리징을 설정할 수 있습니다. 브리지 네트워킹에 대한 가상 박스 문서 섹션을 참조하십시오 .


답변

나는 그것이 첫 번째 지점에서 가능하다는 것을 확신하지 못한다. 사용자의 사용자 ID를 기반으로 라우팅 조작을 수행하려고합니다. 내가 마지막으로 확인했을 때 나는이 가능성을 보지 못했다.

두 번째로, 그것은 당신이 사용하고자하는 iptables가 아니라 iproute2 (http://lartc.org/howto/ 및 http://www.policyrouting.org/iproute2.doc.html )입니다. ifconfig / route 명령이 더 이상 사용되지 않는 것으로 대체되었습니다. iproute2를 사용하면 소스에 따라 패킷을 라우팅 할 수 있습니다. 그게 당신이 원하는 것입니다


답변