Kullanıcı başına nasıl bir IP atayabilirsiniz?


11

İki kişinin aynı anda oynamasına izin vermek için ev içi Steam akışını kullanan başsız bir Steam oyun sunucusu inşa ediyorum. Kurulumun çok koltuklu kısmı yapılır ve işlevseldir, ancak kablosuz çalışmasını sağlamak oldukça zordur.

Bir seferde yalnızca bir Steam istemcisi evde akış gerçekleştirebilir. Bunun nedeni büyük olasılıkla aynı bağlantı noktalarının ve IP adresinin kullanılmasıdır. Her kullanıcıya kendi IP adresini nasıl atayabilirim?

Akış yalnızca ev ağından yapılır. Makinenin zaten tek bir arayüzde 3 IP'si var.

Yanıtlar:


21

Linux ağ ad alanlarını kullanarak bir işleme farklı ağ yapılandırması atayabilirsiniz . Teorik olarak, PAM * 'ı her kullanıcıyı kendi ayrı ağ ad alanında ayarlamak üzere yapılandırmak mümkün olmalıdır , ancak söz konusu uygulamayı kendi ad alanında başlatmak muhtemelen daha basittir.

Yaygın bir kurulum, ad alanlarını ağa bağlamak için bir Linux köprü arabirimi oluşturmayı açıklayabilir. Biraz daha basit kurulum ipvlan (çekirdek sürüm 3.19 ve üstü) veya macvlan cihazı (kablosuz için macvlan kullanamazsınız ) kullanılarak arşivlenebilir . Linux çekirdek belgelerinde, ağ ad alanında ipvlan kurulumu için ayrıntılı bir örnek bulunmaktadır .

Belgelerdeki örneği takip ederek:

  1. Ağ ad alanı oluşturma ns0

    ip netns add ns0
    
  2. Eth0'da ipvlan köle oluşturun (ana cihaz)

    ip link add link eth0 ipvl0 type ipvlan mode l2
    
  3. Ns0 ağ ad alanına köle atama

    ip link set dev ipvl0 netns ns0
    
  4. Ns0 ağ ad alanında bağımlı cihazı yapılandırın

    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
    

    Ev sahibi ve yönlendirici adresleri sağlayın $IPADDRve $ROUTER.

  5. Uygulamanızı kullanarak ağ ad alanında çalıştırın ip exec

    ip netns exec ns0 <command>
    

    Komutu farklı kullanıcı olarak çalıştırmak için, normal olanı kullanın su <user> -c -- <command>.


* DÜZENLEME: Teoriden pratiğe: Kullanıcı başına ağ ad alanının nasıl değiştirileceğini göstermek için basit bir PAM modülü yazdım. ip netnsYukarıdaki gibi bir ağ ad alanı yapılandırmanız ve belirli kullanıcıları belirli bir ad alanıyla eşlemeniz gerekir . Daha sonra tüm kullanıcı işlemleri varsayılan yerine kendi yapılandırılmış ad alanında olacaktır. Kod github'da barındırılmaktadır . Kendi tehlikede kullanın.


üzerinde ikinci komut benim için çalışmıyor ubuntu 14.04Sadece alıyorum: Garbage instead of arguments "mode ...". Try "ip link help".
Sim

1
Cevabı çekirdek sürümü ile güncelledim, Ubuntu 14.04 yeterince yeni çekirdek sürümünü içermiyor gibi görünüyor. Kablosuz kullanırken ayrı IP adresleri yapılandırmanıza izin veren bir geçici çözüm düşünemiyorum. Ethernet kullanıyorsanız, komut 3'teki ipvlan'ı macvlan ile değiştirebilir ve örneğin geri kalanını takip edebilirsiniz.
sebasth

2. komutta ne demek istiyorsun? Değişkenler $IPADDRve $ROUTERbenim tarafımdan sağlanmalı mı yoksa önceden ayarlanmış mı?
Sim

1
Gerçekten komut 2 . Kendi ağ yapılandırmanızı sağlamanız gerekir.
sebasth

2
@Sim iyi yakaladım, olmadı. Yanıt düzeltildi, ad alanının örneğin diğer kısımlarındaki gibi exec anahtar sözcüğünden sonra belirtilmesi gerekiyor.
sebasth
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.