Pi-hole에서 Local DNS에 와일드카드 DNS 등록 방법
광고 차단 목적으로 집에서 Pi-hole을 사용 중입니다.
Proxmox로 테스트 + 사용 목적으로 구성해 놓은 서버들은 CNAME으로 NPM(Nginx Proxy Manager) A레코드로 등록 해두고 proxy로 접근해서 Let's Encrypt https로 접근 하도록 해놓은 구성인데요.
이게 매번 등록하는 작업하다보니 아래와 같이 계속 늘어나서 많아지고 있는데 실상 바라봐야 하는 주소는 대부분 NPM주소 하나라 내부에서 사용 하는 도메인에 대해서 와일드 카드를 적용 하고자 합니다.
와일드 카드 등록은 UI상에서 지원하지 않고 conf을 수정하여야 합니다.
등록을 계속 하다보니 엄청 많아졌습니다
우선 Pi-hole 서버로 ssh 접근 후 02-my-wildcard-dns.conf 파일에 원하는 내용을 추가해줍니다. 위치와 방식은 아래와 같습니다.
# 원하는 내용 추가
echo "address=/{사용하고자하는도메인}/{넘길IP주소}" >> /etc/dnsmasq.d/02-my-wildcard-dns.conf
# 서비스 재시작
systemctl restart pihole-FTL
서비스 재시작 후 해당 서버를 DNS로 바라보는 장비에서는 무조건 NPM을 바라보도록 설정되게 됩니다.
ping aaa.redplug.com
ping ttteeesss.redplug.com
이후 등록되지 않은 레코드에 대해서만 해당 IP로 넘어가게되고 별도로 등록한 레코드등은 해당 설정을 따라가게되기 때문에 필요한 레코드만 등록해서 사용 하면 됩니다.
[powershell] PackageManagement\Install-Package : 지정된 검색 조건 및 패키지 이름 'PSWindowsupdate'에 대해 일치하는 항목을 찾을 수 없습니다. 사용 가능한 모든 등록된 패키지 원본을 확인하려면 Get-PSRepository를 사용하세요.
PS C:\Windows\system32> install-module PSWindowsupdate
경고: Unable to resolve package source 'https://www.powershellgallery.com/api/v2'.
PackageManagement\Install-Package : 지정된 검색 조건 및 패키지 이름 'PSWindowsupdate'에 대해 일치하는 항목을 찾을 수 없습니다. 사용 가능한 모든 등록된 패키지 원본을 확인하려면 Get-PSRepository를 사용하세요.
위치 C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:1772 문자:21
+ ... $null = PackageManagement\Install-Package @PSBoundParameters
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Microsoft.Power....InstallPackage:InstallPackage) [Install-Package], Exception
+ FullyQualifiedErrorId : NoMatchFoundForCriteria,Microsoft.PowerShell.PackageManagement.Cmdlets.InstallPackage
TLS 1.2로 변경
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
후 설치진행
키트를 구입해서 책보면서 공부중인데 재미있네요
mariadb 백업 복원
전체 db 백업
mysqldump -uroot --all-databases > backup.sql
전체 나 특정 db 복원
mysql -uaccount -ppassword < backup.sql
mysql -uaccount -ppassword dbname < backup.sql
tomcat에 application-local.properties 적용하기 (Windows)
톰캣 -> bin폴더 -> setenv.bat 파일 생성 -> 하기 입력 -> startup.bat 파일 실행해서 프로파일 확인
set SPRING_PROFILES_ACTIVE=local
NuGet 관련 오류 (PackageManagement\Install-PackageProvider : No match was found for the specified search criteria for the provider 'NuGet'. The package provider requires 'PackageManagement' and 'Provider' tags. Please check if the specified package ..
PS C:\Windows\system32> Install-Module PSSlack -Force
WARNING: Unable to download from URI 'https://go.microsoft.com/fwlink/?LinkID=627338&clcid=0x409' to ''.
WARNING: Unable to download the list of available providers. Check your internet connection.
PackageManagement\Install-PackageProvider : No match was found for the specified search criteria for the provider 'NuGet'. The package provider requires
'PackageManagement' and 'Provider' tags. Please check if the specified package has the tags.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:7405 char:21
+ ... $null = PackageManagement\Install-PackageProvider -Name $script:N ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (Microsoft.Power...PackageProvider:InstallPackageProvider) [Install-PackageProvider], Exception
+ FullyQualifiedErrorId : NoMatchFoundForProvider,Microsoft.PowerShell.PackageManagement.Cmdlets.InstallPackageProvider
PackageManagement\Import-PackageProvider : No match was found for the specified search criteria and provider name 'NuGet'. Try 'Get-PackageProvider -ListAvailable' to
see if the provider exists on the system.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:7411 char:21
+ ... $null = PackageManagement\Import-PackageProvider -Name $script:Nu ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData: (NuGet:String) [Import-PackageProvider], Exception
+ FullyQualifiedErrorId : NoMatchFoundForCriteria,Microsoft.PowerShell.PackageManagement.Cmdlets.ImportPackageProvider
WARNING: Unable to download from URI 'https://go.microsoft.com/fwlink/?LinkID=627338&clcid=0x409' to ''.
WARNING: Unable to download the list of available providers. Check your internet connection.
PackageManagement\Get-PackageProvider : Unable to find package provider 'NuGet'. It may not be imported yet. Try 'Get-PackageProvider -ListAvailable'.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:7415 char:30
+ ... tProvider = PackageManagement\Get-PackageProvider -Name $script:NuGet ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Microsoft.Power...PackageProvider:GetPackageProvider) [Get-PackageProvider], Exception
+ FullyQualifiedErrorId : UnknownProviderFromActivatedList,Microsoft.PowerShell.PackageManagement.Cmdlets.GetPackageProvider
Install-Module : NuGet provider is required to interact with NuGet-based repositories. Please ensure that '2.8.5.201' or newer version of NuGet provider is installed.
At line:1 char:1
+ Install-Module PSSlack -Force
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Install-Module], InvalidOperationException
+ FullyQualifiedErrorId : CouldNotInstallNuGetProvider,Install-Module
PS C:\Windows\system32> [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
PS C:\Windows\system32> Install-PackageProvider -Name NuGet
하기명령어 실행 후 설치 진행
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Install-PackageProvider -Name NuGet
MariaDB Connect Storage Engine 설치 (Windows)
다른 DB연결을 위한 디비링크 플러그인 Connect Storage Engine
MariaDB에서는 10.2 버젼 이후부터 정식적으로 지원 하기 때문에 10.2 버젼 이상 설치를 권장,
https://mariadb.com/kb/en/connect/
Connect VersionIntroducedMaturity
Connect 1.07.0002 | MariaDB 10.5.9, MariaDB 10.4.18, MariaDB 10.3.28, MariaDB 10.2.36 | Stable |
Connect 1.07.0001 | MariaDB 10.4.12, MariaDB 10.3.22, MariaDB 10.2.31, MariaDB 10.1.44 | Stable |
Connect 1.06.0010 | MariaDB 10.4.8, MariaDB 10.3.18, MariaDB 10.2.27 | Stable |
Connect 1.06.0007 | MariaDB 10.3.6, MariaDB 10.2.14, MariaDB 10.1.33 | Stable |
Connect 1.06.0005 | MariaDB 10.3.3, MariaDB 10.2.10, MariaDB 10.1.29 | Stable |
Connect 1.06.0004 | MariaDB 10.3.2, MariaDB 10.2.9, MariaDB 10.1.28 | Stable |
Connect 1.06.0001 | MariaDB 10.3.1, MariaDB 10.2.8, MariaDB 10.1.24 | Beta |
Connect 1.05.0003 | MariaDB 10.3.0, MariaDB 10.2.5, MariaDB 10.1.22 | Stable |
Connect 1.05.0001 | MariaDB 10.2.4, MariaDB 10.1.21 | Stable |
Connect 1.04.0008 | MariaDB 10.2.2, MariaDB 10.1.17 | Stable |
Connect 1.04.0006 | MariaDB 10.2.0, MariaDB 10.1.13, | Stable |
Connect 1.04.0005 | MariaDB 10.1.10 | Beta |
Connect 1.04.0003 | MariaDB 10.1.9 | Beta |
윈도우에서는 별도의 과정없이 플러그인만 설치 하면 설정이 가능하나
리눅스에서는 별도 설치 작업 후 플러그인 인스톨이 필요 함.
https://mariadb.com/kb/en/installing-the-connect-storage-engine/
# CentOS. RHEL
sudo yum install MariaDB-connect-engine
# Debian, Ubuntu
sudo apt-get install mariadb-plugin-connect
# SLES, OpenSUSE
sudo zypper install MariaDB-connect-engine
상기과정을 거친 후 DB에 접속하여 플러그인을 설치 진행하면 완료
# DB로그인
mysql -uroot -p
# 플러그인 설치
INSTALL SONAME 'ha_connect';
# 설치 플러그인 확인
SHOW PLUGINS;
Windows 서버가 한 시간 마다 종료 되는 이슈
Esxi 상에서 테스트 목적으로 기존에 만들어져 있던 윈도우 VM을 켜서 테스트를 진행하는 도중 일정시간이 지나면 VM이 shutdown 되는 증상이 발견되었으며, 해당 증상에 대해서 확인을 해보니 한가지 특이점이 있었습니다.
한시간 마다 서버가 shutdown 되는 증상이었습니다.(...처음에 시간도 생각못해서 꺼지면 켜고 꺼지면 켜고 몇번 반복 했네요..)
확인 해본 사항으로는
esxi쪽 CPU/메모리 부족 : 특이사항 없음
누군가가 끈 흔적(로그 등) : 특이사항 없음
서버 내 스케쥴 : 특이사항 없음
그러던 와중 shutdown 시점에 eventlog에 뭔가 남아있는게 있나 싶어서 찾아봤는데
The process C:\Windows\system32\wlms\wlms.exe (XXXXX) has initiated the shutdown of computer XXXXX on behalf of user NT AUTHORITY\SYSTEM for the following reason: Other (Planned) Reason Code: 0x80000000
계획된 시스템 OFF...?
관련 해서 구글링을 진행하니 하기와 같은 내용을 찾을 수 있었습니다. (라이선스 만료되면 1시간 마다 꺼짐)
After Windows license expires, you will see a similar message as shown below and then VM will auto shutdown every hour.
...테스트 하고 있던 서버도 license Expired 문구가 떠있던 서버었던 터라 라이선스를 넣거나 막을 방법을 찾아야 했고
WLMS(Windows Licensing Monitoring Service)를 OFF시키면 된다는 내용을 확인 했고
하기와 같이 가이드 대로 진행하였습니다.
1. psExec Tools 다운로드 및 압축 해제 : https://learn.microsoft.com/en-us/sysinternals/downloads/psexec
2. 관리자 모드로 cmd 창오픈
3. psexec폴더로 이동 후 psexec -i -s cmd.exe
4. 새로 뜬 커맨드 창에 whoami로 system 계정 확인( WLSM off권한)
5. services.msc로 서비스 창 띄운 후 WLMS 서비스 disabled
6. 실행된 서비스를 멈출 수 없기 때문에 재부팅을 진행후에 실제로 서비스가 stop 되었는지 확인
7. 정상 작동 확인
실제로 상기 작업 진행 후 서버가 재부팅 되지 않음을 확인하였습니다.
새벽에 일어나서 한 시간마다 서버켜는 요상한 짓은 하지 않아도 되게 되었습니다.
다만 상기 방법은 정상인 방법은 아니기 때문에 실 환경에서는 사용하지 않고 테스트 환경에서 급하게 사용이 필요한 경우에 사용하시면 될 것 같습니다.
참고 링크
Tools - Sniffnet
GitHub : https://github.com/GyulyVGC/sniffnet
Link : https://news.hada.io/topic?id=9224&utm\_source=slack&utm\_medium=bot&utm\_campaign=T07SR86Q5
오픈소스 네트워크 트래픽 모니터링 도구로 다양한 플랫폼 지원 (윈도우, 맥, 리눅스)
맥의 경우 Homebrew 지원
brew install sniffnet
윈도우의 경우 Npcap 설치가 필요
지원되는 기능도 상당히 많음(필터링,통계, 실시간 챠트, 도메인 새부 정보, 국가확인, 즐겨찾기,특정 이벤트 알람...)
그외에도 다양한 어플리케이션 계층을 구분해서 지원이 가능하다
현재 기준 버젼은 1.2.0
실행 첫화면, 한글 지원이 가능하고 어뎁터, IP버젼, 프로토콜, 어플리케이션 프로콜을 선택하게 된다. 다중 선택은 불가한걸로 보이나 프로그램 실행이 여러개 실행되기 때문에 여러개의 어뎁터 확인이 필요한 경우 다중 프로그램 실행이 필요
설정 - 알림
임계 값이 초과하면 알람 소리로 알람 가능
설정 - 스타일
스타일은 총 4가지
기본 다크(Yeti Night)
기본 라이트(Yeti Day)
Deep Sea
Mon Amour
설정 - 언어
한국어를 지원한다 한국어를 전체 지원하지 않는다고 하나 사용하는데는 크게 지장은 없어 보인다.
실제 하기 이미지와 통신을 모니터링 할 수 있다
확인하고자 하는 호스트 혹은 프로토콜을 선택 할 경우 Inspect로 넘어가게 됩니다
Inspect
우측의 버튼을 활용해 리포팅도 가능
설정해둠 알람에 따라 알람이 수신
소리는 짧게 울리기 때문에 거슬릴 정도는 아닌것 같습니다.
계속 보고 있는게 아니면 아마 못듣지 않을까 합니다
네트워크 모니터링용으로 심플하게 사용 가능한 툴로 보여집니다.
DNS Query 시 이상한 리턴 값 체크
#아이피 체크 함수
function AlertIP($server="dns.test.com", $queryaddress="www.google.co.kr", $wrongIP="168.126.63.1"){
$result = resolve-dnsname $queryaddress -Type A -Server $server
if($result.IP4Address -eq $wrongIP){
$body = ConvertTo-Json @{
# pretext = "DNS Alert www.google.co.kr"
text = $queraddress "A Record is return " $wrongIP
color = "#142954"
}
# 슬랙 웹훅
try {
Invoke-RestMethod -uri $uriSlack -Method Post -body $body -ContentType 'application/json' | Out-Null
} catch {
Write-Error (Get-Date) ": Update to Slack went wrong..."
}
# 팝업 발생
$msg = New-Object -ComObject WScript.Shell
$msg.POpup("알람", 5, "알람", 48)
}
write-host $Server "IP :" $result.IP4Address
}
#슬랙 웹훅 주소 수정 해서 사용
$uriSlack = "https://hooks.slack.com/services/{GUID}"
# 실제
for(;;) {
get-date
AlertIP "dns1.test.com" "www.google.co.kr" "168.126.63.1"
AlertIP "dns2.test.com"
sleep 10
write-host "===================================="
}