Tl; Dr
Saya memiliki contoh SQL Server (SQLSERVER01-i01) dengan alamat IP khusus dan port (162.xxx.xxx.51: 1433) pada server SQL multi-instance (setiap instance SQL Server pada Windows Server memiliki alamat IP sendiri ) yang semuanya berjalan pada satu server Windows (SQLSERVER01 / 162.xxx.xxx.50).
Saya juga punya contoh Layanan Pelaporan khusus (SQLSERVERRS01-i01) dengan alamat dan port IP sendiri (168.xxx.xxx.71: 1433), yang berjalan pada server Windows yang berbeda (SQLSERVERRS01) dengan alamat IP sendiri (168). .xxx.xxx.70).
Server Layanan Pelaporan khusus memiliki aplikasi APPL1
yang dapat dihubungi melalui http://SQLSERVERRS01-i01:80/Reports_APPL1
atau melalui http://SQLSERVERRS01:80/Reports_APPL1
.
SSRS akan mengambil kedua permintaan karena *:80
konfigurasi dalam Konfigurasi Layanan Pelaporan untuk header host.
Kami memiliki beberapa firewall di antara setiap rentang IP, yang berarti kami harus menerapkan aturan khusus untuk setiap koneksi IP-ke-IP atau IPrange-ke-IP. Namun ketika dua server terlibat, maka keamanan menentukan bahwa itu selalu harus menjadi aturan IP-ke-IP di firewall.
Pertanyaan
(berdasarkan tangkapan layar lebih jauh ke bawah)
Ketika server Layanan Pelaporan terhubung ke instance SQL Server (pada 162.xxx.xxx.51) untuk mengambil data, apakah ia akan selalu membangun koneksi dengan alamat IP yang mendasari server Windows (168.xxx.xxx.70 / disukai ) yang menjalankan SSR, atau apakah (kadang-kadang) akan menggunakan alamat IP dari contoh SQL Server Reporting Services (168.xxx.xxx.71)?
Ini relevan untuk konfigurasi aturan firewall menggunakan pendekatan IP-ke-IP. Saya juga harus menerapkan aturan yang mendefinisikan koneksi 168.xxx.xxx.71 hingga 162.xxx.xxx.51 melalui port 1433 atau 168.xxx.xxx.70 hingga 162.xxx.xxx.51 melalui port 1433.
Saat ini saya akan berlaku untuk kedua aturan firewall.
Pertanyaan Bonus
Dapatkah saya mengonfigurasi server Layanan Pelaporan untuk berkomunikasi dengan alamat IP khusus? Dalam hal ini dengan alamat 168.xxx.xxx.71.
Jawaban yang saya tidak cari
Saya tidak mencari saran tentang cara mengoptimalkan konfigurasi firewall atau bagaimana menerapkan konsep zonasi untuk jaringan kami. (Sudah dalam pipa). Selain itu saya tidak tertarik pada umpan balik yang menyarankan bahwa memiliki SQL Server dan SSR di server yang sama akan menyelesaikan masalah saya. Saya tahu itu dan dengan senang hati akan melakukannya tetapi untuk perangkat lunak pihak ketiga yang diperlukan untuk berjalan bersama dengan komponen SSR.
Berhasil
Konfigurasi yang saya miliki berfungsi jika saya menerapkan kedua aturan firewall antara instance SSRS dan SQL Server.
168.xxx.xxx.71 --> 162.xxx.xxx.51 : 1433
168.xxx.xxx.70 --> 162.xxx.xxx.51 : 1433
Saya ingin mengurangi dengan aman oleh satu aturan firewall dan memastikan bahwa semuanya akan tetap berfungsi. (Lihat tangkapan layar lebih jauh ke bawah)
Sunting: Artikel yang telah saya baca sejauh ini menyarankan saya hanya perlu aturan kedua, tetapi tidak ada jaminan.
Artikel yang sudah saya konsultasikan
Pertimbangan Keamanan untuk
artikel Basis Instalasi SQL Server .Mengkonfigurasi Windows Firewall untuk Mengizinkan SQL Server Mengakses
Artikel ini menunjuk ke semua artikel lain mengenai konfigurasi firewall untuk SQL Server.Mengkonfigurasi Windows Firewall untuk Akses Engine Basis Data
Tidak ada kata dari alamat IP yang digunakan.Mengkonfigurasi Firewall untuk Akses Server Laporan
Artikel ini cukup menarik seperti yang dicatat:Jika Anda mengakses database relasional SQL Server di komputer eksternal, atau jika database server laporan adalah turunan SQL Server eksternal, Anda harus membuka port 1433 dan 1434 di komputer eksternal.
Sumber pemilihan alamat IP pada Komputer Windows Multi-Homed
Artikel 5 & 6 diberikan kepada saya oleh James (dba.se). Mereka saat ini tampaknya menjadi jawaban yang paling tepat. Namun saya agak skeptis bahwa satu artikel menyebutkan penggunaan beberapa NIC sedangkan saya hanya memiliki satu NIC dengan beberapa IP yang ditugaskan untuk itu. Tom (dba.se) juga memberikan saran dan komentar umum.
Mengapa di sini dan bukan di dba.stackexchange.com
Awalnya saya enggan untuk memposting pertanyaan ini di serverfault.com karena sifat pertanyaan yang kompleks. Pertanyaannya memiliki kedua kecenderungan untuk menjadi spesifik SQL Server, tetapi juga untuk spesifik Windows Server. Akhirnya saya memutuskan untuk mempostingnya di sini, karena saya pikir itu adalah Windows Server IP yang menangani sesuatu (untuk kehilangan kata-kata yang lebih baik).
Jika seorang moderator berpikir bahwa saya akan mendapatkan respons yang lebih baik di dba.stackexchange.com, silakan pindahkan pertanyaan ke sana.
Penjelasan Panjang
Di lingkungan kami, kami memiliki server Windows yang menjadi tuan rumah beberapa instance SQL Server dan beberapa pengaturan IP. Kami menambahkan konfigurasi firewall yang kompleks, server SQL Server Reporting Services (SSRS) yang berdedikasi dan menghasilkan lingkungan yang terlihat sedikit seperti ini:
Pada dasarnya kita dapat memiliki satu Server Windows yang menjalankan hingga 15 (lima belas) contoh SQL Server pada masing-masing alamat IP. Hal yang sama berlaku untuk instance Layanan Pelaporan khusus.
Aturan Firewall
Rentang IP yang berbeda saat ini tidak dikonfigurasikan sebagai zona, yang berarti kita harus mengkonfigurasi setiap aturan firewall secara independen sebagai aturan IP-ke-IP atau IPrange-ke-IP. Ketika dua server terlibat, maka keamanan menentukan bahwa itu selalu harus menjadi aturan IP-ke-IP. Setiap contoh SQL Server akan memiliki seperangkat aturan sendiri untuk firewall yang terlibat dalam komunikasi, baik ini tautan server-ke-server atau klien-ke-server. Menerapkan aturan firewall saat ini dikenakan masa tunggu empat hingga enam minggu. Mengurangi jumlah aturan firewall akan mengurangi jumlah tekanan pada tim keamanan jaringan.
Konfigurasi IP SQL Server Instance
Mengkonfigurasi contoh SQL Server untuk mengambil hanya pada IP khusus dan port dilakukan dengan memodifikasi beberapa pengaturan di utilitas SQL Server Configuration Manager. Langkah pertama adalah memulai SQL Server Configuation Manager dan di bagian kiri pilih SQL Server Network Configuration | Protokol untuk InstanceName . Di sebelah kiri klik kiri Nama Protokol TCP / IP dan Aktifkan protokol. Kemudian klik kiri protokol lagi dan buka Properties for TCP / IP window.
Kemudian pastikan pengaturan berikut diatur dalam register Protokol :
Enabled : Yes
Listen All : No
Dalam register IP Adresses periksa pengaturan berikut untuk alamat IP yang dimaksud (mis. Untuk server Layanan Pelaporan dalam contoh ini adalah untuk 168.xxx.xxx.71)
Active : Yes
Enabled : Yes
IP Address : 168.xxx.xxx.71
TCP Dynamic Ports :
TCP Port : 1433
Catatan: Penting bahwa pengaturan untuk TCP Dynamic Ports kosong bukan hanya 0 (nol).
Sekarang Anda memiliki contoh SQL Server yang hanya akan mengambil koneksi database pada 168.xxx.xxx.71 menggunakan port 1433.
Ringkasan SQL Server Instance
Layanan SQL Server Browser tidak berjalan dan setiap instance SQL Server individu dikonfigurasikan untuk hanya menggunakan alamat IP sendiri pada port 1433. Diberikan instance SQL Server yang disebut GENERAL, server Windows dengan nama host SQLSERVER01 dan dua alamat IP 162.xxx .xxx.50 (host) dan 162.xxx.xxx.51 (SQL Instance) Saya akan berakhir dengan item konfigurasi berikut:
Windows Server : SQLSERVER01
Windows Server IP : 162.xxx.xxx.50
SQL Server Instance : SQLSERVER01-i01 (DNS A record)
SQL Server Instance : GENERAL (can only be used on the host itself)
SQL Server IP/Port : 162.xxx.xxx.51:1433
SQL Server tidak akan menerima permintaan untuk 162.xxx.xxx.50: 1433, karena tidak ada instance SQL Server yang dikonfigurasi untuk mendengarkan alamat IP ini di utilitas SQL Server Configuration Manager. SQL Server hanya akan mengambil permintaan untuk SQLSERVER01-i01 (pada port 1433) atau 162.xxx.xxx.51.1333.
Ringkasan Contoh Layanan Pelaporan SQL Server
Layanan Browser SQL Server tidak berjalan dan masing-masing individu SQL Server Reporting Services dikonfigurasi untuk menggunakan hanya alamat IP sendiri pada port 1433. Diberikan contoh SQL Server Reporting Services disebut GENERAL, server Windows dengan nama host SQLSERVERRS01, sebuah aplikasi pada SSR yang dinamai APPL1
dan dua alamat IP 168.xxx.xxx.70 (host) dan 168.xxx.xxx.71 (SQL Instance) Saya akan berakhir dengan item konfigurasi berikut:
Windows Server : SQLSERVERRS01
Windows Server IP : 168.xxx.xxx.70
SQL Server Instance : SQLSERVERRS01-i01 (DNS A record)
SQL Server Instance : GENERAL (can only be used on the host itself)
SQL Server IP/Port : 168.xxx.xxx.71:1433
Reporting Services : http://sqlserverrs01-i01/Reports_APPL1
http://sqlserverrs01/Reports_APPL1
SQL Server tidak akan menerima permintaan untuk 168.xxx.xxx.70: 1433, karena tidak ada instance SQL Server yang dikonfigurasi untuk mendengarkan alamat IP ini di utilitas SQL Server Configuration Manager. SQL Server hanya akan mengambil permintaan untuk SQLSERVER01-i01 (pada port 1433) atau 162.xxx.xxx.71,1433.
SSRS akan menerima permintaan untuk http: // sqlserverrs01-i01 / Reports_APPL1 atau http: // sqlserverrs01 / Reports_APPL1 karena konfigurasi *: 80 dalam Konfigurasi Layanan Pelaporan untuk konfigurasi header host.
Saya harap saya telah memberikan informasi yang cukup untuk siapa pun yang mau menghabiskan waktu menulis jawaban dan saya menantikan detail teknis dan tautan Anda.
Ditulis dengan StackEdit dan kemudian dimodifikasi secara manual agar kompatibel dengan stackexchange .
Sejarah
Sunting 1 : Rilis Awal
Sunting 2 : Diformat ulang untuk dibaca. Memindahkan penjelasan SF / DB ke bawah. Menambahkan nama host untuk Windows Server
Sunting 3 : Memperbaiki alamat IP yang salah dalam daftar aturan firewall.
Sunting 4 : mengubah kata hosting menjadi berjalan (ini adalah lingkungan yang tidak tervirtualisasi) di beberapa tempat. Menambahkan alamat IP dalam satu kalimat sekali
Edit 5 : Menambahkan daftar artikel yang telah saya konsultasikan dan rujukan dukungan.
Edit 6 : Membersihkan bagian Riwayat
sumber
Jawaban:
pengantar
Menurut berbagai dokumen yang saya temukan selama penelitian awal saya dan dokumen yang disediakan dalam tautan dan diskusi saya telah menghasilkan solusi yang solid, dapat diandalkan, dan sesuai.
RFC 3484
Perbandingan biner dilakukan lebih jauh ke bawah dan aturan yang diterapkan sesuai dengan RFC 3484 yang tampaknya juga berlaku untuk alamat IPv4.
RFC 3484 juga menyatakan tepat setelah Aturan 8 itu
Sumber pemilihan alamat IP pada Komputer Windows Multi-Homed
Sekarang tidak semua aturan dalam RFC 3484 berlaku untuk alamat IPv4. Artikel Microsoft Blog Sumber pemilihan alamat IP pada Komputer Windows Multi-Homed menjelaskan aturan mana yang berlaku.
Ada bagian kecil tepat di bawah Perilaku Windows Vista / Windows Server 2008 yang berbunyi:
Melihat saya hanya memiliki satu NIC dalam contoh SQL / SSRS bagian pertama adalah moot. Windows Server akan selalu memilih satu-satunya NIC yang tersedia.
Sejauh ini menggabungkan RFC 3484 dengan Microsoft Blog menghasilkan kedua alamat IP menjadi kandidat yang valid untuk alamat IP sumber. Penjelasannya lebih lanjut dalam jawaban.
The Cable Guy
Sebuah artikel dari Cable Guy The Cable Guy Strong dan Weak Host Models membahas lebih rinci tentang bagaimana pemilihan IP bekerja di lingkungan Pengirim dan Penerima Host yang Kuat dan di lingkungan Pengirim dan Penerima Host yang Lemah . Bacaan tambahan yang bagus, tetapi tidak menjelaskan bagaimana sumber IP dipilih. Artikel ini berkaitan dengan RFC 3484 yang sudah dikenal.
Menjelaskan hal yang tidak bisa dijelaskan
Untuk menjelaskan solusinya, pertama-tama kita harus mengonversi alamat IP yang dimaksud menjadi setara binernya. Melihat saya tidak memberikan gateway dalam pertanyaan saya, saya akan menganggap dua nilai.
Sumber Alamat IP dan Notasi Biner
Berikut adalah daftar nilai biner yang dikonversi untuk alamat IP yang terlibat.
Alamat IP Target dan Notasi Biner
Contoh 1: Gateway IP lebih rendah dari SQL / SSRS Instance IP
Dalam contoh ini saya akan menganggap bahwa alamat IP gateway lebih rendah daripada alamat IP contoh SQL Server / SSRS, yaitu 168.001.001.002.
Jika Anda membandingkan kedua alamat biner Windows Server dan SQL Server / SSRS instance, maka Anda memiliki yang berikut ini:
Contoh Hasil 1
Dalam contoh ini kedua alamat IP memiliki jumlah bit urutan tinggi yang cocok yang sama (atau awalan pencocokan terlama). Sampai sekarang proses http.sys akan menggunakan salah satu dari alamat IP untuk komunikasi keluar.
Contoh 2: Gateway IP lebih tinggi dari SQL / SSRS Instance IP
Dalam contoh ini saya akan menganggap bahwa alamat IP gateway lebih tinggi daripada alamat IP contoh SQL Server / SSRS, yaitu 168.001.001.100.
Jika Anda membandingkan kedua alamat biner Windows Server dan SQL Server / SSRS instance, maka Anda memiliki yang berikut ini:
Contoh Hasil 2
Meskipun alamat IP gateway sekarang lebih tinggi dari alamat IP server Windows dan contoh SQL / SSRS, jumlah bit urutan tinggi yang cocok (atau awalan pencocokan terpanjang) masih sama. Sampai sekarang proses http.sys akan menggunakan salah satu dari alamat IP untuk komunikasi keluar.
Ringkasan Temuan Sejauh Ini
Sejauh ini, tidak mungkin untuk mengetahui alamat IP mana proses http.sys akan digunakan untuk komunikasi keluar yang berjalan pada contoh SQL / SSRS (.71) pada server windows (.70).
"Ketika Anda telah menghilangkan yang mustahil, apa pun yang tersisa, betapapun mustahil, pasti kebenarannya" - Sherlock Holmes
Ada situasi di mana alamat IP sumber pasti dapat menunjuk / dipilih / didefinisikan dengan RFC dan pengetahuan Microsoft yang disebutkan di atas. Tetapi jika alamat IP terlalu dekat satu sama lain dan dekat gateway, yah itu semua hanya karena keberuntungan. Atau itu?
Melihat saya dalam posisi membuat aturan (firewall) dan Microsoft memiliki ...
... maka yang harus saya lakukan untuk menentukan alamat IP dari proses http.sys adalah membuat hanya satu aturan firewall dengan alamat IP yang diinginkan.
Apa yang terjadi
Manfaat
Verifikasi
Saya belum memiliki alamat IP yang dihapus dari aturan firewall, tapi saya yakin itu akan berfungsi seperti yang dirancang / didefinisikan. Ringkasan akan mengikuti.
Sejarah
Sunting 1 Posting Awal
Sunting 2 Jawaban yang dibersihkan, ditambahkan bagian Riwayat
sumber
SSRS mendukung beberapa sumber data standar serta sumber data .NET lainnya:
https://msdn.microsoft.com/en-ca/library/ms159219.aspx
Dengan asumsi Anda menggunakan klien asli SQL untuk sumber data, Anda tidak memiliki opsi untuk menentukan alamat IP sumber:
https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring(v=vs.110).aspx
Oleh karena itu masuk akal bahwa klien akan menggunakan IPADDR_ANY selama metode Bind () saat mengatur koneksi jaringan. Ini meninggalkan Windows untuk membuat keputusan.
Windows 2008 dan pemilihan alamat didasarkan pada jumlah bit pencocokan tertinggi dengan hop berikutnya yang berarti jawabannya tergantung pada gateway default Anda (atau rute spesifik apa pun yang mungkin telah Anda tetapkan).
https://blogs.technet.microsoft.com/networking/2009/04/24/source-ip-address-selection-on-a-multi-homed-windows-computer/
Saya tidak melihat penyebutan rute atau gateway dalam diagram Anda sehingga sejauh yang saya bisa dapatkan.
Semoga berhasil!
sumber