Enterprise IT Solutions 42

데비안 리눅스 배포 시 활용할 초기설정 스크립트

Pre set-up requirements /etc/hostname /etc/hosts /etc/network/interfaces /etc/resolv.conf /etc/sysctl.conf Post set-up script # Add the required user. echo -e 'Skill39!\nSkill39!'|passwd echo -e 'Skill39!\nSkill39!'|adduser skill39 # Set the required time zone. ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime # Visual-check keymap and locale. cat /etc/default/keyboard cat /etc/default/loc..

DNS Round Robin, Netmask Ordering, Subnet Priortization

얼마 전에 일부 윈도우 도메인 클라이언트에서 도메인 네트워크에 접근하는 데 상당한 지연(한 10초 정도)이 생기는 이슈가 있어 조사해 보았더니, DNS 서버(Server 2012)가 도메인 컨트롤러의 A 레코드를 임의로 응답해서 클라이언트가 접근할 수 없는 레코드를 응답하는 문제였습니다. DNS Netmask Ordering 기능은 DNS 서버에 동일한 A 레코드가 여러 개 존재할 때, DNS 클라이언트가 위치한 서브넷과 유사한 순서로 배치하여 응답하는 기능입니다. 예를 들어서 클라이언트가 10.0.0.100이라면 아래 순서로 응답해 줍니다. www.test.local 10.0.0.1 www.test.local 10.0.1.1 www.test.local 10.0.2.1 DNS Round Robin 기능은..

써드파티 유틸리티 없이 패킷 캡처하기 (netsh)

개요 Windows에 내장된 netsh.exe를 활용하여 ICMP Echo Request를 발생시킨 프로세스를 찾는 과정을 정리했습니다. 1. 프로세스 추적을 위해 감사 GPO 적용 컴퓨터 구성\Windows 설정\보안 설정\로컬 정책\감사 정책\프로세스 추적 감사 2. 관리자 권한으로 netsh trace 시작 PS C:\Windows\system32> netsh trace start provider=Microsoft-Windows-NDIS-PacketCapture capture=yes Protocol=1 IPv4.DestinationAddress=(8.8.8.8,8.8.4.4) tracefile=D:\trace.etl correlation=disable report=no 추적 구성: ---------..

[PowerShell] Inactive User Removal Tool 스크립트

유용한 스크립트 올려둡니다. #Name: Inactive User Removal Tool #Version: 2020-Nov-25-1 #Author: iseopkim@gmail.com #Description: #마지막으로 로그인한 날짜가 daysInactive보다 이전인 사용자 계정을 disable 상태로 만듭니다. #비활성화한 사용자 목록 리포트가 reportDirectory 폴더 안에 저장됩니다. #배열 변수 searchBase에 OU를 따옴표와 콤마로 구분하여 지정합니다. ######################### Configuration Items ######################### $daysInactive=30 $reportDirectory="D:\" $searchBase=@("OU..

EFI 펌웨어 업데이트 이후 PCI Express 카드 인식 문제

작년에 화면 출력용 델 서버 EFI 펌웨어를 업그레이드 한 이후 Nvidia 그래픽 카드가 인식이 안 되는 문제 (+기존 NIC이 새로운 NIC으로 인식되는 문제)가 생겨서 해결 방법을 적어두었습니다. 윈도우 PCI Express Native Control 기능을 비활성화해서 해결했습니다. bcdedit /set {current} pciexpress forcedisable shutdown /s /t 0

[vCenter] "No connection could be made because the target machine

작년에 Horizon을 사용하는 VDI 시스템의 vCenter Server 콘솔상에서 "No connection could be made because the target machine actively refused it"이라는 오류와 함께 각 ESXi 호스트를 제어하지 못하는 문제를 겪었습니다. 그 때 생각했던 문제 원인과 해결 방법을 정리합니다. Possible cause 1: vCenter workflow manager service Access to the VCSA, then service vmware-vpx-workflow status/restart or shell.set --enabled true shell cd /bin service-control --status vmware-vpx-work..

Non-Microsoft DHCP Relay 환경에서 DHCP request timeout 문제해결

개요 작년에 겪었던 문제인데, VMware Horizon을 활용한 VDI 시스템을 운영하는 곳에서 Master VM Image를 Compose하는 과정에서 반복적으로 일부 클론들에 Agent Communication Failure가 발생하는 문제가 있었습니다. 그래서 Fail된 클론에 들어가서 이벤트 로그를 확인해 보았더니, 공통적으로 아래 로그가 있었습니다. Netlogon - 5719 Group Policy - 1129 DHCP-Client Operational - 50024 구글링 해보니, KB2459530가 나왔습니다. (지금 다시 검색해보니 해당 KB가 검색결과에 노출되지 않는 것 같습니다.) 원인은 윈도우 7 클라이언트가 부팅될 때, Broadcast 플래그를 0으로 세팅한 DHCP-Disco..

[iptables] Dynamic NAT (Pooled NAT)

eth0으로 나가는 내부망 패킷을 외부 공인 IP 주소와 1:1 대응시켜 NAT 하고자 할 때 이렇게 한 줄로 작성이 가능합니다. iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.1-192.168.0.5 -j SNAT --to-source 1.1.1.1-1.1.1.5 iptables는 한마디로 packet classification framework인데, 리눅스 커널 내 netfilter 모듈 제어와 ruleset을 관리하는 소프트웨어입니다. 그런데 이제 nftables가 대체재로써 훨씬 나은 퍼포먼스와 기능을 제공한다고 합니다. 찾아보니 리눅스 커널 3.13부터 새로운 syntax를 사용하는 nft 명령어와 기존 iptables 명령을 nftables 커널 ..

[vCenter] OVF template import via PowerCLI

얼마 전 어느 vSphere 클러스터에서 다른 클러스터로 VM 하나를 복사할 일이 생겼습니다. 이럴 때 VHDX 이미지를 복사하는 것 보다 OVF template를 export하는 것이 옮길 용량도 적어지고, VHDX 스냅샷도 고려할 필요가 없어 편리합니다. 서로 분리된 시스템이라서 외장 드라이브를 통해 옮겼는데, OVF template을 import 할 때 IE에서는 파일이 4GB 이상이면 한 번에 업로드가 되지 않기때문에 PowerCLI 파워셸 모듈을 처음 사용해 보았습니다. 먼저 원본 클러스터에서 내보낼 VM을 선택하고 OVF template를 다운로드 받습니다. .ovf, .mf, .vhdx, .nvram 파일이 다운로드되고, .mf파일에 SHA256 해시값이 있으니 파일들을 검증하면 좋습니다. ..

[PowerShell] 파워셸로 마우스, 키보드 입력 매크로 만들기

마우스와 키보드 입력을 간단한 매크로처럼 활용할 수 있게 해 보았습니다. 쏠쏠하게 잘 활용하고 있습니다^^ mouse_event() Add-Type -Name mouse -Namespace u32 -MemberDefinition '[DllImport("user32.dll")] public static extern void mouse_event(int flag, int x, int y, int a, int b);' $move = 0x0001 $ldn = 0x0002 $lup = 0x0004 $rdn = 0x0008 $rup = 0x0010 $abs = 0x8000 $left_click = $ldn -bor $lup -bor $move -bor $abs $right_click = $rdn -bor $rup ..