Compare commits

..

10 Commits

21 changed files with 6251 additions and 4820 deletions

View File

@@ -4,17 +4,24 @@
"type": "split", "type": "split",
"children": [ "children": [
{ {
"id": "2c95ff44e043a31b", "id": "014eb71b35a6fc9a",
"type": "tabs", "type": "tabs",
"children": [ "children": [
{ {
"id": "f8c44291f33a3b1e", "id": "c4aa9111db111ae3",
"type": "leaf", "type": "leaf",
"state": { "state": {
"type": "empty", "type": "canvas",
"state": {}, "state": {
"icon": "lucide-file", "file": "2026년 월력형 메모형 일정(2월).canvas",
"title": "새 탭" "viewState": {
"x": 843.7926950945887,
"y": 35711.92111633504,
"zoom": 0.2133333333333335
}
},
"icon": "lucide-layout-dashboard",
"title": "2026년 월력형 메모형 일정(2월)"
} }
} }
] ]
@@ -45,7 +52,7 @@
"state": { "state": {
"type": "search", "type": "search",
"state": { "state": {
"query": "File:당직", "query": "file:당직",
"matchingCase": false, "matchingCase": false,
"explainSearch": false, "explainSearch": false,
"collapseAll": false, "collapseAll": false,
@@ -96,7 +103,7 @@
} }
} }
], ],
"currentTab": 0 "currentTab": 1
}, },
"right": { "right": {
"id": "082cc3168c91951e", "id": "082cc3168c91951e",
@@ -108,7 +115,7 @@
"state": { "state": {
"type": "backlink", "type": "backlink",
"state": { "state": {
"file": "inbox/당직근무간 특이사항.md", "file": "2026년 월력형 메모형 일정(2월).canvas",
"collapseAll": false, "collapseAll": false,
"extraContext": false, "extraContext": false,
"sortOrder": "alphabetical", "sortOrder": "alphabetical",
@@ -163,38 +170,45 @@
"remotely-save:Remotely Save": false "remotely-save:Remotely Save": false
} }
}, },
"active": "f8c44291f33a3b1e", "active": "c4aa9111db111ae3",
"lastOpenFiles": [ "lastOpenFiles": [
"01071921116.md",
"2026년 월력형 메모형 일정(2월).canvas",
"2026-03-04_계량기견적서.md",
"temp_1771983504814.-1331654701_423627128632719.png",
"2026-03-04 케어원 방역업체 서류.md",
"1772583797342.png",
"리눅스에 도커 설치 참고 홈페이지 2026. 3.1.기준.md",
"inbox/당직근무간 특이사항.md",
"inbox/위임보수.md",
"30연대 26년도 예산.md",
"에어컨 재산수입조치.md",
"일일결산.md",
"01028286846.md",
"Resized_20260220_172030(1).jpeg",
"Resized_20260223_114529.jpeg",
"Resized_20260223_114553.jpeg",
"Resized_20260223_114612.jpeg",
"Resized_20260223_114735 1.jpeg",
"Resized_20260223_114735.jpeg",
"예산.md",
"inbox/비밀번호-1.md",
"desktop_hp_obsidian/inbox/비밀번호.md",
"inbox/비밀번호.md",
"탄약.md",
"inbox/사이버 보안 진단의 날 시행.md",
"inbox/사이버보안진단의날.md",
"일일 무기,탄약결산.md",
"gemini_mikrotik_dns_내부접속방법.md",
"육규 471 장비관리 규정.md", "육규 471 장비관리 규정.md",
"2025년 월력형 메모형 일정.canvas", "2025년 월력형 메모형 일정.canvas",
"inbox/당직근무간 특이사항.md",
"점호.md", "점호.md",
"2026년 월력형 메모형 일정(2월).canvas",
"inbox/당직근무간 특이사항-1.md", "inbox/당직근무간 특이사항-1.md",
"30연대 26년도 예산.md",
"desktop_hp_obsidian/inbox/당직근무간 특이사항.md", "desktop_hp_obsidian/inbox/당직근무간 특이사항.md",
"가스검침 직원 전화, 01051901708.md", "가스검침 직원 전화, 01051901708.md",
"일일결산.md",
"일일 무기,탄약결산.md",
"훼손처리 총기.md", "훼손처리 총기.md",
"가스 계량기 교체 협조, 중부 가스 통화.md",
"주유취급소 및 유류탱크저장소 화재사고 예방 점검.md",
"지원과 환경개선.md",
"전투조키(부수기재포함) 수령.md",
"재해재난대비계획.md",
"일일 무기/#.md",
"일일 무기", "일일 무기",
"일일 무기.md",
"일일 무기,탄약 결산.md",
"무제 5.md",
"무제 2.canvas", "무제 2.canvas",
"감찰.md",
"ㄴ.md",
"gitea 첫 동기화 방법.md",
"git 사용법에 대해 자주 사용하는 명령어 위주로 상세옵션까지 포함 설명.md",
"gemini_mikrotik_wireguard_commend.md",
"gemini_mikrotik_wireguard_.md",
"gemini_git_생활코딩_강의_정리.md",
"Excalidraw/Scripts/Downloaded/Mindmap format.svg", "Excalidraw/Scripts/Downloaded/Mindmap format.svg",
"Excalidraw/Scripts/Downloaded", "Excalidraw/Scripts/Downloaded",
"Excalidraw/Scripts", "Excalidraw/Scripts",
@@ -203,7 +217,6 @@
"새로운 7.txt", "새로운 7.txt",
"temp_1764374020200.-1440744867.png", "temp_1764374020200.-1440744867.png",
"새로운 6.txt", "새로운 6.txt",
"temp_1763986624781.-1344914328.jpeg",
"예정공정표-육훈소 영내 누수 보수 (변경)25.11.13_20251113124700 (1).pdf", "예정공정표-육훈소 영내 누수 보수 (변경)25.11.13_20251113124700 (1).pdf",
"출입인원 보고서.pdf", "출입인원 보고서.pdf",
"Taskido/view.css", "Taskido/view.css",
@@ -212,14 +225,7 @@
"무제 파일 2.canvas", "무제 파일 2.canvas",
"무제 1.canvas", "무제 1.canvas",
"캔버스 월력.canvas", "캔버스 월력.canvas",
"Resized_20251127_141040.jpeg",
"temp_1763983212319.144536212.jpeg",
"캔버스월력.canvas", "캔버스월력.canvas",
"files/synology_webdav_server_settings-1.png",
"files/aaee.png",
"files/synology_webdav_server_settings.png",
"files/Screenshot_20250813_065654_KakaoTalk.jpg",
"files/Resized_20250619_180304_1750323802883.jpeg",
"무제 파일 8.canvas" "무제 파일 8.canvas"
] ]
} }

View File

@@ -29,17 +29,34 @@
"state": { "state": {
"file": "2026년 월력형 메모형 일정(2월).canvas", "file": "2026년 월력형 메모형 일정(2월).canvas",
"viewState": { "viewState": {
"x": 1029.9596099897924, "x": 998.2115889504284,
"y": 33354.46281727015, "y": 33335.41400464653,
"zoom": -0.6666666666666665 "zoom": -0.6666666666666665
} }
}, },
"icon": "lucide-layout-dashboard", "icon": "lucide-layout-dashboard",
"title": "2026년 월력형 메모형 일정(2월)" "title": "2026년 월력형 메모형 일정(2월)"
} }
},
{
"id": "2e3d32a51f50a45f",
"type": "leaf",
"state": {
"type": "canvas",
"state": {
"file": "2026년 월력형 메모형 일정(2월).canvas",
"viewState": {
"x": 1182.7839038970546,
"y": 30589.27361135298,
"zoom": -0.9999999999999996
}
},
"icon": "lucide-layout-dashboard",
"title": "2026년 월력형 메모형 일정(2월)"
}
} }
], ],
"currentTab": 1 "currentTab": 2
} }
], ],
"direction": "vertical" "direction": "vertical"
@@ -201,10 +218,11 @@
"bases:새 베이스 생성하기": false "bases:새 베이스 생성하기": false
} }
}, },
"active": "5174113f97a638e5", "active": "2e3d32a51f50a45f",
"lastOpenFiles": [ "lastOpenFiles": [
"2026년 월력형 메모형 일정(1월).canvas", "gemini_mikrotik_dns_내부접속방법.md",
"2026년 월력형 메모형 일정(2월).canvas", "2026년 월력형 메모형 일정(2월).canvas",
"2026년 월력형 메모형 일정(1월).canvas",
"git 일일단위 사용시 오류, 에러등 발생시 조치방법 정리.md", "git 일일단위 사용시 오류, 에러등 발생시 조치방법 정리.md",
"gemini_git_생활코딩_강의_정리.md", "gemini_git_생활코딩_강의_정리.md",
"gitea 첫 동기화 방법.md", "gitea 첫 동기화 방법.md",

1
01028286846.md Normal file
View File

@@ -0,0 +1 @@
![[Resized_20260220_172030(1).jpeg]]

1
01071921116.md Normal file
View File

@@ -0,0 +1 @@
![[Resized_20260223_114735.jpeg]]![[Resized_20260223_114612.jpeg]]![[Resized_20260223_114553.jpeg]]![[Resized_20260223_114529.jpeg]]

BIN
1772583797342.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

View File

@@ -0,0 +1,4 @@
![[1772583797342.png]]
30연대는 사업자번호
AM006
으로 들어가시면됩니다!

View File

@@ -0,0 +1 @@
![[temp_1771983504814.-1331654701_423627128632719.png]]

File diff suppressed because it is too large Load Diff

View File

@@ -24,3 +24,7 @@
# 보온대 # 보온대
1. 2300-2332-302-003-000-000-210-11 1. 2300-2332-302-003-000-000-210-11
2. 26,996,720원 2. 26,996,720원
# 지역상생특식비
1. 46,098,000원
2.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

View File

@@ -0,0 +1,158 @@
# mikrotik을 운영하면서 내부 내트워크에 dns서버를 설치하고 운영하면서 npm을 추가하여 여러개의 도메인을 설정하여 사용하고있음. 그러나 외부에서 도메인으로 접속이 가능하지만 내부에서 도메인을 연결하려 하면 되지 않음. 그 원인을 모르겠고, 몇번 질의를 통해 시도하였으나, 지금까지 되지 않음. 해결할수 있을까?
마이크로틱(MikroTik) 환경에서 외부 접속은 되는데 내부에서 도메인으로 접속되지 않는 현상은 네트워크 엔지니어링에서 매우 전형적인 이슈입니다. 이 문제는 보통 **'Hairpin NAT'** 또는 **'NAT Loopback'**이라고 불리는 메커니즘이 설정되지 않았을 때 발생합니다.
원인과 해결 방법을 단계별로 명확하게 정리해 드릴게요.
---
## 1. 원인: 왜 내부에서는 안 될까?
1. **외부 접속 시:** 외부 사용자 → 공인 IP(MikroTik) → 포트 포워딩 → 내부 서버 (정상)
2. **내부 접속 시:** 내부 사용자 → 도메인 질의(내부 DNS 또는 외부 DNS) → **공인 IP 응답 받음** → 공유기(MikroTik)로 패킷 전송.
3. **문제 발생:** MikroTik은 내부에서 온 패킷이 다시 자신의 공인 IP를 향할 때, 이를 내부 서버로 다시 돌려보내야 한다는 것을 모릅니다. 패킷이 공유기에서 길을 잃거나 차단됩니다.
---
## 2. 해결 방법 1: Hairpin NAT 설정 (가장 확실한 방법)
MikroTik의 방화벽 설정에서 내부에서 공인 IP로 나가는 트래픽을 다시 내부 서버(Nginx Proxy Manager, NPM)로 돌려주는 규칙을 추가해야 합니다.
**터미널(Winbox -> New Terminal)에 아래 명령어를 복사해 넣으세요:**
_(단, `192.168.88.0/24`는 본인의 실제 내부 네트워크 대역으로, `192.168.88.2`는 NPM 서버의 IP로 수정하세요.)_
Bash
```
/ip firewall nat
add chain=srcnat src-address=192.168.88.0/24 dst-address=192.168.88.2 \
protocol=tcp dst-port=80,443 out-interface-list=LAN \
action=masquerade comment="Hairpin NAT for NPM"
```
- **src-address:** 내부 PC들이 속한 IP 대역
- **dst-address:** NPM(Nginx Proxy Manager) 서버의 내부 고정 IP
- **out-interface-list:** 내부 네트워크가 속한 인터페이스 리스트 (보통 `bridge` 또는 `LAN`)
---
## 3. 해결 방법 2: Split-Horizon DNS (내부 DNS 활용)
이미 내부 DNS 서버를 운영 중이시라면, **내부 네트워크 안에서만** 해당 도메인이 공인 IP가 아닌 **NPM 서버의 내부 IP(`192.168.x.x`)를 가리키도록** 설정하는 방법입니다.
1. **내부 DNS 서버(AD, Pi-hole, AdGuard 등) 설정:**
- `example.com`의 A 레코드를 공인 IP가 아닌 **NPM 서버의 내부 IP**로 등록합니다.
2. **장점:** 패킷이 공유기를 거치지 않고 바로 NPM으로 가기 때문에 속도가 빠르고 공유기 부하가 적습니다.
3. **주의사항:** 모든 도메인을 일일이 내부 DNS에 등록해줘야 하며, HTTPS 인증서(Let's Encrypt) 갱신 시 NPM이 포트 80을 통해 외부와 통신하는 데 지장이 없어야 합니다.
---
## 4. 해결 방법 3: MikroTik DNS Static 설정
만약 별도의 DNS 서버 설정이 번거롭다면 MikroTik 자체 DNS 기능을 이용할 수도 있습니다.
1. **IP > DNS > Static** 메뉴로 들어갑니다.
2. 사용 중인 도메인(`example.com`)을 추가하고, Address에 **NPM 서버의 내부 IP**를 적습니다.
3. 내부 PC들의 DNS 서버가 MikroTik IP로 설정되어 있어야 작동합니다.
---
### 추천하는 진행 순서
가장 깔끔한 해결책은 **방법 1(Hairpin NAT)**입니다. 도메인이 늘어나도 일일이 DNS를 수정할 필요가 없고, 외부/내부 어디서든 동일한 방식으로 동작하기 때문입니다.
**지금 바로 시도해 보시겠어요?**
사용 중인 **내부 네트워크 대역(예: 192.168.1.0/24)**과 **NPM 서버의 내부 IP**를 알려주시면, 귀하의 환경에 딱 맞는 스크립트를 짜 드릴 수 있습니다.
---
---
# 그래도 접속이 안되
Hairpin NAT 설정이나 DNS 설정을 시도했음에도 여전히 접속이 안 된다면, **MikroTik의 방화벽 규칙 순서**나 **Bridge 설정**, 또는 **NPM(Nginx Proxy Manager) 자체의 수신 차단** 문제일 가능성이 높습니다.
문제를 확실히 해결하기 위해 아래 **4가지 체크포인트**를 순서대로 점검해 보세요.
---
### 1. MikroTik NAT 규칙의 '순서' 확인 (매우 중요)
MikroTik에서 방화벽 규칙은 **위에서 아래로** 실행됩니다. 만약 일반적인 `masquerade` 규칙이 Hairpin NAT 규칙보다 위에 있으면 작동하지 않을 수 있습니다.
- **확인법:** `IP > Firewall > NAT` 탭에서 **Hairpin NAT 규칙을 맨 위(0번 또는 1번)**로 드래그해서 올려보세요.
- **이유:** 일반 인터넷 공유 규칙이 먼저 가로채기 전에 특정 내부 트래픽을 먼저 가로채서 처리해야 하기 때문입니다.
---
### 2. Bridge Settings에서 'Use IP Firewall' 체크
MikroTik은 기본적으로 브리지(내부 포트들) 간의 통신을 L2(레이어 2)에서 처리합니다. Hairpin NAT는 L3(IP 레벨) 규칙이므로, 브리지 통신도 방화벽을 거치게 설정해야 할 때가 있습니다.
- **설정 경로:** `Bridge` -> `Settings` -> **`Use IP Firewall`** 항목에 체크가 되어 있는지 확인하세요.
- (이미 체크되어 있다면 그대로 두시고, 안 되어 있다면 체크 후 테스트해 보세요.)
---
### 3. NPM 서버가 '게이트웨이'를 MikroTik으로 보고 있는가?
내부 서버(NPM)가 응답을 보낼 때, 요청이 들어온 경로로 되돌려 보내야 합니다.
- NPM 서버의 **기본 게이트웨이(Default Gateway)**가 MikroTik의 내부 IP(예: `192.168.88.1`)로 정확히 잡혀 있는지 확인하세요.
- NPM 서버 자체 방화벽(Ubuntu의 ufw 등)에서 내부 대역폭의 80, 443 포트 접근을 허용하고 있는지 확인하세요.
---
### 4. '가장 확실한' Hairpin NAT 스크립트 재적용
기존에 입력하신 규칙이 복잡하다면, 가장 단순하고 강력한 아래 방식을 터미널에 입력해 보세요. (IP 대역만 본인 환경에 맞게 수정하세요)
Bash
```
# 1. 내부에서 공인IP로 들어오는 요청을 NPM으로 토스 (DST-NAT)
/ip firewall nat
add chain=dstnat dst-address-type=local protocol=tcp dst-port=80,443 \
src-address=192.168.0.0/16 action=dst-nat to-addresses=NPM서버IP
# 2. 돌아가는 패킷이 길을 잃지 않게 주소 변환 (SRC-NAT)
add chain=srcnat src-address=192.168.0.0/16 dst-address=NPM서버IP \
protocol=tcp dst-port=80,443 action=masquerade
```
> **참고:** `192.168.0.0/16`은 `192.168.x.x` 전체 대역을 포함하므로 안전합니다.
---
### 마지막으로 확인해 주세요
지금 접속을 시도할 때 어떤 **에러 메시지**가 뜨나요?
1. **"연결 거부(Connection Refused)"**: 포트는 찾았으나 NPM에서 거절함 (NPM 설정 문제)
2. **"응답 시간 초과(Timeout)"**: 패킷이 아예 목적지를 못 찾음 (MikroTik NAT/방화벽 문제)
3. **"DNS를 찾을 수 없음"**: 도메인 자체가 IP로 변환이 안 됨 (DNS 서버 문제)
**에러 메시지나 현재 MikroTik의 `IP > Firewall > NAT` 설정 화면을 텍스트로 복사해 주시면 더 정확한 진단이 가능합니다.** 어떤 에러가 뜨나요?

View File

@@ -38,3 +38,5 @@
# 본부중대 여성편의시설 전기,수도 확인 # 본부중대 여성편의시설 전기,수도 확인
상담관,행보관 상담관,행보관

View File

@@ -10,4 +10,27 @@
1. 12교육대 통합막사 기와 파손 보수,150,000천원 1. 12교육대 통합막사 기와 파손 보수,150,000천원
## 검토사업 ## 검토사업
1. 도로하부 유실 부분 보수 20,000천원 1. 도로하부 유실 부분 보수 20,000천원
2.
# 2026.2.20
1. 1분기 위임보수 승인내역(설계중)
1. 30-1,3 교육대 오수배관 보수1200만원
1. 1,2(오수배관?)/9,10중대(주물오수배관) 화장실
2. 30연대 중대 행정반 화장실 보수(3개소)3천만원
1. 1,5,9중대 화징실
2. 자재비만 받아서? 우리가?
3. 재재비
3. 30-1교 외부지붕기와보수150만원(px근처)
2. 계획보수
1. 30연대 노후위생시설보수(24000만원)2작사 설계용역 계약 대기중
1. 측면화장실(1교)
# 참고자료
1. 화장실 대보수 화장실 리모델링 : 8개소
1. 1교:측면화장실 4개소 26년도 시공
2. 3교:측면화장실 4개소 27년도 시공
2. 안전관련 개선 소요: 임시,몰딩자재활용 상단프레임과 원형천장 연결부분 마감조치
1. 1교 중앙, 3교 중앙 화장실(천장, 상단프레임)
# 기타
1. 1교육대 자살시도자 발생으로 화장실 천정 시도 못하게 보완

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

View File

@@ -0,0 +1,25 @@
https://floor5th.tistory.com/100
https://www.scbyun.com/710766
https://buildabetterworld.tistory.com/179
https://docs.docker.com/engine/install/ubuntu/#install-using-the-convenience-script
https://velog.io/@agnusdei1207/Portainer-ce
https://betwe.tistory.com/entry/Docker-Portainer%EB%B3%B4%EB%8B%A4-%EC%98%88%EC%81%98%EB%8B%A4-Docker-Compose-%EA%B4%80%EB%A6%AC%EC%9D%98-%ED%98%81%EB%AA%85-Dockge-%EC%99%84%EB%B2%BD-%EB%B6%84%EC%84%9D
https://www.sangchul.kr/797
https://blog.jackerlab.com/2025-open-source-docker-self-hosted-projects-guide/
https://upsd.co.kr/%ec%8b%9c%eb%86%80%eb%a1%9c%ec%a7%80-%ec%bb%a4%eb%ae%a4%eb%8b%88%ed%8b%b0-%ec%95%b1-%ec%b6%94%ec%b2%9c-%ec%a1%b0%ed%95%a9%ea%b3%bc-%eb%8f%84%ec%bb%a4-%eb%b9%84%ea%b5%90/
https://news.hada.io/topic?id=25757
https://www.44bits.io/ko/post/easy-deploy-with-docker
https://gall.dcinside.com/mgallery/board/view/?id=svr&no=15053
https://dietpi.com/blog/?cat=41

View File

@@ -176,4 +176,8 @@
2. 어디있지?, 언제 받았지? 2. 어디있지?, 언제 받았지?
2. 설연휴전 무기고 자물쇠 봉인지 부착 2. 설연휴전 무기고 자물쇠 봉인지 부착
3. 오늘 주임원사실, 연대장실 들어가서 온갖 애기를 들음, 주임원사실에서는 주임원사가 특별 참모이고, 지원과도 참보부다. 라고 애기함.연대장실에서는 그냥 무조건 실수하지 않고 더 열심히 하겠다고만 애기함.나도 모르게 몸이 경직되고, 군기가 바짝 들어지고 경직되었음.참 약자라고 생각하기는 싫지만 약자로 살기에는 세상이 너무 힘듬. 3. 오늘 주임원사실, 연대장실 들어가서 온갖 애기를 들음, 주임원사실에서는 주임원사가 특별 참모이고, 지원과도 참보부다. 라고 애기함.연대장실에서는 그냥 무조건 실수하지 않고 더 열심히 하겠다고만 애기함.나도 모르게 몸이 경직되고, 군기가 바짝 들어지고 경직되었음.참 약자라고 생각하기는 싫지만 약자로 살기에는 세상이 너무 힘듬.
4.
# 2026.2.23.(월)
1. 한시인가 급식인원 소요끼니별 파악 하루종일했다.
2. 사무실 바닥 닦고, 코팅제 발랐다.
3. 카풀인원 추어탕 먹었다.(수송행보관님 박성록 원사님 이번주 직보반 가시기전 마지막 환송)