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