Linux'u Ağ Geçidi olarak nasıl kullanabilirim?


16

NOT: İstemci aygıtları ( computer Bbu örnekte) ağ geçidi bilgisayarı üzerinden internet almak istiyorsa, yine de ad sunucusu çözünürlüğünü yapılandırmaları gerekir. Bu burada açıklanmamıştır (bir ağ geçidi mutlaka internete hizmet etmez).

Ağ yönlendirmesinin temellerini anlamaya çalışıyorum.
Bu yüzden LAN'ımı deniyorum (şimdilik internete ihtiyacım yok, sadece LAN iletişimi).

Ağ yapılandırma konularının oldukça karmaşık bir şey olduğunu biliyorum, ama sadece bir bilgisayarı (A diyelim) diğeri için ağ geçidi gibi davranmaya çalışıyorum (B deyin) (her ikisi de Ubuntu Linux çalıştıran).
Yönlendiriciye ulaşmak için sadece B'ye ihtiyacım var, bu sadece A için erişilebilir.

Bu durumda:

Router for computer A  -->  192.168.0.1
Computer A - eth0      -->  192.168.0.2
Computer A - eth1      -->  192.168.1.1

Computer B - eth0      -->  192.168.1.2

A Bilgisayarı yönlendiriciye ince bağlantı yapar . A ve B
bilgisayarları aralarına ince (ping, SSH ... vb.) Bağlanır . B bilgisayarı A bilgisayarı için yönlendiriciye erişemiyor .

Sadece B Bilgisayar A'yı varsayılan ağ geçidi olarak eklemenin ve A üzerinde IP Yönlendirmeyi etkinleştirmenin B'nin A için yönlendiriciye ulaşabilmesini sağlayacağını düşünüyordum:

luis@ComputerB:~$ sudo route add default gw 192.168.1.1
luis@ComputerB:~$ sudo routel

target            gateway      source        proto    scope  dev   tbl
127.0.0.0         broadcast    127.0.0.1     kernel   link   lo    local
127.0.0.0 8       local        127.0.0.1     kernel   host   lo    local
127.0.0.1         local        127.0.0.1     kernel   host   lo    local
127.255.255.255   broadcast    127.0.0.1     kernel   link   lo    local
192.168.1.0       broadcast    192.168.1.2   kernel   link   eth0  local
192.168.1.2       local        192.168.1.2   kernel   host   eth0  local
192.168.1.255     broadcast    192.168.1.2   kernel   link   eth0  local
default           192.168.1.1                                eth0
169.254.0.0 16                                        link   eth0
192.168.1.0 24                 192.168.1.2   kernel   link   eth0

Ve A Bilgisayarında (ara ağ geçidi):

root@ComputerA:~$ echo 1 > /proc/sys/net/ipv4/ip_forward

B bilgisayarı hala A bilgisayarına ping atabilir, ancak A yönlendiricisi yanıt vermez:

luis@ComputerB:~$ ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
^C

(Ping yanıtı yok)

Linux çalıştıran bir bilgisayarın başka bir bilgisayar için basit bir şekilde ağ geçidi görevi görmesini sağlamak için doğru prosedür mü?

Yanıtlar:


21

Neredeyse oradasınız, trafiğin B'ye geri döndüğünden emin olmanız gerekiyor. Şu anda B'den dış dünyaya trafik yönlendirdiniz, ancak A, B'ye geri trafik nasıl getirileceğini bilmiyor. bağlantılar geçiyor. Bunu yapmak için NAT'ı etkinleştirmek isteyeceksiniz . Yönlendirmeye izin verilen bir adım zaten var. Ardından aşağıdakileri kullanarak birkaç güvenlik duvarı kuralı eklemeniz gerekir iptables:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Bu, ağ adresi çeviri tablosunda, eth0 (harici) çıkışındaki bir paketin yönlendirmesini anladıktan sonra, iade paketlerinin bize gelmesi için iade adresi bilgilerini kendimizle değiştirin. Ayrıca, bunu yaptığımızı unutmayın (bu bağlantıyı hatırlayan bir arama tablosu gibi).

iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

Eth1'den (dahili arayüz) gelen paketlerin eth0'dan (harici arayüz) çıkmasına izin verin.

iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT

Harici arayüze gelen paketin aslında dahili olarak başlatılmış bir bağlantıya ait olup olmadığını görmek için daha önce sahip olduğumuz arama tablosunu kullanın.


