4.1.11

비스타 SP1 TCP/IP half-open 제한 해제 방법 총정리 (32bit + 64bit)

Windows Vista SP1 의 TCP/IP Half-Open 연결 제한을 해제하는 방법입니다. (32bit / 64bit 모두 포함합니다.)

본 TCP/IP Half-Open 연결 제한 해제 방법은
Windows Vista SP1 (버전 6001.18000 : SP1 정식버전 및 SP1 RTM, SP1 RC Refresh2 포함) 전용입니다.

Windows Vista에 SP1이 설치되어 있지 않다면 SP1을 먼저 설치하시기 바랍니다.

설명은 길지만 알고 보면 간단한 방법입니다.


-----------------------------------------------------------------------------------------------------------------------------------------------
TCP/IP Half-Open 이란 간단히 말해 내 컴퓨터가 동시에 처리 할 수 있는 인터넷 연결의 수 라고 생각하면 됩니다.

과도한 인터넷 연결을 시도해 시스템 장애를 유발하는 바이러스나 웜의 공격을 막기 위해
Windows는 XP SP2 버전 이후 부터 TCP/IP Half-Open의 연결 개수를 10개로 제한하여 이러한 형태의 공격을 방어하고 있습니다.

대부분의 P2P프로그램들은 동시에 많은 연결을 확보(= 많은 상대방을 확보)하여 전송 속도와 안정성을 높이는 원리로 작동되기 때문에
P2P프로그램 사용 중에 TCP/IP Half-Open 연결의 수가 한계값에 다다르면 그 이상의 연결은 대기 상태에 머물게 되어
더 이상의 Peer 연결을 통한 속도 향상이 힘들게 되고, 또한 추가적인 웹 서핑 등의 기타 인터넷 연결을 시도할때
인터넷은 물론 시스템 전체가 느려지는 등의 문제가 발생할 수 있습니다.

즉, TCP/IP Half-Open의 연결 제한을 조정하는 것은 내 컴퓨터가 동시에 사용할 수 있는 인터넷 연결의 수를 더 많이 확보하여 보다 안정적이고 여유로운 인터넷 환경을 유지하는데 목적이 있습니다.

비유하자면, 고속도로의 속도제한을 시속 100Km에서 200Km로 끌어 올려 속력을 더 내게 하는 것은 아니지만
2차선인 차선의 폭을 10차선으로 확장하여 소통을 원활하게 만드는 것입니다. 차가 안막히면 속도도 높아지고 운전이 쾌적해지는 법이겠죠.


-----------------------------------------------------------------------------------------------------------------------------------------------
Windows Vista의 TCP/IP Half-Open 제한을 담당하는 파일은
\Windows\System32\Drivers 에 위치한 Tcpip.sys 라는 파일입니다.

TCP/IP Half-Open 제한을 변경하기 위해서는 어떻게든 이 Tcpip.sys 파일을 변경(크랙)해주어야 하는데
Vista SP1의 경우 이 파일을 직접 변경(크랙)하게 되면 시스템 부팅시 Tcpip.sys 파일에 포함된 디지털 서명을 확인하는 과정에서
에러가 발생하여 부팅이 불가능하게 됩니다.

따라서 현재까지 알려진 TCP/IP Half-Open 제한을 변경하는 방법은

원본 Tcpip.sys 파일로 부팅과정을 통과 한 후 이미 크랙되어 있는 CrackTcpip.sys 파일을
(윈도우 레거시 서비스에 등록해) 시스템 시작시 대신 로드하는 방식 (32bit의 경우에만 해당)

원본 Tcpip.sys 파일을 직접 변경하고 ReadyDriverPlus라는 간단한 프로그램을 설치해
부팅시 디지털 서명 확인 과정을 자동으로 건너뛰는 방식 (32bit, 64bit의 경우 모두 해당)

두가지가 있습니다.

현재 이 두가지 방식에는 약간의 차이가 있는데

전자의 경우에는 부팅시 디지털 서명 확인을 건너뛰는 과정이 없어 부팅과정이 깔끔하고,
10개로 설정된 TCP/IP Half-Open 제한을 255개로 늘려주지만, 255개 이외의 수치를 임의로 지정할 수 없습니다.

후자의 경우에는 부팅시 디지털 서명 확인을 건너뛰는 과정이 화면에 출력되지만
TCP/IP Half-Open 연결 제한을 최대값인 16777214개 까지 마음대로 설정 할 수 있습니다.

