각 사용자에게 IP를 할당하는 방법은 무엇입니까?

각 사용자에게 IP를 할당하는 방법은 무엇입니까?

저는 Steam 홈 스트리밍을 활용하여 두 사람이 동시에 플레이할 수 있는 헤드리스 Steam 게임 서버를 구축하고 있습니다. 설정의 다중 좌석 부분은 완벽하고 작동하지만 무선으로 작동시키는 것은 상당히 번거롭습니다.

한 번에 하나의 Steam 클라이언트만 홈 스트리밍을 활성화할 수 있습니다. 이는 동일한 포트와 IP 주소를 사용했기 때문에 발생할 가능성이 높습니다. 각 사용자에게 자신의 IP 주소를 어떻게 할당합니까?

스트리밍은 홈 네트워크 내에서만 가능합니다. 머신 자체에는 이미 하나의 인터페이스에 3개의 IP가 있습니다.

답변1

다음 명령을 사용하여 프로세스에 다른 네트워크 구성을 할당할 수 있습니다.Linux 네트워크 네임스페이스. 이론적으로는 구성 가능해야 합니다.폴리아크릴아미드* 각 사용자를 별도의 네트워크 네임스페이스에 설정하는 것이 더 간단할 수 있지만 관련 애플리케이션을 자체 네임스페이스에서 실행합니다.

일반적인 설정에서는 네임스페이스를 네트워크에 연결하기 위한 Linux 브리지 인터페이스 생성을 설명할 수 있습니다. 보다 간단한 설정으로 아카이빙을 수행할 수 있습니다.IPVLAN(커널 버전 3.19 이상에 포함됨) 또는맥에버랜드장치(무선 사용자의 경우서비스 중단맥에버랜드). Linux 커널 문서에는자세한 예설정을 위해IPVLAN네트워크 네임스페이스에 있습니다.

설명서의 예를 따르십시오.

  1. 네트워크 네임스페이스 만들기NS0

    ip netns add ns0
    
  2. eth0(마스터)에 IPVLAN 슬레이브 생성

    ip link add link eth0 ipvl0 type ipvlan mode l2
    
  3. 네트워크 네임스페이스에 슬레이브 할당NS0

    ip link set dev ipvl0 netns ns0
    
  4. 네트워크 네임스페이스에서 슬레이브 장치 구성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.

  5. 다음 명령을 사용하여 네트워크 네임스페이스에서 애플리케이션을 실행합니다.ip exec

    ip netns exec ns0 <command>
    

    다른 사용자로 명령을 실행하려면 일반적인 su <user> -c -- <command>.


*편집하다:이론에서 실습까지: 각 사용자의 네트워크 네임스페이스를 변경하는 방법을 보여주기 위해 간단한 PAM 모듈을 작성했습니다. ip netns위와 같이 네트워크 네임스페이스를 구성하고 특정 사용자를 특정 네임스페이스에 매핑해야 합니다 . 이후에는 모든 사용자 프로세스가 기본 네임스페이스 대신 구성된 네임스페이스에 있게 됩니다. 코드가 관리됩니다깃허브에서. 자신의 책임하에 사용하십시오.

관련 정보