Bvural41 1
Bvural41
Fethi Polat 1
Fethi Polat
Mt2Hizmet 1
Mt2Hizmet
Sevdamsın 1
Sevdamsın
Nedved35 1
Nedved35
Hikaye Ekle

Cevaplanmadı Windows Server FreeBSD kurarak Metin2 Sunucusu Açma

  • Konuyu başlatan Konuyu başlatan Anonim Clown
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 4
  • Görüntüleme Görüntüleme 127

Ayyıldız2 | 2008 TR Yapısı • 1-99 Orta Emek Destan • Oto Avsız • 10 Temmuz 21:00 HEMEN TIKLA!

Merhabalar Nested Sanallaştırma özelliği olan iyi bir sanal sunucu kiraladım ve içerisinde sanallaştırma yaparak vmware kullanarak windows güvenlik duvarındanda bazı portlar açarak oyunun baglantı kısmını bir nebze çözdüm clientten oyuna giriyorum oyuna baglanıyor karakter seçimde karakteri seçince oyundan giriş ekranına geri atıyor biraz portlarla alakalı olduguna inanarak kontrol etme gereği duydum oyun tcp 30000 - 30030 arası bir takım portu bind listen ediyor ve dinliyor tcp olarka fakat udp dinlemiyor ben forwarding yaparak virtual network editörden ve windows güvenlik duvarından portları açtım sorum oyunun bind etmesini nasıl sağlayacagız yüksek ihtimal oyuna girememe nedenim udp portlarının listen olmaması diye yorumluyorum
 

En Çok Reaksiyon Alan Mesajlar

Merhabalar Nested Sanallaştırma özelliği olan iyi bir sanal sunucu kiraladım ve içerisinde sanallaştırma yaparak vmware kullanarak windows güvenlik duvarındanda bazı portlar açarak oyunun baglantı kısmını bir nebze çözdüm clientten oyuna giriyorum oyuna baglanıyor karakter seçimde karakteri seçince oyundan giriş ekranına geri atıyor biraz portlarla alakalı olduguna inanarak kontrol etme gereği duydum oyun tcp 30000 - 30030 arası bir takım portu bind listen ediyor ve dinliyor tcp olarka fakat udp dinlemiyor ben forwarding yaparak virtual network editörden ve windows güvenlik duvarından portları açtım sorum oyunun bind etmesini nasıl sağlayacagız yüksek ihtimal oyuna girememe nedenim udp portlarının listen olmaması diye yorumluyorum
Client'da CNetworkStream::Connect bu fonksiyonu bulup Connet'e breakpoint at. Karakter seçtikten sonra yeniden bağlantı kurduğunda doğru ip ve port olup olmadığını gör. Eğer doğruysa firewall kaynaklıdır. Yanlışsa config yapılandırması kaynaklıdır.
UDP portları ile alakası da yok çünkü oyun UDP kullanmıyor.
Merhabalar Nested Sanallaştırma özelliği olan iyi bir sanal sunucu kiraladım ve içerisinde sanallaştırma yaparak vmware kullanarak windows güvenlik duvarındanda bazı portlar açarak oyunun baglantı kısmını bir nebze çözdüm clientten oyuna giriyorum oyuna baglanıyor karakter seçimde karakteri seçince oyundan giriş ekranına geri atıyor biraz portlarla alakalı olduguna inanarak kontrol etme gereği duydum oyun tcp 30000 - 30030 arası bir takım portu bind listen ediyor ve dinliyor tcp olarka fakat udp dinlemiyor ben forwarding yaparak virtual network editörden ve windows güvenlik duvarından portları açtım sorum oyunun bind etmesini nasıl sağlayacagız yüksek ihtimal oyuna girememe nedenim udp portlarının listen olmaması diye yorumluyorum
Client'da CNetworkStream::Connect bu fonksiyonu bulup Connet'e breakpoint at. Karakter seçtikten sonra yeniden bağlantı kurduğunda doğru ip ve port olup olmadığını gör. Eğer doğruysa firewall kaynaklıdır. Yanlışsa config yapılandırması kaynaklıdır.
UDP portları ile alakası da yok çünkü oyun UDP kullanmıyor.
 