찬찬히 읽으시고 (32bit의 경우에는 선호하는 방식을) 적용하시기 바랍니다.


-----------------------------------------------------------------------------------------------------------------------------------------------
원본 Tcpip.sys 파일은 그대로 두고 다른 파일을 대신 로드하는 방법
Windows Vista SP1 32bit 에만 해당. 255개로 고정.


파일 명이 유사하니 정확한 파일명을 확인한 후 적용하세요.

1. 첨부파일 중 CrackTcpipv744.zip 을 다운로드 하여 임의의 장소에 압축을 풀어둡니다.

2. CrackTcpip.sys 파일을 \Windows\System32\Drivers 폴더에 복사합니다.

3. TestInstall.reg 파일을 더블클릭해 레지스트리에 등록합니다.

4. 재부팅 합니다.

5. Run.bat 파일을 오른쪽 클릭해서 관리자 권한으로 실행합니다.
(CrackTcpip가 레거시 서비스에 등록됩니다. 하지만 아직까지는 시스템 시작시 이 서비스가 자동으로 시작되지는 않습니다.)

만약 지금까지의 과정중에서 문제가 발생했다면 CrackTcpip 서비스를 중지하기 위해 다시 재부팅 한 뒤에
\Windows\System32\Drivers 폴더의 CrackTcpip.sys 파일을 삭제하고 Uninstall.reg 파일을 더블클릭하여
레지스트리를 삭제하는 것으로 모두 원상태로 되돌릴 수 있습니다.

6. Install.reg 파일을 더블클릭해 레지스트리에 등록합니다.
(시스템 시작시 CrackTcpip 레거시 서비스가 자동으로 시작되게 합니다.)

7. 마지막으로 시스템을 재부팅하여 CrackTcpip 서비스를 온전히 활성화 시킵니다.
(재부팅 대신에 다시 한번 Run.bat 파일을 오른쪽 클릭해서 관리자권한으로 실행해도 됩니다.)


설치완료 후의 복원방법은

1. Uninstall.reg 파일을 더블클릭하여 레지스트리를 삭제합니다.

2. 시스템을 재부팅합니다.

3. \Windows\System32\Drivers 폴더의 CrackTcpip.sys 파일을 삭제합니다.


-----------------------------------------------------------------------------------------------------------------------------------------------
Tcpip.sys 파일을 직접 변경하고 부팅시 디지털 서명 확인 과정을 건뛰는 방법
Windows Vista SP1 32bit / 64bit 모두 해당. Half-Open 값 자유로이 설정 가능.


Tcpip.sys 파일을 직접 변경하게 되면 윈도우는 부팅에 실패하고 몇가지 부팅에 관련된 옵션을 제시하게 됩니다.
이 옵션들 중에서 '드라이버 서명 적용 사용안함' 이라는 옵션을 찾아서 실행시키면 윈도우는 아무 문제 없이 정상적으로
부팅&작동합니다.

매번 부팅시 마다 수동으로 직접 화살표 키를 이동시켜 옵션을 찾아 선택해줘도 되고
ReadyDriverPlus라는 간단한 무료 공개 프로그램을 설치해 자동으로 옵션을 선택하게 만들어도 됩니다.

ReadyDriverPlus라는 프로그램은 무언가 대단한 기능을 가지고 있는 것은 아니고
우리가 손으로 직접 화살표 키를 움직이는 과정을 정해진 순서에 따라 대신해주는 역할을 할 뿐입니다.
일종의 매크로라고 생각하면 됩니다. 따라서 ReadyDriverPlus를 설치해서 자동으로 하든 손으로 직접하든,
똑같은 부팅 방식의 똑같은 화면을 진행하게 됩니다.



먼저 Tcpip.sys 파일을 변경합니다.
파일 명이 유사하니 정확한 파일명을 확인한 후 적용하세요.

1. 첨부파일 중 VistaTcpipUacPatch21a.rar을 다운로드하여 임의의 장소에 압축을 풀어둡니다.

2. 32bit의 경우 InstallPatch32.bat 파일 / 64bit의 경우 InstallPatch64.bat 파일을 실행하여
지시대로 적용합니다. (키보드 두번 누르면 끝)



그 다음 ReadyDriverPlus를 설치하는데,
멀티부팅 시스템의 경우 설정이 까다롭습니다. 잘 읽으셔야 합니다.


Windows Vista 하나만 설치 되어 있는 단일부팅 시스템의 경우

