대규모 환경에서 새로운 VLAN을 쉽게 배포


20

사람들은 네트워크의 모든 스위치 (또는 장치의 하위 집합)에 VLAN을 추가해야하는 필요성을 어떻게 처리합니까? 현재 주당 약 6 개의 새로운 VLAN을 추가하고 있으며 네트워크가 성장함에 따라 매우 번거롭고 위험한 작업이되고 있습니다.

답변:


17

다음은 Perl에서 장치 목록 (tellist.txt라는 파일의 각 줄에 하나씩)을 텔넷으로 연결하고 일부 명령을 구성하기위한 기본 스크립트 템플릿입니다. 정확히 당신이하고있는 일에 따라 좋은 시작을 제공해야합니다.

  use Net::Telnet::Cisco;

    # read in a list of devices
    my @devicelist;
    open(DATA, "<devicelist.txt") || die "Can't open file!";
    while (<DATA>) {
            chomp;
            push( @devicelist, $_);
    }

    # loop through the devices
    foreach $hostname (@devicelist)
    {
            # telnet to device
            my $cs = Net::Telnet::Cisco->new(Host => $hostname);

            # login, go enable, disable paging, go into config mode
            $cs->login( "username", "password" );
            $cs->enable( "enable_password" );
            $cs->cmd( 'terminal length 0' );
            $cs->cmd( 'config t' );

            # configure the device
            $cs->cmd( 'vlan 100, 200, 300' );
            $cs->cmd( 'interface Ethernet0' );
            $cs->cmd( ' switchport access vlan 100' );

            # exit config mode and write the config
            $cs->cmd( 'end' );
            $cs->cmd( 'wr mem' );

            # close the connection
            $cs->close;
    }

Net :: Telnet :: Cisco에 대한 자세한 내용은 다음과 같습니다 .


4
여기서 나의 유일한주의 사항은 매우 명백한 것입니다. 이것은 telnet을 사용하며 네트워크를 통해 암호를 일반 텍스트로 보냅니다. SSH를 사용하는 것이 좋습니다.
bigmstone

12

몇 가지 옵션이 있다고 말할 것입니다.

  1. 수동으로. 대부분의 시간이 걸립니다. 가장 안전한가요? 구성을 수행하는 사람에 따라 다릅니다.
  2. Kiwi Cattools 또는 Rancid 등과 같은 도구를 사용하십시오. 훨씬 쉬우나 VLAN이 이미 존재하는지 또는 이름 지정 구조를 망칠 수 있는지 확인하려면 일종의 논리가 필요합니다. 큰 거래가 아닐까요?
  3. 그것을 스크립트! Perl, Python, Ruby 또는 경험이있는 언어를 사용하십시오. 빌드하는 데 시간이 걸리지 만 일단 완료되면 다른 구성 작업에 스크립트를 재사용 할 수 있습니다. 커스터마이징이 가능하지만 코딩이 편한지에 따라 다릅니다.
  4. SNMP를 사용하십시오. 이것을 시도하지 마십시오. 장치에 RW가 필요하고 네트워크 장치에서 RW를 실행하는 것을 좋아하지 않습니다.

스크립트로 작성된 예제가 있습니까? 또한 Rancid는 수정이 아닌 읽기 전용이라고 생각 했습니까?
SimonJGreen

2
필자는 예상대로 여러 장치에 대해 명령을 실행하기 위해 Python으로 도구를 잠시 빌드했습니다. 두 개의 CSV 파일을 인수로 사용합니다. 하나는 명령, 하나는 호스트입니다. matthewstone.net/2013/03/easyexpect 에서 찾을 수 있습니다 . ZeroCLI라는 EasyExpect의 자식 인 훨씬 더 큰 도구도 작업하고 있습니다. 아직 완료되지 않았지만 완전성을 위해 여기에 배치하십시오. github.com/mstone7699/ZeroCLI
bigmstone

1
Rancid는 검색 용이지만 clogin과 함께 제공되며이를 사용하여 장치에 대한 로그인을 자동화 할 수 있습니다. 또한 입력해야하는 명령을 넣을 수있는 파일을 인수로 사용합니다.
Daniel Dib


11

지금 당면한 과제는 혼합 환경에 들어가는 것입니다. 내가 Cisco를 가정하고 주니퍼로 나아가고 있다고 언급합니까? 순수한 Cisco 환경 에서 암호가있는 VTP v3 은 4k 이상의 VLAN을 지원하고 지원하는 방법입니다. Juniper 세계에서 동등한 것은 GVRP 입니다.

Shane Madden, SolarWinds , HP OpenView 등에서 언급 한 Puppet과 같은 중앙 관리 방식을 사용할 수 있지만 여전히 관리 할 스크립트가 두 개 있습니다.

한 벤더에서 다른 벤더로 전환 할 때 가능한 한 간단하게 ( KISS ) 유지하려고합니다 . 적절한 하드웨어에서 VTP와 GVRP를 사용하는 것이 아마도 다른 방법이나 다른 새로운 것을 관리하기위한 잠재적 비용을 추가하지 않는 방법 일 것입니다.


7

VTP가 귀하의 답변 일 수 있습니다. 다른 "자동화 된"도구와 마찬가지로 위험도 있지만 적절한 계획으로 완화 할 수 있습니다. 또한 작동 방식을 이해하거나 실수로 자동화 된 도구와 마찬가지로 자신 만의 문제를 만들 수 있도록 읽어야합니다.

