Forum
Merhaba,
Bir ping uygulaması yazdım c# üzerinden amacım monitoring etmek. Bir kaç aydır tek network üzerindeki cihazlarımızın ping durumlarını uygulama ile takip edebiliyorum ancak gelişen ihtiyaçlar doğrultusunda diğer network üzerindeki cihazlarımızında bağlantılarının kontrolünü bu şekilde takip etmek istiyoruz. Diğer network'den uygulamanın çalıştığı bilgisayarın 2. network girişine bir ağ kablosu taktım. Her iki ethernet kartınada sabit ıp tanımladım. CMD üzerinden manuel olarak kontrol ettiğimde her iki cihazada başarılı ping atabiliyorum. Ancak maalesef program sadece bir networkdakine atıp diğerine geldiğinde hata vermekte. Kabloları tek tek çıkararak denediğimde takılı olan network kablosunun bulunduğu ağdaki cihazlara uygulama üzerinden ping istekleri başarılı oluyor ancak 2 side takılı olduğunda program sadece bir networkdeki ağlara başarılı ping işlemi yapıyor.
Bu durumu aşmak farklı yöntemler denedim. Örneğin networklerdeki cihazlar kategorili yani bir networkde a türü cihazlar var ise diğerinde b türü cihazlar mevcut. b türü cihazlara ping isteği atacağı zaman diğer ethernet bağdaştırıcıyı kapattırmayı denedim ancak bu seferde İşletim sistemi üzerinde farklı problemlere yol açmakta, Ayrıca Nic Teaming ile yapmayı denedim ancak burada da değişen birşey olmadı. Her iki networkdeki cihazlara CMD üzerinden manuel ping atabilmekte olup uygulama üzerinden ilk zamanki sorun devam etti.
Uygulama C# ile yapıldığından aşağıdaki komut ile ping atmaktayım.
Ping x = new Ping();
PingReply reply = x.Send(IPAddress.Parse("192.168.1.1");
Komut ile ve diğer yöntemler konusunda sorunu çözmeme yardımcı olursanız sevinirim.
Not: İki farklı network üzerindeki switchlerde köprüleme yapmak istemiyoruz bu çözümü yok sayabiliriz.
Şimdiden teşekkürler.
Merhaba;
Neden 2 ethernet kartı kullanıyorsunuz? Ortamınızda Vlan var mı? Bu networkler nerede sonlanıyor? Firewall veya router var mı?
Network ortamınız hakkında biraz daha bilgi verebilir misiniz?
Hocam uygulamanın yüklü olduğu bilgisayarda 2 farklı ethernet kartı bu kartlara gelen kablolar 2 farklı network switch'inden gelmektedir.
2 farklı network aynı lokasyonda anladığım kadarıyla değil mi?
Network kartlarına IP verirken default gateway'i internete çıkacağınız karta yazın. Diğerine yazmayın. Sadece IP ve Subnet mask girin.
Olmazsa statik route yazmak gerekebilir diğer IP için.
CMD üzerinden aşağıdaki gibi static route yazabailirsiniz.
route add 10.1.0.0 mask 255.255.255.0 10.1.0.1 -p [IP'yi ve gateway'i kendi network'ünüze göre uyarlayın]
route delete 10.1.0.0 [Silmek için]
Aslında Yöentilebilir switchleriniz varsa networkleri farklı vlanlara alabilirsiniz. Vlan arasındaki yönlendirmeyi firewall üzerinden veya varsa Layer 3 switch üzerinden yapabilirsiniz. O zaman 2 ethernet kartı kullanmanıza gerek kalmaz.
2 farklı network aynı lokasyonda anladığım kadarıyla değil mi?
Network kartlarına IP verirken default gateway'i internete çıkacağınız karta yazın. Diğerine yazmayın. Sadece IP ve Subnet mask girin.
Olmazsa statik route yazmak gerekebilir diğer IP için.
CMD üzerinden aşağıdaki gibi static route yazabailirsiniz.
route add 10.1.0.0 mask 255.255.255.0 10.1.0.1 -p [IP'yi ve gateway'i kendi network'ünüze göre uyarlayın]
route delete 10.1.0.0 [Silmek için]Aslında Yöentilebilir switchleriniz varsa networkleri farklı vlanlara alabilirsiniz. Vlan arasındaki yönlendirmeyi firewall üzerinden veya varsa Layer 3 switch üzerinden yapabilirsiniz. O zaman 2 ethernet kartı kullanmanıza gerek kalmaz.
Hocam ben router veya switchler üzerinde işlem yapmak istemiyorum açıkcası yapmak istediğim daha çok yazılımsal çözüm sağlayabilmek. Her iki adaptörü birleştirerek windows'a tek bir adaptör gibi gösterebilsem problemin çözüleceğini düşünüyorum veya ping komutunda şu kategori cihazlar için şu network kartını kullan diyebilirsem çözeceğimi düşünüyorum.
İlginiz için çok teşekkür ederim son çare olarak dediğiniz gibi route işlemi yapacağım.
2 farklı network aynı lokasyonda anladığım kadarıyla değil mi?
Network kartlarına IP verirken default gateway'i internete çıkacağınız karta yazın. Diğerine yazmayın. Sadece IP ve Subnet mask girin.
Olmazsa statik route yazmak gerekebilir diğer IP için.
CMD üzerinden aşağıdaki gibi static route yazabailirsiniz.
route add 10.1.0.0 mask 255.255.255.0 10.1.0.1 -p [IP'yi ve gateway'i kendi network'ünüze göre uyarlayın]
route delete 10.1.0.0 [Silmek için]Aslında Yöentilebilir switchleriniz varsa networkleri farklı vlanlara alabilirsiniz. Vlan arasındaki yönlendirmeyi firewall üzerinden veya varsa Layer 3 switch üzerinden yapabilirsiniz. O zaman 2 ethernet kartı kullanmanıza gerek kalmaz.
Hocam ben router veya switchler üzerinde işlem yapmak istemiyorum açıkcası yapmak istediğim daha çok yazılımsal çözüm sağlayabilmek. Her iki adaptörü birleştirerek windows'a tek bir adaptör gibi gösterebilsem problemin çözüleceğini düşünüyorum veya ping komutunda şu kategori cihazlar için şu network kartını kullan diyebilirsem çözeceğimi düşünüyorum.
İlginiz için çok teşekkür ederim son çare olarak dediğiniz gibi route işlemi yapacağım.
merhaba bunu yapabılmenız ıcın ıkı network kartı takılı olması lazım eğer aynı anda yapacaksanız. İki lan ağını da ayrı ayrı tanımladıktan sonra aktıf network karlarını lısteleyerek ıp bloklarına gore bır for dongusu ıle bunu yapabılırsınız. bridge modda kod ile olmaya bilir. ağ birleşltirmesi yapmak doğru bir çozum olmayabılır.
Tek network kartı var ıse ip ve ağ geçitlerini değiştirmeniz gerekiyor onun içinde sizin için aradığım bir kod bloğunu deneybilirsiniz.
**** KODU BEN YAZMADIM TEST ETTİM SADECE AKTİF KARTIN DEĞİŞİMİNİ YAPIYOR BİR BAKMANIZ LAZIM
class NetworkManagement
{
public void setIP(string ip_address, string subnet_mask)
{
ManagementClass objMC =
new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection objMOC = objMC.GetInstances();
foreach (ManagementObject objMO in objMOC)
{
if ((bool)objMO["IPEnabled"])
{
ManagementBaseObject setIP;
ManagementBaseObject newIP =
objMO.GetMethodParameters("EnableStatic");
newIP["IPAddress"] = new string[] { ip_address };
newIP["SubnetMask"] = new string[] { subnet_mask };
setIP = objMO.InvokeMethod("EnableStatic", newIP, null);
}
}
}
public void setGateway(string gateway)
{
ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection objMOC = objMC.GetInstances();
foreach (ManagementObject objMO in objMOC)
{
if ((bool)objMO["IPEnabled"])
{
ManagementBaseObject setGateway;
ManagementBaseObject newGateway =
objMO.GetMethodParameters("SetGateways");
newGateway["DefaultIPGateway"] = new string[] { gateway };
newGateway["GatewayCostMetric"] = new int[] { 1 };
setGateway = objMO.InvokeMethod("SetGateways", newGateway, null);
}
}
}
public void setDNS(string NIC, string DNS)
{
ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection objMOC = objMC.GetInstances();
foreach (ManagementObject objMO in objMOC)
{
if ((bool)objMO["IPEnabled"])
{
// if you are using the System.Net.NetworkInformation.NetworkInterface
// you'll need to change this line to
// if (objMO["Caption"].ToString().Contains(NIC))
// and pass in the Description property instead of the name
if (objMO["Caption"].Equals(NIC))
{
ManagementBaseObject newDNS =
objMO.GetMethodParameters("SetDNSServerSearchOrder");
newDNS["DNSServerSearchOrder"] = DNS.Split(',');
ManagementBaseObject setDNS =
objMO.InvokeMethod("SetDNSServerSearchOrder", newDNS, null);
}
}
}
}
public void setWINS(string NIC, string priWINS, string secWINS)
{
ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection objMOC = objMC.GetInstances();
foreach (ManagementObject objMO in objMOC)
{
if ((bool)objMO["IPEnabled"])
{
if (objMO["Caption"].Equals(NIC))
{
ManagementBaseObject setWINS;
ManagementBaseObject wins =
objMO.GetMethodParameters("SetWINSServer");
wins.SetPropertyValue("WINSPrimaryServer", priWINS);
wins.SetPropertyValue("WINSSecondaryServer", secWINS);
setWINS = objMO.InvokeMethod("SetWINSServer", wins, null);
}
}
}
}
}
ProfectSoft Yazılım ve Danışmanlık Hizmetleri
LogPusher & Bifyou E-Commerce System
www.profectsoft.com
2 farklı network aynı lokasyonda anladığım kadarıyla değil mi?
Network kartlarına IP verirken default gateway'i internete çıkacağınız karta yazın. Diğerine yazmayın. Sadece IP ve Subnet mask girin.
Olmazsa statik route yazmak gerekebilir diğer IP için.
CMD üzerinden aşağıdaki gibi static route yazabailirsiniz.
route add 10.1.0.0 mask 255.255.255.0 10.1.0.1 -p [IP'yi ve gateway'i kendi network'ünüze göre uyarlayın]
route delete 10.1.0.0 [Silmek için]Aslında Yöentilebilir switchleriniz varsa networkleri farklı vlanlara alabilirsiniz. Vlan arasındaki yönlendirmeyi firewall üzerinden veya varsa Layer 3 switch üzerinden yapabilirsiniz. O zaman 2 ethernet kartı kullanmanıza gerek kalmaz.
Hocam ben router veya switchler üzerinde işlem yapmak istemiyorum açıkcası yapmak istediğim daha çok yazılımsal çözüm sağlayabilmek. Her iki adaptörü birleştirerek windows'a tek bir adaptör gibi gösterebilsem problemin çözüleceğini düşünüyorum veya ping komutunda şu kategori cihazlar için şu network kartını kullan diyebilirsem çözeceğimi düşünüyorum.
İlginiz için çok teşekkür ederim son çare olarak dediğiniz gibi route işlemi yapacağım.
Merhaba
her 2 kartı Windows'a tek network adaptesi olarak göstermenin tek yolu fiziksel olarak teke düşürmektir.
ICMP paketleri böyle çalışır, source belirtmelisiniz,
Eğer amacınız sorunun çözümünü aramak ise, gelen kabloları vlan id leri ile alacak tek network üzerinde 2 yada fazla network ulaşabileceksiniz,
Böylelikle ICMP paketlerinde ki source her seferinde değiştirmek zorunda kalmayacaksınız.
En hızlı ve doğru çözüm bu olur, yazılım tarafında sürekli source seçmek , eklemek , düzenlemek, silmek gibi aksiyonlar ile uğraşmanız gerekecektir.
Kolay gelsin.
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************