1. SetupReadyDriverPlus.exe를 실행합니다.

2. 기본적으로 주어지는 설치 옵션을 건드리지 말고 그대로 설치합니다. 완료후 아래 5번으로 넘어가 계속 진행합니다.




Windows Vista 이외에 다른 OS가 함께 설치되어 있는 멀티부팅 시스템의 경우

멀티부팅 시스템의 경우에는 필히 ReadyDriverPlus의 작동 원리를 이해해야 합니다.

멀티부팅 시스템은 부팅과정중에 부팅 할 OS를 선택하는 과정(부트로더가 출력되는 과정)이 있습니다.
예를 들자면
Windows XP
Windows Vista
Windows 2008
이런 식으로 목록을 출력해주고 일정시간 안에 부팅할 OS를 선택하도록 하는 것이죠.

ReadyDriverPlus는 이 부트로더를 이용합니다. 즉, ReadyDriverPlus 역시 부팅될때 작동해야 하기 때문에,
스스로를 부트로더에 등록시켜서 자신이 선택되면 입력된 매크로 값을 실행하는 하는 방식으로 작동합니다.
ReadyDriverPlus를 설치하게 되면 부트로더의 OS 선택목록 맨 마지막에 ReadyDriver Plus 라는 항목으로 추가되게 됩니다.
가장 나중에 설치된 항목이니까 언제나 목록의 맨 마지막에 위치하게 되겠죠.
ReadyDriver Plus가 목록에서 맨 마지막이라는 것은 이제 고정된 값이니까,
이 녀석은 이제 자기 위로 몇번째에 Vista가 있는지 셈하게 됩니다.
위의 예시의 경우에는 위로 두번째에 해당하겠네요.
자기 위로 몇번째에 Vista가 있다라는 값이 주어지면, ReadyDriverPlus는 그만큼 화살표 윗 방향키를 눌러 위로 이동하고,
F8키를 누른 다음, '드라이버 서명 적용 사용안함' 옵션 까지 가기 위해 화살표 윗방향 키를 두번 누르고,
마지막으로 엔터키를 누릅니다.
이것이 ReadyDriverPlus가 하는 일의 전부입니다.

이런 원리 때문에 ReadyDriverPlus는 설치시에 Vista가 자기 위로 몇번째에 위치하는지에 대한 값을 요구합니다.
또한 부트로더에 등록되어 구동되기 때문에 반드시 부팅시 읽어들이는 파티션, 즉 활성 파티션에 설치되어야 합니다.

1. SetupReadyDriverPlus.exe 를 실행합니다.

2. 설치위치가 기본으로 C:\BOOT로 되어 있는데 C를 자신의 컴퓨터가 구동될때 맨 먼저 읽어들이는
활성파티션의 드라이브 문자로 정확히 바꾸어야 합니다.

멀티부팅 시스템에서 활성파티션의 드라이브문자는 임의로 얼마든지 바꿀 수 있기 때문에 정확히 확인해야 합니다.
제어판-관리도구-컴퓨터관리-디스크관리 로 가서 아래쪽에 하드디스크의 파티션 정보들 중에서
'활성' 이라는 글자가 보이는 파티션(주로 가장 왼쪽 파티션)의 드라이브 문자(C, D 같은거)가 무엇인지 확인합니다.
(저의 경우 XP와 Vista 멀티부팅인데 가장 왼쪽 '활성' 파티션의 드라이브 문자가 D로 되어 있습니다.
저의 경우에는 D:\BOOT 가 되어야 겠네요.)

3. 다음 단계에서는 부팅시 OS 선택목록에서 Vista가 ReadyDriverPlus의 몇번째 위에 존재하게 되는지 선택해야합니다.

제어판-시스템-고급시스템설정-고급-시작및복구의 설정-시스템시작-기본운영체제 항목의 드롭다운메뉴를 눌러서
Vista가 밑에서부터 몇번째에 위치해 있는지 확인한 후
제일 밑에 있다면 1 Stroke, 밑에서 두번째에 있다면 2 Stroke, 세번째에 있다면 3 Stroke ... 이렇게 선택해줍니다.

4. 다음 단계의 체크항목들은 모두 체크 된 상태 그대로 두고 설치를 완료합니다.





5. 이제 레지스트리 수정을 통해 TCP/IP Half-Open 수치를 원하는 대로 설정합니다.

