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


15

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

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

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

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

답변:


6

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

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

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

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

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

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


iptables를 사용하여 마크를 설정 한 다음 라우팅 테이블에서 사용할 수 있습니다. MARK 및 CONNMARK 대상을 참조하십시오. iproute에서 'ip rule add fwmark X ...'실제로 iproute2
만으로도이

3
소유자 일치로 광범위한 작업을 수행 한 사람이므로 항상 원하는 결과를 얻을 수있는 것은 아닙니다. 즉, 모든 패킷에 예상대로 소유자가있는 것은 아닙니다. ICMP 및 ESP는 원래 응용 프로그램에 관계없이 커널 (또는 루트)이 소유 한 유형이며에 일치 하지 않습니다-m owner . TCP 및 UDP에서는 상당히 안정적이지만 다른 유형은 그렇게 안정적이지 않습니다. 이 100 %를 달성하기 위해 신뢰할 수있는 방법은 VM의 또는 컨테이너입니다.
바하마


1

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.