- 실무에서 파일 전송 중 파일 전송이 실패하고, 서비스가 끊기는 등의 일들이 빈번했습니다.
- 그 중 SMB를 사용하며 발생한 문제들이 많았는데, 파헤쳐보니 애초에 잘못 만들었다는 글들을 확인했습니다.
- 아래는 실무에서 SMB 관련 오류를 발견하고 조치했던 기록들을 발췌했습니다.
SMB 관련 오류분석
- SMB 연결 끊김으로 서비스에서 TimeOut발생 -> 처리 지연 확인했습니다.
- SMB 연결 끊김 관련하여 주기적으로 연결 끊김 확인하였고, 연결 끊기지 않는 설정 적용했습니다.
- 추가 모니터링 필요합니다.
이벤트 뷰어 확인
- 이벤트뷰어 - 응용프로그램 및 서비스 로그 - microsoft - windows - smbclient - connectivity 오류 로그 확인
* 오류
네트워크 연결이 끊겼습니다.
서버: ₩100.100.100.130
서버 주소: ...
연결 형식 : wsk
지침: 이는 서버에 대한 클라이언트 연결이 끊겼음을 나타냅니다.
---
로그 이름: microsoft-windows-smbclient/connectivity
원본:smbclient
이벤트 ID : 30804
* 경고
서버에 대한 클라이언트 세션이 끊어졌습니다.
오류: 원격 사용자 세션이 삭제되었습니다.
서버 이름: ₩100.100.100.130
세션 ID:....
---
로그 이름: microsoft-windows-smbclient/connectivity
원본:smbclient
이벤트 id : 30805
- 30805, 30807 이벤트 코드 발생
- 해당 이벤트 발생시 smb 연결이 끊깁니다.
SMB 관련 오류분석
- smb가 정상 동작중임에도 간헐적으로 세션을 종료 후 재접속 시킨다. (== 기존 smb client 연결을 끊는다)
조치1
Windows Defender 방화벽 - Windows Defender 방화벽을 통해 앱 또는 기능 허용SMBDirect를 통한 파일 및 프린터 공유 : 방화벽 허용
조치2
session timeout disable: https://community.spiceworks.com/topic/2305696-smb-share-idle-timeout
- 로컬 보안 정책 -> 로컬 정책 -> 보안 옵션
- microsoft 네트워크 서버 : 로그온 시간이 만료되면 클라이언트 연결 끊기 : 사용 -> 사용안함
- microsoft 네트워크 서버 : 세션을 중단하기 전에 필요한 유휴 시간 : 15분 -> 99999분 (208일)
조치3
- 네트워크 드라이브 연결 끊김 설정 제거합니다.
- powershell 실행 후 아래 명령어 실행했습니다.
net config server /autodisconnect:-1
---
- 매번 수동으로 하기 힘드니, 배치파일을 만들어봅시다.
로컬보안정책
- 약간의 조건이 있는데,
조치3
명령어는 powershell에서 작동시켜야합니다.- Powershell에서 동작하는 배치파일의 경우 .ps1 확장자로 파일 생성합니다.
- 그리고
로컬보안정책
과 같은 경우는 레지스트리 값 변경만으로 설정을 할 수 있습니다. - 아래와 같은 내용으로 배치파일을 생성했습니다.
Windows NetworkDrive 관련 배치파일 내용
# Smb 설정
echo "net config server /autodisconnect:-1"
net config server /autodisconnect:-1
echo "Set local security config"
# microsoft 네트워크 서버 : 세션을 중단하기 전에 필요한 유휴 시간 : 15분 -> 0분 (사용안함)
$registryPath1 = "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters"
$registryName1 = "AutoDisconnect"
$newValue1 = 4294967295
## 레지스트리 값을 변경
Set-ItemProperty -Path $registryPath1 -Name $registryName1 -Value $newValue1
# microsoft 네트워크 서버 : 로그온 시간이 만료되면 클라이언트 연결 끊기 : 사용 -> 사용안함
$registryPath2 = "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters"
$registryName2 = "EnableForcedLogOff"
$newValue2 = 0
## 레지스트리 값을 변경
Set-ItemProperty -Path $registryPath2 -Name $registryName2 -Value $newValue2
echo "Success local security config"
Read-Host "Press Enter to continue..."
'Windows' 카테고리의 다른 글
[Windows] 특정 포트 사용중인 프로세스 죽이기 (0) | 2023.09.18 |
---|---|
[Windows] 파일 16개 이상 한번에 열기 (0) | 2023.06.15 |
[브라우저] 검색엔진 단축키 설정 (0) | 2023.05.16 |
[Windows] 가상메모리 설정 방법 (0) | 2023.05.13 |
[Windows] 임시 파일 제거 툴 (0) | 2023.05.03 |