시작-실행-regedit 를 입력 해서 레지스트리 편집기를 불러옵니다.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 로 이동합니다.
오른쪽 영역에 TcpNumConnections 가 추가되어있을 것입니다. 더블클릭합니다.
단위를 10진수(Decimal)로 선택해보면 327680 라는 값이 보일 것입니다.
이것은 위에서 Tcpip.sys 파일을 변경하는 과정 중에 기본적으로 세팅된 수치입니다.
이 수치를 10진수(Decimal)로 선택된 상태에서 최대 16777214 까지 원하는 값으로 설정합니다.
(16777214의 16진수 값은 fffffe가 될 것 입니다.)

6. 이제 시스템을 재부팅합니다. 부팅과정중에 ReadyDriver Plus가 작동해서 옵션을 찾아 들어가는 모습이 보일 것입니다.
부팅이 정상적으로 완료되면 설정이 끝난 것입니다.

7. 다시 제어판-시스템-고급시스템설정-고급-시작및복구의 설정-시스템시작을 확인해보면
ReadyDriver Plus가 기본 운영체제로 선택되어 있고
아래에 '운영체제 목록을 표시할 시간'은 3초로 세팅되어 있을 것입니다.
단일OS 시스템일 경우 이 3초 앞의 체크표시를 해제하면 부팅시 ReadyDriver Plus가 선택되길 기다리는 3초를 줄일 수 있습니다.
멀티OS 시스템의 경우 기본운영체제 항목및 대기시간을 원하는 데로 설정하면 됩니다.
단, Vista로 부팅할 때에는 이제 Windows Vista 대신에 ReadyDriver Plus를 선택해야 부팅과정이 자동으로 넘어갑니다.



복구방법

1. 만에 하나 설정이 잘못되어 부팅에 실패하고 부팅에 관련된 옵션값이 화면에 출력된다면,
혹은 ReadyDriverPlus를 설치하기 싫으시다면, 수동으로 부팅을 통과하면 됩니다.
방법은, 화면을 잘 읽어 보신 후 엔터키 등을 눌러 Windows Vista가 목록에 뜨는 화면까지 간 다음,
화살표 키로 Windows Vista에 흰색줄을 올려놓고 F8키를 눌러 나타나는 옵션중에
'드라이버 서명 적용 사용안함'를 선택해주면 이상없이 시스템을 시동할 수 있습니다.

2. 지금까지의 모든 세팅을 원상복구하는 방법은
제어판-프로그램및기능 에서 ReadyDriver Plus 1.1을 삭제하고 UndoPatch.bat를 실행하면 모두 복구됩니다.


-----------------------------------------------------------------------------------------------------------------------------------------------
최종적으로 uTorrent 를 변경된 TCP/IP Half-Open 값에 맞게 설정합니다.

uTorrent의 옵션-설정-고급 으로 갑니다.

bt.connect_speed : uTorrent가 1초에 연결할 수 있는 TCP/IP Half-Open 값입니다. uTorrent의 순발력과 관계됩니다.

net.max_halfopen : uTorrent가 최대로 이용하는 TCP/IP Half-Open 값입니다.

두 옵션 모두 변경한 TCP/IP Half-Open 연결 값 미만으로 설정합니다.



-----------------------------------------------------------------------------------------------------------------------------------------------
설정이 잘 되었는지 확인하는 방법

제어판-관리도구-이벤트뷰어-windows로그-시스템 에서 이벤트ID로 정렬한 후
4226번 이벤트가 더이상 발생하지 않는다면 잘 적용된 것입니다.



-----------------------------------------------------------------------------------------------------------------------------------------------
PS. '원본 Tcpip.sys 파일은 그대로 두고 다른 파일을 대신 로드하는 방법'에서 32bit용 CrackTcpip.sys 파일을
VistaTcpipUacPatch21a에 포함된 tcpip64-18000.sys로 교체해서 64bit에 적용하면 어떻게 되는지는 확인 못해봤습니다.

PS. mydigitallife.info 사이트와 이곳과 관련된 포럼들에서 파일을 얻었고,
ReadyDriver Plus의 사용 방법과 멀티부팅에 관련된 내용은 직접 맨땅에 헤딩해가며 알아낸 것입니다.

PS. 맨땅에 헤딩하는 과정중에 ReadyDriverPlus 설치 삭제를 반복하다보니 어느 순간 컴퓨터는 이상없지만
ReadyDriverPlus가 더이상 설치되지 않는 현상이 생겼습니다.
부득이하게 고스트로 복구했는데 참고하시기 바랍니다.