Nft kullanarak iki köprülenmiş ev ağı arasında DHCP'yi engelleme


1

Yani kurulumum aşağıdaki gibidir. İki ev ağım ve başka bir yerde duran bir sunucum var. İki ev ağını tek bir büyük ağa bağlamak için sunucuda OpenVPN'i sunucu olarak çalıştırıyorum. Ev ağlarındaki tüm kullanıcılar için her şeyin şeffaf bir şekilde çalışmasını istediğim için, bu katman 2 brigde'dir. Ek olarak, OpenVPN istemcilerini çalıştıran ev ağlarındaki kutular da DHCP sunucusu çalıştırıyor, böylece kullanıcıları buna göre ayarlayabiliyorum.

Tüm ağ için 192.168.16.1/22 alt ağını kullanıyorum, ancak DHCP havuzlarını 192.168.16.1/23 ve 192.168.18.1/23 olarak ayarlıyorum. Sadece daha kolay ayırt edebilmek için. Ancak, DHCP sunucuları 255.255.255.252 ağ maskesi olarak reklam veriyor.

Ağ geçitleri sırasıyla 192.168.16.1 ve 192.168.18.1'dir. OpenVPN / DHCP kutuları 192.168.17.1 ve 192.168.19.1'dir.

OpenVPN kutularının her ikisinde de, ağ geçidine ulaştıkları yerel ağlarına bağlı bir tane ethernet adaptör eth0 vardır. OpenVPN tap0 tarafından yaratılan adaptörleri var. Bir sanal köprü adaptörünün yanı sıra br0. eth0 ve tap0, yerel ağı ve VPN'i köprülemek için br0 tarafından köleleştirildi.

Temel kurulum bir cazibe gibi çalışır. Ancak bir sorun DHCP'dir. Katman 2 köprüsü olduğu için DHCP de iletilir ve uzak ev ağı için DHCP sunucusuna, yerel ev ağındaki kullanıcılardan gelen isteklere yanıt verir.

Bunu OpenVPN sunucusunda yapmayı denedim. Bir düşünce olarak en iyi yer olması. Ancak, öyle görünüyor ki yapamam. Ne yazık ki, benim hatam mı (en muhtemel) veya başka bir şey mi bilmiyorum.

Nft kullanarak yapmaya çalışıyorum. Arch Linux'un (neredeyse) güncel bir sürümünü çalıştırıyorum (şu anda çekirdek sürümü 4.8.10).

Nft için şu anki yapılandırmam, [1] ve [2] 'den uyarlanmış, nft'de bulabileceğiniz çok az şey olduğundan, aşağıdaki gibi görünüyor.

# nft list ruleset
table bridge filter {
    chain input {
        type filter hook input priority -200; policy accept;
        iifname "tap0" udp sport bootps-bootpc counter packets 34 bytes  11569 drop
        iifname "tap0" udp dport bootps-bootpc counter packets 0 bytes 0 drop
    }

    chain forward {
        type filter hook forward priority -200; policy accept;
        iifname "tap0" udp sport bootps-bootpc counter packets 34 bytes 11569 drop
        iifname "tap0" udp dport bootps-bootpc counter packets 0 bytes 0 drop
    }

    chain output {
        type filter hook output priority -200; policy accept;
    }
}

Görebileceğiniz gibi, bazı kurallar tetiklendi. Ancak, kurallar her zaman aynı anda tetiklenir, bu nedenle sanırım uzak ev ağında gösterilen paketin yanı sıra (aynı paket büyüklüğünde ve yalnızca DHCP ile ilgili paketlerde olduğu gibi) aynı paket tarafından da sanırım.

Düzenleme: Devam eden paketler yayın gibi görünüyor. Bu nedenle, muhtemelen INPUT ve FORWARD zincirini tetikliyor gibi görünüyorlar.

Kısmen iptables kullanarak, bazen giriş tablasının ön ya da post-routing kanca kullanarak birçok farklı kural denedim, ancak hiçbir şey proberly çalışmak gibi görünüyor.

Bu yüzden sorun ne olabilir, oldukça ipucu. Veya kurulum veya düşüncemde yanlış olan ne?

[1] http://www.linksysinfo.org/index.php?threads/block-dhcp-over-bridged-vpn.68790/#post-231073

[2] http://www.dd-wrt.com/wiki/index.php/OpenVPN_-_Site-to-Site_Bridged_VPN_Between_Two_Routers


Sahip olduğunuz ana sorun, tek bir yayın etki alanında iki ayrı IP alt ağınızın olmasıdır. Ağlar arasında yönlendirilmiş bir kurulum kullanırken karşılaşacağınız tam problem nedir?
Tero Kilkanen

Eğer Are gerçekten çekirdeği çalışan 3.8.10 Eğer devlet olarak? Gerçekten çekirdeği çalıştırmıyor musunuz 4.8.10 (bu arada, mevcut olan en yeni çekirdek değil, 4.8.12'dir )? Ayrıca, hiçbiri nft kullanmadığında yukarıdaki iki referansı neden alıntıladığınızı anlamıyorum . Bunun yerine ebtables kullanmayı denediniz mi?
MariusMatutiae

@TeroKilkanen: İki ayrı alt ağda değiller. Tüm istemciler, 192.168.16.1/22 (ağ maskesi 255.255.252.0) alt ağında olacak şekilde yapılandırılmıştır. Yalnızca DHCP havuzu / 23 alt ağ ile sınırlandırılmıştır. Üzgünüz, bu belirsiz / belirsiz olabilir.
DerFlob

@MariusMatutiae: Üzgünüm, evet, 4.8.10 kullanıyorum, yanlış yazdım. Ve ben bu referansları alıntı yapıyorum, çünkü hala çok yeni olduğu için nftables kullanarak fazla bir şey bulamıyorsunuz. Ayrıca ntables'ın iptables / ebtables / arptables ifadesinin yerine geçmesi gerekiyor. Dolayısıyla ben oradan adapte dedim.
DerFlob

Aslında o kısmı anladım, ancak yorumumu yanlış yazdım. Bir yayın etki alanında tek bir DHCP sunucusu olmalıdır, aksi takdirde doğru şekilde çalışmaz. Bu nedenle, iki DHCP sunucunuz olmasını istiyorsanız, iki alt ağınız olmalı ve bunlar arasında yönlendirin.
Tero Kilkanen
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.