GNU/Linux >> Linux の 問題 >  >> Linux

アドレスの (大きな) ブロックをインターフェイスにバインドできますか?

解決策 1:

Linux 2.6.37 以降では、AnyIP と呼ばれる機能を介してこれをサポートしています。たとえば、私が実行した場合

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

Ubuntu 11.04 マシンでは、2001:db8::/32 ネットワーク内の任意のアドレスへの接続を受け入れます。

解決策 2:

はい、Linux はネットワーク アドレスのブロックをネットワーク インターフェイスにバインドすることをサポートしていますが、ループバック インターフェイスでのみサポートされています。だからあなたはこれを行うことができます:

ip addr add 192.168.5.0/24 dev lo

そして、これを行います:

$ 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

適切なルートが整っていれば、これはあなたが望むことを行います... IPv4アドレスの場合。 IPv6 について質問されましたが、私は IPv6 の経験はありませんが、同じように機能する可能性は十分にあります。

私はもともとこれについてここで読みました(記事の下部に向かって)。この記事では、以前は知らなかった CentOS/Red Hat の機能を使用して、インターフェイスに複数のアドレスを明示的に割り当てる方法についても説明していることに注意してください。

解決策 3:

ここにいくつかのオプションがあります:

<オール>
  • スクリプトを使用して、すべてのアドレスを個別にインターフェイスにバインドします

  • 必要なブロックをマシンの単一のアドレスにルーティングし、そのマシンに pcap インターフェースを使用させて、そのブロックのすべてのトラフィックを (ルーターのように) インターセプトして処理します。

  • おそらく、NAT ルールを使ってトリックを行い、1 つのマシンにルーティングされた IP のブロックをそのマシンの単一の内部 IP に書き換えることができます。解決策 1 に戻ります。

  • もし私があなたなら、オプション 1 の小さなスクリプトを書きます。または、次のスクリプトを使用します:

    #!/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
    

    解決策 4:

    他の人が言ったように、AnyIP メカニズムを使用して、サブネット全体の到着パケットを localhost インターフェイスにルーティングできますが、必要なすべてのパケットをこのマシンにルーティングするには、上流のルーターも取得する必要があることに注意してください。最初の場所。これは、ルーターのルーティング テーブル エントリを使用するか、BGP を介して簡単に実行できます。マシンが各 IP に対して個別に ARP を実行する必要があることを考えると、ARP は実際には適切ではありません。


    Linux
    1. Linuxファイアウォールを使用してローカルのなりすましアドレスをブロックする方法

    2. proc のみを使用してローカル ネットワーク インターフェイス アドレスを取得しますか?

    3. 「,,」を「..」にエイリアスできますか?

    1. BIND DNS サーバーを新しいハードウェアに移行する方法は?

    2. ユーザー (およびそのアプリ) を 1 つのネットワーク インターフェイスに制限できますか?

    3. Linux カーネルからメモリのブロックを予約するにはどうすればよいですか?

    1. カラーテーマはバッファにバインドできますか?

    2. .htaccessを使用してIPアドレスと国をブロックする

    3. ブロックサイズが 4KB を超えるファイルシステムをマウントするにはどうすればよいですか?