Linux 네트워크 네임 스페이스를 사용하여 프로세스에 다른 네트워크 구성을 할당 할 수 있습니다 . 이론적으로 각 사용자를 별도의 네트워크 네임 스페이스에 설정 하도록 PAM * 을 구성 할 수 있어야 하지만, 해당 네임 스페이스에서 해당 응용 프로그램을 시작하는 것이 더 간단합니다.
공통 설정은 네임 스페이스를 네트워크에 연결하기위한 Linux 브릿지 인터페이스 작성을 설명 할 수 있습니다. ipvlan (커널 버전 3.19 이상에 포함) 또는 macvlan 장치 (무선의 경우 macvlan을 사용할 수 없음)를 사용 하여 좀 더 간단한 설정을 보관할 수 있습니다 . Linux 커널 설명서에는 네트워크 네임 스페이스에서 ipvlan 을 설정 하는 자세한 예가 있습니다.
설명서의 예제를 따르면 :
네트워크 네임 스페이스 ns0 만들기
ip netns add ns0
eth0에 ipvlan 슬레이브 생성 (마스터 장치)
ip link add link eth0 ipvl0 type ipvlan mode l2
네트워크 네임 스페이스 ns0에 슬레이브 할당
ip link set dev ipvl0 netns ns0
네트워크 네임 스페이스 ns0 에서 슬레이브 장치 구성
ip netns exec ns0 ip link set dev ipvl0 up
ip netns exec ns0 ip link set dev lo up
ip netns exec ns0 ip -4 addr add 127.0.0.1 dev lo
ip netns exec ns0 ip -4 addr add $IPADDR dev ipvl0
ip netns exec ns0 ip -4 route add default via $ROUTER dev ipvl0
호스트와의 라우터 주소 제공 $IPADDR
등을 $ROUTER
.
다음을 사용하여 네트워크 네임 스페이스에서 애플리케이션을 실행하십시오. ip exec
ip netns exec ns0 <command>
다른 사용자로 명령을 실행하려면 평소를 사용하십시오 su <user> -c -- <command>
.
* 편집 : 이론에서 실습까지 : 사용자마다 네트워크 네임 스페이스를 변경하는 방법을 보여주기 위해 간단한 PAM 모듈을 작성했습니다. ip netns
위와 같이 네트워크 이름을 구성하고 특정 사용자를 특정 네임 스페이스에 매핑해야합니다. 이후 모든 사용자 프로세스는 기본 네임 스페이스 대신 구성된 네임 스페이스에있게됩니다. 코드는 github에서 호스팅 됩니다 . 자신의 위험에 따라 사용하십시오.
ubuntu 14.04
나에게만 효과가 없습니다Garbage instead of arguments "mode ...". Try "ip link help"
.