104 lines
3.7 KiB
Markdown
104 lines
3.7 KiB
Markdown
# TailRescue 운영 Runbook
|
|
|
|
## 산출물 관리
|
|
|
|
- Git: 소스/문서/스크립트/스킬만 저장
|
|
- ISO: Gitea Release attachment 또는 내부 artifact path에 저장
|
|
- 현재 i386 ISO hash: `71e00ab650f177d62295da66b8c7323d95150621ab3a0e7d60c94a39bb8c8173`
|
|
|
|
## 빌드
|
|
|
|
```bash
|
|
./scripts/headscale-create-preauth.sh
|
|
cp templates/rescue.env.example rescue.env
|
|
cp templates/authorized_keys.example templates/authorized_keys
|
|
# rescue.env에는 현장용 preauth key/password를 넣고, authorized_keys에는 공개키만 넣는다.
|
|
./scripts/build-live-iso.sh
|
|
```
|
|
|
|
## 검증
|
|
|
|
```bash
|
|
cp /root/tailrescue-dist/$(cat /root/tailrescue-dist/latest.txt) /var/lib/vz/template/iso/tailrescue-headscale-test.iso
|
|
./scripts/test-proxmox-vm.sh
|
|
ssh rescue@100.64.x.y 'echo SSH_OK; sudo -n true; rescue-status; list-disks'
|
|
```
|
|
|
|
## 현장
|
|
|
|
- Ventoy USB에 ISO 복사
|
|
- 대상 PC에서 ISO 선택 후 Enter
|
|
- Headscale node list에서 `tailrescue-*` 확인
|
|
- `ssh rescue@100.64.x.y`
|
|
- `sudo mount-ntfs-ro /dev/sdXN /mnt/windows`
|
|
|
|
## 장애 대응
|
|
|
|
- Headscale에 노드가 안 뜸: DHCP/NIC/firmware/케이블 확인, `ip -br a`, `journalctl -u tailrescue-firstboot`
|
|
- SSH가 안 됨: `systemctl status ssh`, `/var/log/auth.log`, `id rescue`, `sudo passwd -S rescue`
|
|
- 내장 NIC 미인식: Realtek RTL8153/RTL8156 또는 ASIX AX88179 USB LAN 동글 사용
|
|
|
|
|
|
## Gitea Release 산출물
|
|
|
|
Verified PoC ISO is published as a Gitea Release attachment:
|
|
|
|
- Release: https://git.0bin.in/thug0bin/tailrescue-headscale-iso/releases/tag/v0.1.0
|
|
- ISO: https://git.0bin.in/thug0bin/tailrescue-headscale-iso/releases/download/v0.1.0/tailrescue-headscale-20260601-1842.iso
|
|
- SHA256SUMS: https://git.0bin.in/thug0bin/tailrescue-headscale-iso/releases/download/v0.1.0/SHA256SUMS
|
|
|
|
Download and verify:
|
|
|
|
```bash
|
|
curl -fL -O https://git.0bin.in/thug0bin/tailrescue-headscale-iso/releases/download/v0.1.0/tailrescue-headscale-20260601-1842.iso
|
|
curl -fL -O https://git.0bin.in/thug0bin/tailrescue-headscale-iso/releases/download/v0.1.0/SHA256SUMS
|
|
sha256sum -c SHA256SUMS
|
|
```
|
|
|
|
Release upload pattern for future builds:
|
|
|
|
```bash
|
|
curl -H "Authorization: token $GITEA_TOKEN" -F "attachment=@tailrescue-headscale-YYYYMMDD-HHMM.iso" "https://git.0bin.in/api/v1/repos/thug0bin/tailrescue-headscale-iso/releases/<release_id>/assets?name=tailrescue-headscale-YYYYMMDD-HHMM.iso"
|
|
```
|
|
|
|
Do not commit ISO files into Git.
|
|
|
|
Note: the repository is public so Release attachments can be downloaded without authentication. Do not commit secrets or field-specific `rescue.env`; rotate preauth keys per build.
|
|
|
|
|
|
|
|
## 오래된 산업용 PC 원격 드라이버 조사 플로우
|
|
|
|
목표: Windows에서 NIC 드라이버가 없어 네트워크가 안 되는 장비를 TailRescue i386 ISO로 부팅한 뒤, Linux의 폭넓은 NIC/firmware 지원으로 Tailnet SSH를 확보하고 하드웨어 정보를 수집해 Windows용 드라이버를 찾는다.
|
|
|
|
1. Ventoy/iVentoy에서 `tailrescue-headscale-i386-240h-20260601-2312.iso`로 부팅한다.
|
|
2. Headscale/CT909에서 `tailrescue-*` 노드와 Tailnet IP를 확인한다.
|
|
3. CT909에서 접속한다.
|
|
|
|
```bash
|
|
ssh rescue@100.64.x.y
|
|
rescue-status
|
|
list-disks
|
|
```
|
|
|
|
4. 하드웨어/드라이버 식별 정보를 수집한다.
|
|
|
|
```bash
|
|
sudo lspci -nnk
|
|
sudo lspci -nn | grep -Ei 'ethernet|network|wireless|serial|vga|display|storage|sata|raid'
|
|
sudo lsusb
|
|
sudo dmidecode -t system -t baseboard -t bios
|
|
ip -br link
|
|
ethtool -i <nic>
|
|
```
|
|
|
|
5. PCI ID 예: `8086:10d3`, `10ec:8168` 기준으로 Windows 버전별 드라이버를 찾는다.
|
|
6. Windows 파티션은 기본 read-only로 확인한다.
|
|
|
|
```bash
|
|
sudo mkdir -p /mnt/windows
|
|
sudo mount-ntfs-ro /dev/sdXN /mnt/windows
|
|
```
|
|
|
|
주의: rescue 노드에서 내부 Tailnet 전체로 접근하는 권한은 주지 않고, admin 노드에서 rescue로 들어가는 방향만 허용한다.
|