VTP 버전 3을 사용하는 것이 좋습니다. 잠재적 인 일부 문제를 방지하고 추가 이점을 제공 할 수 있기 때문입니다.

선택한 검색 엔진에서 "vtp 버전 3 구성"을 검색하여 수백 개의 문서를 쉽게 찾을 수 있습니다.


불행히도 우리는 얼마 전에 VTP에서 200 개의 VLAN 제한에 도달했습니다. 또한 주니퍼로 이전하기 시작했습니다.
SimonJGreen

어떤 플랫폼에서 200 VLAN VTP 한도에 도달하고 있습니까?
Yosef Gunsburg

1
VTP 200 VLAN 제한에 대해 들어 본 적이 없으며 VTP를 통해 200 개가 넘는 VLAN을 사용하고 있습니다. 나는 당신이 의미하는 바에 대해 더 많이 듣고 싶습니다. VTP 버전 1 및 2는 ISL에서 지정한 VLAN 1-1001 만 사용하도록 제한되지만 VTP 버전 3은 dot1Q 4095까지 올라갑니다. 스위치가 지원할 수있는 로컬 VLAN의 수에는 제한이 있지만 스위치를 지원할 수는 없습니다 tansparent 모드에서도이를 로컬로 위반합니다.
YLearn

1
VTP를 사용하여 쉽게 데이터 센터 노후된하는, 매우 위험하다
월 - 필립

@ Jan-Philipp, 그냥 "위험하다"고 말하는 대신 진술을 설명해 주시겠습니까? 위험한가요, IYO?
pboin

7

Solarwind 의 네트워크 구성 관리자는 IOS 장치 및 기타 장치에서 스크립트를 실행할 수 있습니다.

또한 야간 구성 백업, 변경 보고서 및 구성 감사와 같은 작업도 수행합니다. 그들의 가격은 끔찍하지는 않지만 NCM을 Orion Network Performance Monitor와 병합하고 있으며 더 이상 NCM을 별도로 실행할 수 있다고 확신하지 않습니다.


NCM은 여전히 ​​독립형 제품으로 제공되고 있지만 새로 출시 될 때마다 NPM과 더욱 통합되고 있습니다. 환경이 큰 경우 NCM은 백업 및 구성 변경보고에만 적합합니다.
harrijs

6

코어가 축소 된 것 같습니다. 그 맞습니까?

새로운 VLAN 추가에 따른 너무 많은 변경을 처리하는 한 가지 방법은 L3 경계를 액세스에 더 가깝게 옮기는 것입니다. 사전에 약간의 작업이 필요하지만 설계가 잘 계획되어 있고 생각되면 L3이 분배 또는 액세스 계층에서 중지되는지 여부에 따라 1 ~ 3 개의 장치 작업을 새 VLAN으로 추가해야합니다.

연결이 끊어진 경우 더 빠른 수렴을 포함하여 다른 이점도 있습니다.


3

net-scp 및 net-ssh gem과 함께 루비를 사용하여 네트워크 장비로 작업을 자동화합니다. 명령을 실행하는 매우 짧은 스크립트입니다 (완제품이 아닌 발췌).

begin
    Net::SSH.start(fqdn, username, :password => loginPassword) do |session|
        output = ""

        channel = session.open_channel do |ch|
            ch.send_channel_request "shell"
            ch.on_data do |ch, data|
                output += data
            end

            ch.send_data "conf t\n\r"
            #Some tasks here
            ch.send_data "exit\n\r" #Exit config mode
            ch.send_data "exit\n\r" #Exit device

        end

        # Wait for everything to complete
        channel.wait
    end
rescue Exception=>e
    errorOutput = fqdn + ": " + e.to_s
    puts errorOutput
    puts output
    return device
end
return output

빈 loginPassword 변수가 있어야합니다. 비어 있으면 로그인에 RSA 공개 키가 사용됩니다 (HP ProCurve 및 Cisco 15.X 플랫폼에서 지원됨).

git 및 몇 가지 짧은 스크립트를 사용하면 여러 변경 사항과 변경 사항을 가진 사람으로 모든 장비 구성을 구성 할 수 있습니다 (엔지니어가 구성을 가져 와서 작업이 완료된 후 커밋한다고 가정).

또한 말할 필요도 없지만, 경우에 따라 프로덕션 장비에서 실행하기 전에 항상 실험실에서 스크립트 작업을 테스트하십시오. 특히 명령을 실행하고 구성을 변경할 때. 테스트, 테스트, 테스트


0

네트워크 장치에 동일한 생성자 (예 : Cisco)를 사용하는 경우 SecureCRT가 최선의 선택입니다. 판매 시간에 여러 터미널에서 명령을 보낼 수있는 SSH 클라이언트입니다.

secrureCRT

설정 방법 : 1. 다른 탭에서 모든 장치에 연결 2.보기로 이동 3. "채팅 창"옵션 확인 4. 창을 마우스 오른쪽 버튼으로 클릭-> "모든 탭으로 채팅 보내기"확인


-1

사용은 NOC, NOC 프로젝트를 사용할 수 있습니다 . ISP를위한 확장 가능한 고성능 오픈 소스 OSS 시스템입니다. 전체 네트워크를 통해 VLAN을 쉽게 추가 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.