Gerçekten özlü bir açıklama. Tüm kod blokları Bilgisayar A'da yürütülmeli mi?
Sopalajo de Arrierez

@SopalajodeArrierez Evet, bunların hepsi "ağ geçidi" bilgisayarında yürütülür. Sistem B'nin, başka bir makineye ulaşmak istemesi dışında, yönlendirme hakkında hiçbir şey bilmesine gerek yoktur, paketleri B'ye gönderir (varsayılan GW).
user1794469

Masaüstünde Ubuntu v14 ve Utilite Pro'da (CompuLabs'tan yerleşik bir cihaz) Ubuntu v12 üzerinde çalıştığı test edildi. Her satırın tam olarak ne yaptığını genişlettiğiniz için çok teşekkür ederiz. Çalışmayan birçok uzun-uzun-uzun açıklama araştırdım ve buldum. Umarım bu Soru-Cevap dizisi gelecekte başkaları için yararlı olabilir.
Sopalajo de Arrierez

@ user1794469 ağ geçidi arayüzü sanal olduğunda, yani bir musluk arayüzü ile aynı mıdır? buraya bakabilir misin
Koç

1

Ağ geçidi görevi gören iki Linux bilgisayarı arasında yönlendirmenin doğru çalışması için, olması gereken birkaç şey vardır:

  • Her iki ağ geçidinin de fiziksel bir bağlantıya sahip olması gerekir (veya sanal makineleri bağlıyorsanız sanal).
  • Yönlendiriciler, yönlendiricideki her iki arabirime de eklenmelidir.

    route add -net 192.168.0.0/24 gw 192.168.0.1
    route add -net 192.168.1.0/24 gw 192.168.1.1
    
  • Her iki ağ geçidindeki uzak ağ için yerel bir ağ geçidi belirtilmelidir. Bu, yerel ağdaki bilgisayarların uzak ağ için nereye paket gönderileceğini bilmesini sağlar. Ağ geçidi, uzak ağa paket gönderecek bilgisayarın IP adresi olmalıdır.

  • Ağlar arasında trafik göndermek isteyen bilgisayarların, uzak ağa giden ve bu ağdan gelen trafiği hangi ağ geçidinden yönettiğinin de farkında olması gerekir. Bu genellikle Dinamik Ana Bilgisayar Kontrol Protokolü (DHCP) ile yapılır, ancak internet için ayrı bir ağ geçidi kullanmayı düşünüyorsanız hem internete hem de diğer ağa (örn. DHCP ve diğer ağın ağ geçidi bir rota üzerinden).
  • IP yönlendirme her iki ağ geçidi için de etkin olmalıdır.
  • NAT'ın ağ geçitleri arasında çalışmasına izin vermek için IP Masquerading etkinleştirilmelidir.

    modprobe iptable_nat
    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    iptables -A FORWARD -i eth1 -j ACCEPT
    

    Masquerading için aynı arayüzü kullandığınız için bir kaynak ve hedef belirtmeniz gerekebilir:

    iptables -t nat -A POSTROUTING -i eth0 -s 192.168.0.0/24 ! -d 192.168.1.0/24 -j MASQUERADE
    

    ve diğer ağ geçidi:

    iptables -t nat -A POSTROUTING -i eth1 -s 192.168.1.0/24 ! -d 192.168.0.0/24 -j MASQUERADE   
    

    Her ağ geçidi için, yerel ağ trafiği aşağıdaki gibi uygun arabirimde kabul edilmelidir:

    iptables -A FORWARD -i eth0 -s 192.168.0.0/24 -j ACCEPT
    

    veya

    iptables -A FORWARD -i eth1 -s 192.168.1.0/24 -j ACCEPT
    

Orada sayısız bağlantılar ve benzeri sorular , karşılaştığınız sorunları çözmek için başvurulacak mümkün.

Bu özel durumda yanlış görünen şey, rota ve ağ geçidi kurulumunun her iki bilgisayarda da tamamlanmamış olması ve Ağ Adresleri Çevirisi'nin (NAT) iptables kullanılarak etkinleştirilmemesi, ağ geçitlerinin isteği diğer alt ağdaki bir bilgisayardan taşımasına izin vermesidir. onların adına.

Bunu yapmak, bağlantının bir ucundan sorumlu olduğunuz için bir internet bağlantısı kurarken de önemlidir (örneğin, bir PPPoE bağlantısı için ağ geçidi olarak bir Linux bilgisayarı kullanmak).

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.