홈페이지 » 어떻게 » DD-WRT Mod-Kit를 사용하여 가정용 라우터의 더 많은 전력 공급

    DD-WRT Mod-Kit를 사용하여 가정용 라우터의 더 많은 전력 공급


    우리는 이미 향상된 성능을 위해 DD-WRT 대체 펌웨어로 홈 라우터를 수정하는 방법을 보여 주었으며, 오늘은 DD-WRT Mod-Kit를 사용하여 더욱 강력하게 사용하는 방법을 보여 드리겠습니다..

    아직 시작하지 않았다면 시리즈의 이전 두 기사를 확인하십시오.

    • DD-WRT를 사용하여 가정용 라우터를 수퍼 라우터로 전환하십시오
    • DD-WRT를 사용하여 Wi-Fi 네트워크 신호를 증폭하고 범위를 확장하는 방법

    당신이 그 화제에 익숙하다면, 계속 읽으십시오. 이 가이드는 좀 더 기술적 인 내용이므로 초보자는 라우터를 개조 할 때주의해야합니다..

    개요

    이 안내서는 "펌웨어 수정 키트"를 사용하여 수정 및 추가 된 DD-WRT 펌웨어를 만드는 방법을 단계별로 설명합니다..

    펌웨어 수정 키트를 사용하면 소스에서 컴파일하지 않고 펌웨어를 수정할 수 있습니다. 제공된 스크립트를 사용하여 이러한 방식으로 변경하면 일부 파일을 다운로드, 교체 및 삭제하는 간단한 작업이됩니다.

    이 방법을 사용하는 가장 큰 이유는 최근에 Openwrt IPKG 패키지에 대한 DD-WRT의 지원이 (USB를 통해) 하드 드라이브를 갖춘 라우터쪽으로 이동했기 때문에 mod-kit을 IPKG 패키지를 성공적으로 설치하는 유일한 일관된 작동 방식이 되었기 때문입니다 HD를 사용할 수없는 경우 또한이 방법은 패키지 설치를위한 JFFS 의존성으로부터 벗어날 수 있다는 이점이 추가되어 4MB의 플래시 만있는 라우터는 실제 문제입니다.

    사진 : publicenergy

    목표

    DD-WRT의 위키 및 개발자 사이트에서이 절차에 대한 지침을 자세히 설명하지만,이 가이드는 누구나 다음 목표를 달성하는 데 사용할 수있는 복사 및 붙여 넣기 절차로 만들 계획입니다.

    • knockd 패키지와 그 의존성을 설치하십시오..
    • 생성 된 NVRAM 기반 구성으로 ssmtp 패키지 설치.
      • 선택적으로 TLS smtp (Gmail 지원)를 지원합니다..

    이 절차를 따른 후에는 다른 패키지 설치에 맞게 간단하게 적용해야합니다..

    경고: 가볍게 밟으십시오. 수정 킷의 잘못된 사용법은 de-brick-ing이 필요한 라우터를 남겨 놓을 수 있습니다 (쓸데없는 벽돌로 바꿈). 그러나 당신이 진정한 괴짜라면 당신은 아마도 사물을 파괴 할 수있는 이데올로기에 가입하고 사물을 통제하며 진정한 괴짜들만

    전제 조건

    1. 이 절차를 사용하면 벽돌 라우터를 만들 때와 같이 라우터를 설치하십시오. 쓸 수 없는, 우리는 아래 절차의 사용으로 인해 직접적으로 또는 다른 관점에서 발생할 수있는 어떠한 손해에 대해서도 책임을지지 않습니다..
    2. 이 절차는 데비안 기반 시스템 (Lenny, Squeeze 및 Mint)에서 수행되었으며 아래의 지침은 하나를 사용하고 있다고 가정합니다.
    3. 이 절차는 하드웨어 설정에 적용되는 모든 전제 조건,주의 사항 및 제한 사항이 포함 된 DD-WRT로 라우터를 플래싱 한 경험이있는 사람들에게만 권장됩니다. 시작하기 좋은 장소는 DD-WRT 가이드가있는 슈퍼 파워 라우터로 가정용 라우터를 돌리는 것입니다..
    4. 귀하의 라우터는 적어도 "미니"버전의 DD-WRT를 지원해야합니다.
    5. 이 절차는 Linksys WRT54GS / L 라우터에서 작성 및 테스트되었습니다. 다른 공급 업체의 라우터를 사용하는 경우 마일리지가 매우 발생할 수 있습니다.

    설정

    필수 패키지 설치

    펌웨어 수정 키트에는 컴파일 및 작동을위한 몇 가지 종속성이 있습니다. 한 번에 모두 설치 / 업데이트하려면 터미널에서 다음 명령을 실행하십시오.

    sudo aptitude install gcc g ++ binutils 패치 bzip2 flex bison 만들기 gettext unzip zlib1g-dev libc6 subversion

    mod-kit 다운로드

    하위 폴더를 만들고 공식 SVN에서 키트를 구하십시오.

    mkdir firmware_mod_kit
    cd firmware_mod_kit
    svn checkout http://firmware-mod-kit.googlecode.com/svn/trunk/ firmware-mod-kit-read-only
    cd firmware-mod-kit-read-only / trunk /

    작업 할 펌웨어 다운로드

    고려해야 할 첫 번째 사항은 사용하려는 버전입니다.?
    엄지 손가락의 규칙은 의심 스러울 때 "미니"를 사용하는 것입니다. 이는 라우터가 최소한 "미니"버전을 지원하는 한, 모든 bloatware없이 가장 일반적으로 사용되는 모든 기능을 제공하기 때문입니다. 따라서 절차를위한 공간과 대부분의 경우 다른 용도를위한 일부 JFFS 공간을 남겨 둡니다.

    버전을 결정한 후에는 사용 가능한 펌웨어의 최신 버전을 사용하는 것이 좋습니다. "안정적인"펌웨어에 비해 많은 버그를 수정하는 경향이 있기 때문입니다.
    이 글을 쓰는 시점에서 최신 내용은 "03-17-11-r16454"였으며이 개정판은 다음 명령에서 사용되었습니다.

    wget http://www.dd-wrt.com/dd-wrtv2/downloads/others/eko/BrainSlayer-V24-preSP2/2011/03-17-11-r16454/broadcom/dd-wrt.v24_mini_generic.bin

    사용중인 버전을 쉽게 추적 할 수 있도록 다운로드 한 파일의 이름을 버전 번호로 변경하십시오.

    mv dd-wrt.v24_mini_generic.bin dd-wrt.v24_mini_generic-03-17-11-r16454.bin

    물론 선택 사항이지만 아래 명령은 파일의 이름을 변경했다고 가정합니다..

    펌웨어 압축 풀기

    펌웨어 내에서 파일을 변경할 수 있으려면 임시 디렉토리에 내용을 추출해야합니다..
    이 명령의 구문은 다음과 같습니다.
    ./extract_firmware.sh FIRMWARE_IMAGE WORKING_DIRECTORY
    우리의 경우, 이것은 다음과 같이 해석 될 것입니다 :

    ./extract_firmware.sh dd-wrt.v24_mini_generic-03-17-11-r16454.bin ./working_dir_mini1

    참고 :이 명령을 처음 실행하면 시스템에 mod-kit 도구가 빌드됩니다. 이것은 단 한 번 발생하며 잠시 시간이 걸릴 수 있습니다.

    패키지 설치

    펌웨어가 추출되었으므로 패키지를 설치할 수 있습니다..
    일반적으로이 절차는 openWRT 저장소에서 ipk 파일 형식으로 패키지 및 패키지 종속성을 다운로드하는 것입니다. 다운로드 한 후 제공된 스크립트를 사용하여 추출 된 펌웨어에 설치하십시오..

    녹크 패키지

    Knockd를 구성하고 사용하는 방법에 대한 자세한 지침은 이후 기사에서 자세히 설명 할 것이므로 지금 당장이 단계를 건너 뛰거나 미래에 대비하여 Knockd가 여유 공간을 많이 차지하지 않도록 선택할 수 있습니다..

    Knockd는 링크 계층에서 통신 이벤트를 수신하여 시퀀스를 수신하는 데몬입니다.
    이것이 의미하는 바는, 데몬을 실행하는 장치가 포트에서 "수신 대기"하지 않고 (포트 스캔에서 해당 포트를 열어 보지 못함) 한 명령에서부터 필요한 모든 작업을 수행 할 수 있다는 것입니다 전체 스크립트. 이 기술을 사용하면 서버가 홈 네트워크를 노출시키지 않고 원격으로 (인터넷을 통해) 필요한 모든 종류의 작업을 수행 할 수 있습니다..

    Knockd에는 나열된 종속성이 하나뿐이므로 다음을 실행하여 패키지 및 종속성을 다운로드하십시오.

    wget http://downloads.openwrt.org/backports/rc5/knockd_0.5-1_mipsel.ipk
    wget http://downloads.openwrt.org/whiterussian/packages/libpcap_0.9.4-1_mipsel.ipk

    펌웨어에 "knock daemon"(knockd) ipk를 설치하십시오 :

    ./ipkg_install.sh knockd_0.5-1_mipsel.ipk ./working_dir_mini1/

    펌웨어에 "패킷 캡처"(libpcap) ipk를 설치하십시오 :

    ./ipkg_install.sh libpcap_0.9.4-1_mipsel.ipk ./working_dir_mini1/

    "knockd"는 대체 구성 파일 (이후 기사에서 설명 할 것입니다)을 사용하여 호출 할 수 있으므로 다른 작업을 수행 할 필요가 없으며 설치하려는 경우 펌웨어 구성 섹션으로 건너 뛸 수 있습니다.

    SSMTP 패키지

    SSMTP 패키지는 라우터에서 서버용 Gmail 또는 SMTP를 사용하는 Linux의 이메일 알림 설정 방법에 표시된 것처럼 이메일 메시지를 보낼 수있게합니다. 우리는 DD-WRT를 구성하는 방법을 보여줄 것이라고 약속했고 우리는 이제.
    이 기능은 라우터에서 이메일을 통해 작업에 대한 피드백을 받기를 원하는 스크립트를 만드는 경우에 주로 유용합니다.

    이 패키지의 설정은 임베디드 시스템의 한계로 인해 보통의 리눅스 시스템에서 좀 더 복잡해 졌으니 심호흡을하십시오. 가자… :)

    패키지 다운로드 :

    wget http://downloads.openwrt.org/backports/rc5/ssmtp_2.61-1_mipsel.ipk

    펌웨어에 "ssmtp"ipk를 설치하십시오 :

    ./ipkg_install.sh ssmtp_2.61-1_mipsel.ipk ./working_dir_mini1/

    TLS 지원 (선택 사항)
    SSMTP는 다른 패키지를 종속성으로 나열하지 않지만 TLS 인증이 필요한 smtp 게이트웨이를 사용할 수있게하려는 경우 (즉. Gmail), openSSL pakage도 설치해야합니다.
    노트: 거대 함이있다. 약점 나중에 JFFS를 위해 라우터에서 상당히 줄어든 공간의 형태로이를 수행하는 것입니다. 즉, openSSL 패키지는 총 4MB (정상적인 "메가"지원 라우터의 경우)에서 약 500K의 공간을 차지하고 JFFS 오버 헤드까지 합쳐져서 왼쪽의 귀중한 몇 블록을 발견하게됩니다. 무료 JFFS 공간 (WRT54GL의 경우 약 60KB).

    아직 SMTP 서버가 필요없는 비 TLS가 있기 때문에 (보통 ISP의 경우) 게이트웨이를 필요로하는 TLS를 사용해야하는 경우 잠시 생각해 보는 것이 좋습니다..

    단점에도 불구하고 TLS 지원을 사용하기로 결정한 경우 openSSL 패키지를 다운로드하십시오.

    wget http://downloads.openwrt.org/whiterussian/packages/libopenssl_0.9.8d-1_mipsel.ipk

    펌웨어에 "openSSL"(libopenssl) ipk를 설치하십시오 :

    ./ipkg_install.sh libopenssl_0.9.8d-1_mipsel.ipk ./working_dir_mini1/

    구성
    SSMTP 패키지에는 대체 구성 파일을 사용하여 호출 할 수없는 제한 사항이 있습니다.
    펌웨어가 라우터에있을 때 펌웨어가 읽기 전용이기 때문에 즉석에서 펌웨어의 구성을 하드 코드 할 수 있습니다..
    그러나 모든 펌웨어 수정 단계를 거치지 않고 이메일 설정을 변경하려는 경우 어떻게해야합니까? (예 : 암호 변경).

    이를 위해, Jeremy (펌웨어 mod-kit 제작자)와 나 자신도 결론을 내었습니다. (겸허하게 추가 할 수 있다면) 단호한 방법은 다음과 같습니다.

    1. ssmtp 패키지가 etc 아래의 읽기 전용 위치를 가리키는 구성 파일 위치를 확인하고 런타임에 쓸 수있는 tmp 디렉토리를 지정하십시오.
    2. 시작시 NVRAM 변수를 기반으로 동적으로 구성을 생성하는 스크립트 만들기.

    이를 달성하기 위해 몇 가지 추가 단계가 필요합니다 ...

    Symlink ssmtp 구성 디렉토리
    위에서 설명한 것처럼 우리는 / etc / ssmtp 라우터의 위치를 ​​가리키고 / tmp 디렉토리를 런타임에 라우터에 쓸 수있는 유일한 쓰기 가능 장소로 사용합니다. 이렇게하려면 ipk 설치 프로그램에서 만든 ssmtp 디렉토리를 삭제하십시오.

    rm -rf ./working_dir_mini1/rootfs/etc/ssmtp/

    / tmp / etc / ssmtp를 절대 경로로 가리 키도록 라우터의 루트 파일 시스템에서 / etc / ssmtp를 가리키는 새로운 심볼릭 링크를 만듭니다.

    ln -s / tmp / etc / ssmtp / ./working_dir_mini1/rootfs/etc/ssmtp

    노트: 지금은 비현실적이지만, 패키지의 구성 디렉토리를 펌웨어 수정 키트의 작업 디렉토리 밖에있는 위치로 지정하고 있기 때문에, 런타임시 라우터의 관점에서 완전히 멋지게 보입니다..

    초기화 스크립트
    이 스크립트를 펌웨어에 삽입하지 않고 나중에 시작 스크립트로 실행하는 것은 가능하지만 향후 사용을위한 예제로만 여기에 넣는 것이 적절하다고 느낍니다..
    원래 Jeremy는 다른 사람의 요청에 맞춘 스크립트를 만들었습니다. 나중에 DD-WRT 및 syslog보고와 더 호환되도록 수정하고 보강했습니다..

    새 init (시작) 스크립트를 만듭니다.

    vi ./working_dir_mini1/rootfs/etc/init.d/S80ssmtp

    참고 : 다른 편집기를 사용할 수도 있습니다. 왜냐하면 라우터에서 사용할 수있는 것과 일치하기 때문에 vi를 사용합니다 ...
    이 내용을 다음과 같이 작성하십시오.

    #! / bin / sh
    #
    # title : ssmtp_nvram.sh
    # author : Jeremy Collake와 Aviad Raviv
    # 사이트 : http://www.bitsum.com, http://howtogeek.com
    #
    nvram vars에서 설정 파일을 빌드하는 # 스크립트.
    # 사용하는 모든 설정 파일에 대해 작동합니다.
    # var = 값 유형 쌍.
    #
    # nvram 변수에 접두어를 사용합니다..
    #
    # 즉.
    # ssmtp_hostname = something
    # ssmtp.conf로 변환합니다.
    # hostname = something
    #
    logger_func ()

    로거 -s -p local0.notice -t SSMTP_init $ 1

    logger_func "########### SSMTP init 실행을 시작했습니다 ###########"
    logger_func "/ tmp에 etc 디렉토리 만들기"
    [! -d / etc / ssmtp /] && mkdir -p / tmp / etc / ssmtp /
    CONFIG_FILE = / etc / ssmtp / ssmtp.conf
    NVRAM_PREFIX = ssmtp_
    PACKAGE_NAME = "echo $ NVRAM_PREFIX | sed"s / _ / / "

    logger_func "$ PACKAGE_NAME 패키지에 대해 $ CONFIG_FILE 생성 중"
    #echo $ 0 : $ PACKAGE_NAME 패키지에 $ CONFIG_FILE 생성
    echo "#! / bin / sh"> $ CONFIG_FILE
    echo "#">> $ CONFIG_FILE
    echo "# nvram을 기반으로 $ 0에 의해 생성 된 자동">> $ CONFIG_FILE
    echo "#">> $ CONFIG_FILE

    if [-z " 'nvram show | grep ssmtp'"]
    그때
    logger_func "conf 파일을 생성하는 데 필요한 NVRAM 변수를 설정하지 않은 것 같습니다."
    logger_func "** 시작 스크립트에서 다음 명령을 사용하여 ** 고려하십시오."
    logger_func "nvram set [email protected]"
    logger_func "nvram set ssmtp_mailhub = smtp.gmail.com : 587"
    logger_func "nvram set [email protected]"
    logger_func "nvram set ssmtp_UseSTARTTLS = YES"
    logger_func "nvram set ssmtp_AuthUser = username"
    logger_func "nvram set ssmtp_AuthPass = password"
    logger_func "nvram set ssmtp_FromLineOverride = YES"
    logger_func "NVRAM 변수를 만들고 init 스크립트를 다시 실행하거나 재부팅하여 설정을 적용하십시오."
    출구 0
    fi

    ########################## #########
    #
    # 메인 루프
    #
    SED_COMMAND = "s / $ NVRAM_PREFIX / /"
    CONFIG_VARS = "nvram show | grep $ NVRAM_PREFIX | sed"$ SED_COMMAND ""
    $ CONFIG_VARS에있는 i 해야 할 것
    echo $ i >> $ CONFIG_FILE
    끝난

    ########################## #########
    #
    # 위생 점검
    #
    만약 [ ! -f "$ CONFIG_FILE"]; 그때
    # echo "$ 0 : ERROR - $ CONFIG_FILE을 만들 수 없습니다. 아마도 symink / etc / XXXX -> / tmp / etc / XXXX가 없습니까?"
    logger_func "ERROR - $ CONFIG_FILE을 만들 수 없습니다. 아마도 symink / etc / XXXX -> / tmp / etc / XXXX가 없습니까?"
    fi
    logger_func "########### SSMTP init 실행 완료 ###########"

    실행 파일로 만드십시오.

    chmod + x ./working_dir_mini1/rootfs/etc/init.d/S80ssmtp

    스크립트에서 NVRAM 대기 변수를 기록해두면 라우터에 수정 된 펌웨어를 설치 한 후 작업 할 수있는 권한을 부여해야합니다.

    수정 된 펌웨어 빌드

    이제 모든 것이 준비되었으므로 수정 된 펌웨어를 압축 된 바이너리로 다시 패키징하여 라우터로 플래시 할 수 있습니다.
    "build.sh"스크립트 구문은 다음과 같습니다.
    ./build_firmware.sh OUTPUT_DIR WORKING_DIRECTORY

    이렇게하기 위해 제공된 스크립트를 사용하므로 다음을 발행하십시오 :

    ./build_firmware.sh output_mini1 ./working_dir_mini1/

    "빌드"작업이 완료되면 "출력"디렉토리에서 사용되기를 기다리는 몇 가지 펌웨어 이미지가있게됩니다.

    일반적으로 DD-WRT 펌웨어처럼 "custom_image_00001-generic.bin"파일을 라우터로 플래쉬 할 수 있습니다.

    노트: 펌웨어 플래시 실행 전, 실행 중 및 실행 직후에 "공장 기본 설정"으로 복원하는 것을 잊지 마십시오..

    플래시 단계 게시

    ssmtp 구성 파일을 생성하기 위해 SSMTP 패키지에서 NVRAM 변수를 찾았으므로 이제는 누락 된 정보를 제공해야합니다.
    우리는 웹 GUI "명령 실행"기능을 사용하여이를 수행 할 것입니다..

    웹 GUI -> "관리"-> "명령"-> 텍스트 상자에 다음을 붙여 넣습니다.

    nvram set [email protected]
    nvram set ssmtp_mailhub = smtp.gmail.com : 587
    nvram set [email protected]
    nvram set ssmtp_UseSTARTTLS = YES
    nvram set ssmtp_AuthUser = 사용자의 gmail 사용자 이름 (@ gmail.com 제외)
    nvram set ssmtp_AuthPass = 당신 -gmail-password
    nvram set ssmtp_FromLineOverride = YES
    nvram 커밋

    등호 (=) 뒤에 나오는 텍스트를 실제 정보로 바꾼 다음 "명령 실행"을 누르십시오..
    노트: 사용하는 일반 TLS가 아닌 SMTP 서버를 사용하는 경우 포트가 587 대신 25 개가 사용됩니다..

    이제 SSMTP 정보를 사용할 준비가되었으므로 init 스크립트를 호출해야합니다. 따라서 라우터를 재부팅하거나 "명령"텍스트 상자에 붙여 넣을 수 있습니다.

    /etc/init.d/S80ssmtp

    그런 다음 "명령 실행"을 다시 누르십시오..
    이 명령의 출력은 다음과 같아야합니다.

    이메일을 보낼 수 있는지 테스트
    다시 이것을 "명령"텍스트 상자에 다음 명령을 전자 메일 주소와 함께 붙여 넣습니다.

    에코 "시험 도가니 123 이메일 보내기"| ssmtp -vvv [email protected]

    그런 다음 "명령 실행"을 다시 누르십시오..
    특별히 자세한 정보를 표시하기 위해 -vvv 옵션을 사용 했으므로이 명령의 출력은 다음과 같아야합니다.

    모든 것이 잘 진행되면 초 이내에 테스트 이메일을 받아야합니다..

    우리는이 정보를 사용하여 홈 라우터의 한계를 훨씬 더 밀어 낼 수 있기를 희망합니다. 이제 가정용 라우터와 DD-WRT를 진정으로 제어 할 수 있습니다.


    리눅스는 생명을 연장하고, 리눅스는 의식을 넓 힙니다 ... 리눅스는 패킷 여행에 필수적입니다.