GNU/Linux >> Belajar Linux >  >> Linux

Bisakah saya mengikat blok alamat (besar) ke antarmuka?

Solusi 1:

Linux 2.6.37 dan yang lebih baru mendukung ini melalui fitur yang disebut AnyIP. Misalnya jika saya menjalankan

ip route add local 2001:db8::/32 dev lo

pada mesin Ubuntu 11.04 ia akan menerima koneksi pada alamat apa pun di jaringan 2001:db8::/32.

Solusi 2:

Ya, Linux mendukung pengikatan blok alamat jaringan ke antarmuka jaringan... tetapi hanya pada antarmuka loopback. Jadi, Anda dapat melakukan ini:

ip addr add 192.168.5.0/24 dev lo

Dan kemudian lakukan ini:

$ nmap -sP -oG - 192.168.5.0/24

# Nmap 5.21 scan initiated Tue Dec  7 11:38:28 2010 as: nmap -sP -oG - 192.168.5.0/24 
Host: 192.168.5.0 ()    Status: Up
Host: 192.168.5.1 ()    Status: Up
Host: 192.168.5.2 ()    Status: Up
[...]
Host: 192.168.5.254 ()  Status: Up
Host: 192.168.5.255 ()  Status: Up
# Nmap done at Tue Dec  7 11:38:46 2010 -- 256 IP addresses (256 hosts up) scanned in 0.11 seconds

Dengan rute yang sesuai, ini akan melakukan apa yang Anda inginkan ... untuk alamat IPv4. Anda telah bertanya tentang IPv6, dan saya tidak memiliki pengalaman dengan IPv6, tetapi kemungkinan besar akan bekerja dengan cara yang sama.

Saya awalnya membaca tentang ini di sini (di bagian bawah artikel). Perhatikan bahwa artikel ini juga membahas cara menetapkan beberapa alamat secara eksplisit ke sebuah antarmuka menggunakan fitur CentOS/Red Hat yang belum saya ketahui sebelumnya.

Solusi 3:

Jadi saya melihat beberapa opsi di sini:

  1. gunakan skrip untuk mengikat semua alamat ke antarmuka satu per satu

  2. merutekan blok yang Anda inginkan ke satu alamat mesin Anda, lalu minta mesin itu menggunakan antarmuka pcap untuk mencegat semua lalu lintas untuk blok tersebut (seolah-olah itu adalah router) dan menanganinya.

  3. Anda dapat memainkan trik dengan aturan NAT untuk kemudian menulis ulang blok Ips yang dialihkan ke satu mesin menjadi satu IP internal pada mesin itu ... tetapi Anda masih akan mendapatkan satu IP internal per IP yang benar-benar ingin Anda bayar perhatian, yang membuat Anda kembali ke solusi 1.

Jika saya jadi Anda, saya akan menulis skrip kecil di opsi 1. Atau gunakan yang dari sini:

#!/bin/sh
if [ "$#" -ne "4" ]; then
        echo Usage:
        echo " $0 interface ip range netmask"
        echo " examples:"
        echo "  1) Assuming you want to bind the IP range 192.168.0.1..192.168.0.254 to eth0 with netmask 255.255.255.0:"
        echo "  $0 eth0 192.168.0. 1..254 255.255.255.0"
        echo "  2) Assuming you want to bind the IPv6 range 2001:41d0:1:5000::1-2001:41d0:1:5000::254 to eth0 with netmask /56"
        echo "  $0 eth0 2001:41d0:1:5000:: 1..254 56"
else
        echo "Attempting to assign the IP range $2($3) to interface $1 with netmask $4"
        for ip in $(eval echo "{$3}"); do ifconfig -v $1 add $2$ip netmask $4; done
fi

Solusi 4:

Seperti yang dikatakan orang lain, Anda dapat menggunakan mekanisme AnyIP untuk merutekan paket yang datang untuk seluruh subnet ke antarmuka localhost, tetapi perlu diingat bahwa Anda juga harus meminta router upstream untuk merutekan semua paket yang diinginkan ke mesin ini di posisi pertama. Ini dapat dilakukan hanya dengan entri tabel routing di router, atau melalui BGP. ARP tidak benar-benar sesuai karena mesin Anda harus melakukan ARP untuk setiap IP satu per satu.


Linux
  1. Cara memblokir alamat palsu lokal menggunakan firewall Linux

  2. Bisakah Tema Warna Mengikat Ke Buffer?

  3. Blokir Alamat IP dan Negara menggunakan .htaccess

  1. Bagaimana Anda dapat memblokir alamat IP melalui antarmuka cPanel

  2. cara mengikat soket mentah ke antarmuka tertentu

  3. Mengapa saya tidak bisa membuat file lebih besar dari 2 GB di Linux?

  1. Bagaimana cara memigrasikan server BIND DNS ke perangkat keras baru?

  2. Bagaimana saya bisa memesan satu blok memori dari kernel Linux?

  3. Bagaimana saya bisa me-mount sistem file dengan ukuran blok> 4KB?