Client'da CNetworkStream::Connect bu fonksiyonu bulup Connet'e breakpoint at. Karakter seçtikten sonra yeniden bağlantı kurduğunda doğru ip ve port olup olmadığını gör. Eğer doğruysa firewall kaynaklıdır. Yanlışsa config yapılandırması kaynaklıdır.
UDP portları ile alakası da yok çünkü oyun UDP kullanmıyor.
Tekrardan merhabalar bir kod yazarak dediğiniz fonksiyonu bulup log çektim ve SYSERR: DEBUG: FINAL CONNECT -> addr=45.59.70.xx port=30003 account_addr=45.59.70.2xx account_port=30001 bu şekilde bir sonuç aldım daha sonra telnet kullanarak ve tcpdump kullanarak oyuna giriş yaptıgım esnada sunucunun veri alıp gönderme yapıyormu acaba kısmınıda teyit ettim ve portlar açık ayrıca telnet üzerindende baglantı kurabiliyorum çok ilginç bir durum firewall tamamen kapalı freebsd üzerinde şuanda maalesef dediklerinize nazaran edinebildiğim bilgiler bunlar oldu
 
Uzun araştırmaların ardından, sunucuya dış IP ile bağlanan oyuncuların karakter seçtikten sonra login ekranına geri dönmesi sorununa kalıcı bir çözüm buldum.


Bu sorun genellikle şunlardan kaynaklanıyor:


  • Sunucuya Loopback Adapter ile giriş yapma
  • Core’un client’a LAN IP (192.x.x.x / 10.x.x.x) göndermesi
  • Portmap ihtiyacı
  • Config dosyalarına PUBLIC_IP eklenmemesi

Aşağıdaki değişiklik ile portmap’e gerek kalmıyor, configlerde değişiklik yapmaya gerek yok ve core her zaman doğru IP’yi client’a iletiyor.


Bu çözümü ilk keşfeden kişi: rawn3cr0
(Ben kendi sunucumda test edip %100 çalıştırdım.)




✅ ÇÖZÜM: desc_client.cpp İçinde Public IP Hardcode Etme


desc_client.cpp dosyasında şu alanı bulun:



if (!bSentBoot)
{
bSentBoot = true;
TPacketGDBoot p;
p.dwItemIDRange[0] = 0;
p.dwItemIDRange[1] = 0;
memcpy(p.szIP, g_szPublicIP, 16);
DBPacket(HEADER_GD_BOOT, 0, &p, sizeof(p));
}

TEMP_BUFFER buf;
TPacketGDSetup p;
memset(&p, 0, sizeof(p));
strlcpy(p.szPublicIP, g_szPublicIP, sizeof(p.szPublicIP));


Bu kısım serverın client’a gönderdiği IP adresini belirler.
Burada g_szPublicIP bazen yanlış (LAN IP) olabildiği için karakter ekranına geri dönme hatası oluşur.




🔧 DEĞİŞTİRİLMİŞ HALİ (HARDCODE EXTERNAL IP)


Aşağıdaki gibi kendi HARİCİ IP adresinizi yazarak kodu düzenleyin:



if (!bSentBoot)
{
bSentBoot = true;
TPacketGDBoot p;
p.dwItemIDRange[0] = 0;
p.dwItemIDRange[1] = 0;
memcpy(p.szIP, "45.59.70.222", 16); // Dış IP'nizi yazın
DBPacket(HEADER_GD_BOOT, 0, &p, sizeof(p));
}

TEMP_BUFFER buf;
TPacketGDSetup p;
memset(&p, 0, sizeof(p));
strlcpy(p.szPublicIP, "45.59.70.***", sizeof(p.szPublicIP)); // Dış IP


"45.59.70.***" yerine kendi dış IP adresinizi yazın.




🎯 SONUÇ
✔ Configlere PUBLIC_IP eklemeye gerek yok
✔ Loopback adapter zorunluluğu ortadan kalkıyor
✔ Client yanlış IP almadığı için karakter seç ekranına dönüş sorunu tamamen çözülüyor
✔ Tüm ch/core ve 99 map serverları sorunsuz çalışıyor

1763338288516.png

 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst