
nmlinux v1.7.11
Linux용 통합 네트워크 툴킷 — Python 3 + PySide6
NMLinux · v1.7.12
Linux 및 macOS용 통합 네트워크 툴킷 — 검사, 연결, 진단.
NMLinux는 29개의 네트워크 모듈을 하나의 창에 통합한 단일 GUI입니다: 인터페이스 모니터링, Wi-Fi, DNS, SSH 터미널, 방화벽 뷰어, 토폴로지 맵, traceroute 등이 포함됩니다. Python과 PySide6(Qt 6)로 처음부터 구축되었으며, 8개 인터페이스 언어를 지원하고 표준 시스템 도구 외에는 외부 의존성이 없습니다.
[!NOTE] NMLinux는 Linux 시스템 데몬
/usr/bin/NetworkManager(Red Hat/GNOME의 NetworkManager)와 관련이 없습니다. NMLinux는 Python과 PySide6로 처음부터 구축된 독립 프로젝트입니다.
Claude Code(Anthropic)와 저자의 기여로 제작되었습니다.
개발 프로세스
NMLinux는 AI 지원 — 특히 Claude Code — 으로 구축되었으며, 이는 이 저장소 어디에도 숨겨져 있지 않습니다. 오늘날 거의 모든 진지한 소프트웨어 프로젝트는 명시하든 않든 파이프라인 어딘가에서 AI를 사용합니다. 따라서 "AI가 관여했는가"는 흥미로운 질문이 아닙니다. 흥미로운 질문은: AI가 무언가를 잘못했을 때 그것을 잡아내는 것이 있는가입니다.
제 말을 믿기보다 직접 확인하고 싶다면, 다음이 그 역할을 합니다:
- 162개 테스트 —
pytest tests/ -v. 순수 로직과 소수의 실제 Qt 위젯 테스트(메뉴, 테이블)로 구성되며, 흥미로운 부분을 mock으로 대체하지 않습니다. docs/Decisions-Techniques.md— 명확하지 않은 모든 기술적 결정, 거부된 대안, 그리고 발견되어 수정된 버그(AI가 유발한 것 포함)와 그 근거가 기록되어 있습니다.docs/Architecture.md및docs/Carte-des-Modules.md— 출시되는 것과 동기화된 실제 코드 구조.- i18n 일관성 검사 — 릴리스 전마다 실행되어 8개 지원 언어에서 누락된 번역 키를 찾아냅니다.
이러한 것들이 존재하는 이유는 AI를 신뢰할 수 없기 때문이 아닙니다. 검증 프로세스 없이는 어떤 것도 출시되어서는 안 되기 때문입니다 — 직접 작성한 코드도 포함해서 말입니다. 출력물과 검증 방식을 판단하세요. 작성에 도움을 준 도구가 아니라.
그래도 버그를 찾았나요? 그건 부끄러운 일이 아니라 유용한 일입니다 — 이슈를 열어주세요.
커뮤니티
GitHub Discussions이 열려 있습니다 — 피드백을 공유하고, 아이디어를 보고하고, 질문하거나, 인사만 건네도 됩니다. 저자는 인프라 및 운영 분야에서 30년 이상의 경력을 가지고 있으며, 좋고 무료이며 간단한 소프트웨어가 Linux에도 존재해야 한다는 생각으로 이 도구를 만들었습니다.
스크린샷
Linux 스크린샷은 v1.2.7 기준 — macOS 스크린샷은 v1.3.5 기준. 현재 앱은 29개 모듈과 8개 인터페이스 언어(FR/EN/ES/DE/IT/PT/JA/ZH)를 지원합니다.
Linux (KDE)
| Dashboard | 토폴로지 |
|---|---|
![]() | ![]() |
| Traceroute | Wi-Fi |
|---|---|
![]() | ![]() |
macOS
| Dashboard | Traceroute |
|---|---|
![]() | ![]() |
변경 로그
v1.7.12 — 2026-08-12
- Traceroute — 수정: Flatpak(v1.7.11, 아래 참조 — 현재 제거됨)에서
traceroute가 호스트에 실제traceroute바이너리가 설치되지 않았음에도 호스트 shim을 통해 항상PATH에서 확인되어, 워커가tracepath로 폴백하지 못하고 홉 없이 즉시 완료되며 오류도 표시되지 않았습니다. 이제traceroute가 파싱 가능한 출력을 전혀 생성하지 않으면 실패 이유와 관계없이tracepath로 폴백합니다. - SSH 터미널 — askpass 수정:
DISPLAY/WAYLAND_DISPLAY가 설정된 경우(모든 GUI 세션) ssh에 깨끗한 tty가 없으면 임베디드 터미널 대신$SSH_ASKPASS를 사용해 비밀번호 프롬프트를 시도할 수 있습니다 — askpass 헬퍼가 설치되지 않으면 인증이 조용히 실패합니다. 이제SSH_ASKPASS_REQUIRE=never가 비밀번호 프롬프트가 항상 터미널 자체를 통해 진행되도록 강제합니다. - Flatpak 패키징 제거: v1.7.11에 포함된 로컬 KDE Linux 매니페스트는 중단되었습니다. 위의 SSH 비밀번호 프롬프트 버그를 조사하면서 커널 수준 제한이 드러났습니다:
flatpak-spawn --host를 통해 중계된 프로세스는 전달된 pty의 제어 터미널 소유자가 될 수 없습니다(TIOCSCTTY가EPERM으로 거부됨 — 다른 무관한 세션이 이미 소유하고 있음; 이는 의도적인 커널 보안 경계이며 버그가 아닙니다). 유일한 해결 방법(script, 새 pty 할당)은 비밀번호 프롬프트를 수정하지만 해당 세션의 실시간 터미널 크기 전파를 깨뜨립니다 — Flatpak을 아예 제공하지 않는 것보다 더 나쁜 절충으로 판단되었습니다. AUR과 AppImage가 향후 지원되는 Linux 설치 경로입니다.
v1.7.11 — 2026-08-03
- Flatpak 패키징(KDE Linux):
packaging/flatpak/아래의 로컬 빌드 매니페스트가 KDE Linux 및 기타 Flatpak 전용 배포판을 대상으로 합니다. nmlinux가 외부로 호출하는 호스트 CLI 도구(nmcli,pkexec,mount.cifs,ssh,nmap, …)는 각각을 샌드박싱하는 대신PATH의flatpak-spawn --hostshim을 통해 브리지됩니다; PySide6는 PyPI 휠이 아닌 Flathub의io.qt.PySide.BaseApp에서 가져옵니다. Flathub에는 게시되지 않습니다 — AppImage가 이미 그런 것처럼packaging/flatpak/build-bundle.sh로 단일.flatpak번들이 빌드되어 각 릴리스에 첨부됩니다. v1.7.12에서 중단됨 — 위 참조.
v1.7.10 — 2026-08-03
- SSH 터미널 — 수정: 세션이 시작될 때 터미널 위젯의 실제 크기가 아직 알려지지 않아 PTY가 잘못된(기본 24×80) 크기로 시작되어 크기 조정 요청이 조용히 유실되는 경쟁 조건을 수정했습니다. 이로 인해 원격 전체 화면 앱(예: Claude Code CLI, htop, vim)이 실제 창 크기와 동기화되지 않아 화면 하단에 새 출력이 지나가면서만 지워지는 오래된/잔여 텍스트가 남았습니다. 사용자가 보고했으며 실제 대화형 세션으로 재현되었습니다
v1.7.9 — 2026-08-02
- SSH 터미널 — 복사/붙여넣기: 마우스로 텍스트 선택(클릭-드래그, 강조 표시),
Ctrl+Shift+C또는 오른쪽 클릭 메뉴로 복사;Ctrl+Shift+V(기존)로 붙여넣기. 이전에는 텍스트 선택 자체가 없어 복사가 불가능했습니다 - SSH 터미널 — 다중 동시 세션: SSH 페이지는 이제 단일 공유 세션 대신 각 연결을 자체 탭에서 엽니다. 저장된 연결에 재연결하면 — 동일한 연결을 두 번이라도 — 활성 세션이 작동하는 대체 세션 없이 종료되곤 했습니다; 이제 모든 연결 작업은 새롭고 독립적인 탭을 엽니다
v1.7.8 — 2026-07-14
- Speed Test — 새 LAN(iperf3) 탭: 기존 인터넷 속도 테스트와 함께, 새 탭은 번들된 공용 서버 목록(26개국) 또는 저장된 사용자 지정 서버(예: 내부 조직 서버)를 대상으로 클라이언트 전용
iperf3테스트를 실행합니다. TCP/UDP, IPv4/IPv6/자동, 역방향(다운로드) 방향을 지원하며 UDP 테스트에는 지터/손실이 표시됩니다. 이슈 #6에서 제안됨 - 새 선택적 의존성:
iperf3— LAN 탭을 활성화하려면 설치하세요; 탭은 배너를 표시하고 그렇지 않으면 비활성 상태로 유지됩니다
v1.7.6 — 2026-07-05
- Asset Inventory — 오른쪽 클릭 새로고침: 이미 스캔된 하나 이상의 행(다중 선택 지원)을 오른쪽 클릭하고 "선택 항목 새로고침"을 선택하여 전체 네트워크 스캔을 다시 실행하는 대신 해당 호스트만 제자리에서 다시 스캔합니다
- Asset Inventory — SSH 인증 실패 피드백: 거부된 SSH 로그인은 이제 조용히 실패하는 대신 "SSH 인증 실패"를 표시하며, Nmap으로 감지된 호스트명/OS 기준 정보를 잃지 않습니다 — 다른 구성된 자격 증명 세트가 먼저 시도된 후 DSM의 Auto Block이 올바른 비밀번호를 거부한 실제 Synology NAS에서 확인됨
v1.7.5 — 2026-07-04
- Ping Monitor — 저장된 대상 디렉터리: 새 왼쪽 패널에서 핑 대상을(이름, 호스트, 간격) 영구 목록에 저장할 수 있어, 모니터링 중인 호스트가 앱 재시작 후에도 유지되어 다시 입력할 필요가 없습니다. 각 활성 모니터링 행의 ★ 버튼은 세션 중 언제든지 해당 호스트를 디렉터리에 저장합니다 — 앱이 예기치 않게 종료되기 전에 미리 계획할 필요가 없습니다
- Ping Monitor — "모니터링 시작": 저장된 대상을 선택하고 저장된 간격을 재사용하여 한 번의 클릭으로 모니터링을 시작합니다
v1.7.4 — 2026-07-04
- Asset Inventory — 일관되지 않은 스캔 결과 수정: 활성 검사가 재시도 없는 단일 1초 타임아웃 핑을 보내, 스캐너 자체의 동시 부하(최대 40개 호스트 동시 프로빙) 또는 Wi-Fi 호스트가 비콘 사이에 잠시 절전 상태일 때 실제 장치를 놓칠 수 있었습니다 — 동일한 범위를 반복 실행할 때 다른 장치 수를 반환한 실제 서브넷에서 실시간으로 확인됨. 이제 검사는 TCP 포트 프로브로 폴백하기 전에 핑을 재시도합니다
- Asset Inventory — 새 "빈 항목 새로고침" 버튼: 스캔 후 전체 범위를 다시 스캔하는 대신 데이터를 반환하지 않은 IP만 다시 스캔합니다; 새로 발견된 호스트는 기존 결과에 병합됩니다
v1.7.3 — 2026-07-03
- SMB — 오른쪽 클릭 메뉴에서 공유 마운트: SMB 탭에서 공유를 오른쪽 클릭하고 마운트/마운트 해제를 선택하여 안정적인 로컬 경로(
~/mnt/<host>_<share>)에 마운트합니다 — 터미널 및 다른 앱에서 사용 가능한 일시적이지 않은 탐색 보기가 아닙니다. 세션 전용(fstab/systemd 영속성 없음), 자격 증명은 기존 사용자/비밀번호 필드에서 재사용됩니다. Linux는 제한된 권한의 자격 증명 파일(ps로 노출되지 않음)과 함께pkexec mount -t cifs를 사용합니다; macOS는mount_smbfs를 직접 사용합니다. 서버가 기본 협상을 거부할 때(오래된 NAS 장치에서 흔함) 이전 SMB 버전(vers=2.0)으로 자동 재시도합니다 — 두 시도 모두 전용 헬퍼 프로세스를 통해 단일 인증 프롬프트에서 발생합니다 - 새 선택적 의존성: SMB 마운트용
cifs-utils(Linux); macOS에는 내장됨





