(대) 주소 블록을 인터페이스에 바인딩 할 수 있습니까?


26

ip 도구를 사용하면 여러 주소를 인터페이스에 바인딩 할 수 있습니다 (예 : http://www.linuxplanet.com/linuxplanet/tutorials/6553/1/ ). 그러나 지금은 IPv6을 기반으로 무언가를 만들려고하는데 전체 주소 블록 (예 : / 64)을 사용하여 프로그램이 범위에서 모든 주소를 선택할 수 있도록하는 것이 정말 유용합니다. 그것에 바인딩하십시오. 말할 것도없이이 범위의 모든 IP를 인터페이스에 연결하는 데는 시간이 걸립니다.

리눅스는 전체 주소 블록을 인터페이스에 바인딩하는 것을 지원합니까?


다른 배포판은 이것을 처리하는 다른 방법을 가지고 있습니다. 하나를 선택.
Ignacio Vazquez-Abrams

우분투 지금 당장 배포판에서 작동하는 솔루션이 선호됩니다.
p-static

이 튜토리얼은 블록 (/ 24) 내에 단일 주소를 바인딩합니다. / 24는 어떤 블록에 있는지 지정합니다. IPv6에서도 동일하게 작동합니다.
BillThor

크로스 디스트로는 "ip addr add"를 사용하는 스크립트를 작성하는 것입니다. 레드햇, 우분투와 수세는 ... 다른 네트워킹 스크립트가
숀 Reifschneider

1
@ChandraNakka인가 당신에게 유용?
kasperd

답변:


31

Linux 2.6.37 이상은 AnyIP 라는 기능을 통해이를 지원합니다 . 예를 들어 내가 달리면

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

Ubuntu 11.04 시스템에서는 2001 : db8 :: / 32 네트워크의 모든 주소에 대한 연결을 허용합니다.


1
ipv4를위한 AnyIP 솔루션이 있습니까?
Coaku

우분투 14.04에서 작동합니까?
Chandra Nakka

이것은 작동하는 것으로 보이며 주소 범위를 ping 할 수 있지만 실행 ip route list하거나 ip -6 route list추가 된 경로가 표시되지 않습니다. AnyIP 주소 블록을 어떻게 열거 하시겠습니까?
Colton

이것은 로컬 주소에서 작동하지만 외부 소스에서 이러한 IP를 핑하거나 액세스 할 수 없습니다. 그것을 고칠 방법이 있습니까? (lo를 eth0으로 바꾸려고했지만 아무것도 도달 할 수 없음)
BrainStone

@BrainStone 당신은 그것을 위해 ndppd를 설치하거나 공급자로부터 라우팅 된 접두사를 얻어야합니다
Arya

6

예, 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 기능을 사용하여 인터페이스에 여러 주소를 명시 적으로 할당하는 방법에 대해서도 설명합니다.


시원한! 우분투 (Lucid & Hardy)의 IPv6을 사용하여 이것을 시도했습니다. 이것이 IPv6의 킬러 기능이라고 생각합니다. 주소를 데이터베이스 객체로 매핑하거나 주소를 세션 ID로 사용할 수 있습니다.
Gerald Combs

2
아니요, lo에 주소를 추가해서는 안됩니다. 대신 경로를 추가하십시오 : ip -6 route add local <ip> dev lo.
Navin

2

그래서 여기 몇 가지 옵션이 있습니다.

  1. 스크립트를 사용하여 주소를 모두 인터페이스에 개별적으로 바인딩

  2. 원하는 블록을 머신의 단일 주소로 라우팅 한 다음 해당 머신이 pcap 인터페이스를 사용하여 해당 블록에 대한 모든 트래픽을 가로 채서 (라우터 인 것처럼) 처리하십시오.

  3. NAT 규칙을 사용하여 트릭을 수행 한 다음 한 시스템으로 라우팅 된 Ips 블록을 해당 시스템의 단일 내부 IP로 다시 쓸 수는 있지만 실제로 지불하려는 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

그러한 스크립트의 이름은 어디에 있습니까?
Skaperen

2

다른 사람들이 말했듯이 AnyIP 메커니즘을 사용하여 전체 서브넷에 도착하는 패킷을 로컬 호스트 인터페이스로 라우팅 할 수 있지만 원하는 모든 패킷을이 시스템으로 라우팅하려면 업스트림 라우터를 가져와야합니다. 첫 번째 장소. 라우터의 라우팅 테이블 항목이나 BGP를 통해 간단하게 수행 할 수 있습니다. 컴퓨터가 각 IP에 대해 개별적으로 ARP해야하는 경우 ARP는 실제로 적절하지 않습니다.


1

위에서 설명한 "Anyip"은 centos 7에서 작동하지 않았습니다. 부팅 할 때 수동으로 ipv6 주소를 작성하는 스크립트를 작성해야했습니다. 그렇게하기 위해 / etc / crontab에 다음을 추가했습니다.

@reboot root /path/to/bashscript

대략 3000 ipv6 주소를 생성하는 bash 스크립트는 다음과 같습니다.

#!/bin/bash
INETP="2a00:xxxx:xxxx:xxxx::"
PRE="64"
INTE="eth0"
IP1=/sbin/ip
echo -n "Adding IPv6 addresses..."
for i in {3..3000}
do
$IP1 -6 addr add ${INETP}$(printf '%x\n' $i)/${PRE} dev ${INTE}
done
echo "Done!"

이 방법은 약 4000 개의 주소에 도달 할 때까지만 작동합니다. 그보다 많은 주소를 구성하려고하면 작동하지 않습니다. 전체 / 96 또는 / 64를 단일 호스트에 할당하는 것이 바람직한 시나리오가 있지만 방법이 그렇게 확장되는 방법은 없습니다.
kasperd

@kasperd 위의 Gerald Combs가 CentOS 7 또는 Debian 8에 대한 작업을 "설명한"anyip 메커니즘을 만들 수있는 곳은 어디입니까?
Nicolas Guérinet

1
그렇습니다. 그러나 그 대답에서 언급 한 것보다 몇 가지 단계가 더 있습니다. 비슷한 질문에 대한 내 답변 을 참조하십시오 .
kasperd
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.