# 무엇이든 라우터로 만드는 방법

> Clean Markdown view of GeekNews topic #28025. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=28025](https://news.hada.io/topic?id=28025)
- GeekNews Markdown: [https://news.hada.io/topic/28025.md](https://news.hada.io/topic/28025.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2026-03-31T09:41:33+09:00
- Updated: 2026-03-31T09:41:33+09:00
- Original source: [nbailey.ca](https://nbailey.ca/post/router/)
- Points: 29
- Comments: 1

## Summary

**이더넷 포트 2개**만 있으면 어떤 컴퓨터든 라우터로 만들 수 있다는 가이드입니다. Debian에 `hostapd`, `dnsmasq` 몇 개 설치하고 nftables로 방화벽을 잡으면 상용 라우터 수준의 기능이 구현됩니다. 집에 굴러다니는 미니 PC나 노트북도 활용할 수 있고, USB-Ethernet 동글로 포트를 보충할 수도 있고요. 글쓴이는 실제로 **패시브 쿨링 미니 PC**로 수년간 안정적으로 운용해왔다고 합니다. 네트워크가 실제로 어떻게 동작하는지 이해하는 데도 좋은 실습이고, 셀프 호스팅에 관심 있는 분이라면 인프라의 첫 단추로 시도해볼 만합니다.

## Topic Body

- **일반 컴퓨터나 미니 PC**를 활용해 완전한 라우터를 구성하는 절차를 단계별로 정리
- **Debian 또는 Alpine Linux** 환경에서 `hostapd`, `dnsmasq`, `bridge-utils` 등 최소 패키지로 유·무선 네트워크를 구성
- **이더넷 인터페이스 2개**만 있으면 데스크탑, 노트북, SBC 등 어떤 장비도 라우터로 전환 가능
- **방화벽(nftables)**, **DHCP/DNS 서비스**, **IP 포워딩** 설정을 통해 상용 라우터 수준의 기능 구현
- 폐기 하드웨어와 오픈소스만으로 **안정적이고 유연한 네트워크 인프라**를 구축할 수 있음

---

### 어떤 기기든 라우터로 만드는 방법
- 미국 정부의 **소비자용 라우터 수입 금지 조치** 이후, 기존 하드웨어를 활용해 직접 라우터를 구성하는 방법을 소개
- **Linux 기반 미니 PC**를 이용해 수년간 안정적으로 라우터를 운용한 경험을 바탕으로, 필요한 구성과 설정 절차를 단계별로 정리
- 라우터는 본질적으로 **일반 컴퓨터와 동일한 구조**이므로, 데스크탑·노트북·SBC 등 다양한 장비로 구현 가능
- Debian 또는 Alpine Linux 환경에서 **hostapd, dnsmasq, bridge-utils** 등 최소 패키지로 구성
- 목적은 정책 대응이 아니라, **기존 하드웨어의 재활용과 네트워크 이해도 향상**에 있음

### 하드웨어 선택
- **패시브 쿨링 미니 PC**가 이상적이지만, **이더넷 인터페이스 2개**만 있으면 어떤 장비도 사용 가능
  - USB-Ethernet 동글로 보완 가능하며, 신뢰성은 다소 떨어지지만 충분히 동작
- 예시로 **Celeron 3205U 듀얼코어(1.5GHz)** 장비는 유선 820~850Mbps, 무선 약 300Mbps 처리 가능
- 과거에는 **ThinkPad T60**, **ExpressCard-PCIe 브리지**, **Cisco 2960 스위치**, **D-Link 라우터(AP 전용)** 등 폐기 부품으로 구성
  - 외형은 조잡하지만 완전한 라우터로 동작

### 네트워크 구성
- 인터페이스 구성
  - `eth0`: WAN
  - `eth1`: LAN (유선)
  - `wlan0`: LAN (무선)
- 유·무선 LAN은 **브리지(bridge)** 로 묶어 동일 네트워크로 동작
- 추가 LAN 포트가 필요하면 USB-Ethernet 동글을 추가해 브리지에 연결 가능
- 운영체제는 **Debian Linux**, 필수 구성 요소는 다음과 같음
  - `hostapd`: Wi-Fi 네트워크 생성
  - `dnsmasq`: DNS 및 DHCP 서비스
  - `bridge-utils`: 포트 브리징

### 설치 및 초기 설정
- BIOS/UEFI 설정
  - PXE 네트워크 부팅 비활성화
  - USB/PCI 전원 관리 비활성화
  - “AC 전원 복구 후 자동 부팅” 옵션 활성화
  - 디스플레이 미연결 시 부팅 문제 해결용 **HDMI 더미 동글** 사용
- 일부 하드웨어는 **non-free-firmware 저장소** 활성화 필요
- 무선 칩셋별 펌웨어 설치
  - Intel: `firmware-iwlwifi`
  - Realtek: `firmware-ath9k-htc`
  - 구형 Atheros: `firmware-atheros`

### 필수 패키지 설치
- 다음 명령으로 주요 유틸리티 설치
  ```
  sudo apt install bridge-utils hostapd dnsmasq
  ```
- 전체 시스템 패키지는 약 250개 수준

### 네트워크 인터페이스 이름 고정
- 최신 Linux는 `enp0s31f6` 형태의 이름을 사용하지만, **전통적 ethX 형식**으로 고정 가능
- `/etc/systemd/network/10-persistent-ethX.link` 파일 생성
  ```
  [Match]
  MACAddress=AA:BB:CC:DD:00:11
  [Link]
  Name=ethX
  ```

### 무선 네트워크 생성
- USB Wi-Fi 동글을 **액세스 포인트(AP)** 로 설정
- `/etc/hostapd/hostapd.conf` 예시
  ```
  interface=wlan0
  bridge=br0
  hw_mode=g
  channel=11
  ssid=My Cool and Creative Wi-Fi Name
  wpa_passphrase=mysecurepassword
  ```
- `hostapd` 서비스 활성화
  ```
  sudo systemctl unmask hostapd
  sudo systemctl enable --now hostapd
  ```

### 인터페이스 설정
- `/etc/network/interfaces` 구성
  ```
  allow-hotplug eth0
  allow-hotplug eth1
  auto wlan0
  auto br0
  iface eth0 inet dhcp
  iface br0 inet static
  bridge_ports eth1 wlan0
  address 192.168.1.1/24
  ```
- 재부팅 후 `brctl show br0` 명령으로 브리지 상태 확인

### IP 포워딩 활성화
- `/etc/sysctl.d/10-forward.conf` 파일에 추가
  ```
  net.ipv4.ip_forward=1
  ```
- 적용
  ```
  sudo systemctl restart systemd-sysctl.service
  ```

### 방화벽 및 NAT 설정
- **nftables** 기반 구성(`/etc/nftables.conf`)
  - 외부 트래픽 차단
  - 내부 DNS, DHCP, SSH 허용
  - NAT 수행
- 서비스 활성화
  ```
  sudo systemctl enable nftables.service
  ```

### DHCP 및 DNS 설정
- `dnsmasq` 사용(`/etc/dnsmasq.conf`)
  ```
  interface=br0
  dhcp-range=192.168.1.50,192.168.1.250,255.255.255.0,6h
  dhcp-option=option:router,192.168.1.1
  dhcp-option=option:dns-server,192.168.1.1
  cache-size=10000
  ```
- 서비스 활성화
  ```
  sudo systemctl enable dnsmasq
  ```

### 시리얼 포트 관리
- 장치에 **시리얼 콘솔 포트**가 있다면 모니터 없이 관리 가능
- `/etc/default/grub` 수정
  ```
  GRUB_CMDLINE_LINUX='console=tty0 console=ttyS0,115200n8'
  GRUB_TERMINAL=serial
  GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
  ```
- `systemctl enable [email protected]` 후 `sudo update-grub` 실행

### 동작 확인
- 재부팅 후 `sudo nft list ruleset` 으로 방화벽 상태 점검
- `sudo nft -c -f /etc/nftables.conf` 로 설정 검증
- `sudo systemctl reload nftables.service` 로 무중단 규칙 갱신 가능
- DHCP 로그 확인
  ```
  sudo less /var/lib/misc/dnsmasq.leases
  sudo journalctl -eu dnsmasq.service
  ```

### 추가 기능
- **로그 기록 및 트래픽 분석**, **VLAN 분리**, **IPv6 지원**, **VPN 터널링**, **동적 라우팅(BGP, IGP)** 등 확장 가능
- **Prometheus 기반 모니터링**, **DMZ 포트 포워딩**, **침입 탐지 및 차단** 기능 추가 가능
- 단, 라우터 자체에 과도한 소프트웨어 설치는 피하고, DMZ나 VLAN으로 트래픽을 분리하는 것이 바람직

### 결론
- **무료 소프트웨어와 폐기 하드웨어**만으로도 완전한 라우터 구축 가능
- 라우터는 결국 **일반 컴퓨터에 불과**하며, 누구나 직접 제작 가능
- 불필요한 장비를 재활용해 **안정적이고 유연한 네트워크 인프라**를 구축할 수 있음

## Comments



### Comment 54171

- Author: neo
- Created: 2026-03-31T09:41:33+09:00
- Points: 1

###### [Hacker News 의견들](https://news.ycombinator.com/item?id=47574034) 
- 훌륭한 글임. 내가 오랫동안 유지보수해온 **create_ap** 스크립트를 소개하고 싶음  
  [GitHub 저장소](http://github.com/dlenski/create_ap)에서 볼 수 있음.  
  이건 단 한 줄의 명령으로 어떤 Linux 컴퓨터든 **WiFi 라우터**로 바꿔주는 셸 스크립트임.  
  기본적으로 WiFi 카드를 AP 모드로 설정하고, **WPA2/3, MAC 필터링**, DHCP/DNS 서버까지 자동 구성함.  
  의존성도 거의 없고, NetworkManager도 필요 없음.  
  오래된 Atom 미니 PC로 집 인터넷 게이트웨이로도 썼고, IoT 기기 **리버스 엔지니어링용 테스트 네트워크**를 만들 때도 자주 사용함  
  관련 사례는 [이 글](https://snowpatch.org/posts/i-can-completely-control-your-sm...)에서 볼 수 있음
  - AP 모드에서 성능이 괜찮은 **WiFi 칩셋** 추천이 있을지 궁금함

- 많은 댓글이 “그냥 X 써라”라고 하지만, 이 글의 핵심은 **라우팅의 최소 구성**과 그 단순함을 보여주는 데 있음  
  Docker나 VM에서 NAT를 써본 적 있다면 이미 같은 일을 해본 셈임.  
  Android의 **WiFi 핫스팟** 기능도 결국 같은 Linux 커널 기능을 활용함.  
  지금 이 메시지도 아마 여러 개의 **소프트웨어 라우터**를 거쳐 전달되고 있을 것임
  - 나도 처음부터 직접 만들어보는 게 더 흥미로움. 그렇게 해야 스스로 구현할지, 아니면 기존 솔루션을 쓸지 판단할 수 있음  
    이런 접근은 좋은 **소프트웨어 설계 원칙**이라고 생각함
  - 사실 어떤 컴퓨터든 마음만 먹으면 라우터가 될 수 있음  
    Windows의 **Internet Connection Sharing**도 결국 NAT를 켜는 체크박스였음  
    방화벽, 스위치, 파일 서버 등을 한 기기에 묶어 “라우터”라 부르는 게 사람들을 헷갈리게 하는 듯함

- 이 글을 보니 예전 생각이 남. 내 첫 Linux 사용 목적이 **남는 컴퓨터로 라우터 만들기**였음  
  100MHz Pentium에 3Com ISA NIC 두 개 꽂고, IP-Masquerading HOWTO를 따라 설정했음.  
  이후 Robert Ziegler의 *Linux Firewalls* 책을 기반으로 발전시켰고, **스팸 필터**나 **Squid 캐시**까지 얹어서 버려질 하드웨어를 꽤 유용하게 썼음
  - 나도 비슷한 길을 걸었음. 신문사 사무실의 ISDN 회선을 한 대의 컴퓨터로 공유했는데, 그게 웹사이트 구축으로 이어졌음  
    27년이 지난 지금도 여전히 “**Linux와 고무줄, 클립으로 싸게 해결하는 법**”을 묻는 사람들에게 불려감
  - 예전에 Pentium MMX 200MHz로 부모님 집의 DSL이 끊겼을 때 **OpenBSD 브리지**로 임시 WiFi 연결을 만든 적 있음. 놀랍게도 충분히 빨랐음
  - VLAN 지원 스위치만 있으면 **NIC 하나로도 라우팅**이 가능함
  - 내 경우는 반대로, 처음엔 **OpenWRT로 라우터 펌웨어를 플래싱**하며 Linux를 배웠음
  - 이제는 25년 된 책이라 너무 낡았음. 누군가 **새로운 Linux 라우터 책**을 써야 함  
    참고: [Linux Routers - A Primer for Network Administrators](https://www.linuxjournal.com/article/6314)

- 나는 오랫동안 **OPNsense/pfSense**를 써왔고 강력히 추천함  
  자동 업데이트, 백업, **WireGuard 터널**, Suricata 기반 패킷 필터링 등 기능이 훌륭함  
  주말에 네트워크 관리할 때 터미널 대신 **웹 UI**로 설정할 수 있어서 편함  
  [공식 사이트](https://opnsense.org/)
  - 동의하지만 GUI가 Linux의 개념과 안 맞을 때가 많음. Barracuda 라우터를 쓰다 결국 **SSH로 직접 명령어 입력**해서 문제를 해결했음  
    pfSense, OpenWRT, Barracuda, Verizon OEM 등은 기능은 같지만 표현 방식이 제각각임
  - 나는 이제 주말에 네트워크 관리하고 싶지 않음. **TrueNAS처럼 완전한 어플라이언스형 라우터 배포판**이 있으면 좋겠음
  - OPNsense를 버린 이유는, 내가 하려던 설정을 제한했기 때문임.  
    “기기가 나보다 잘 안다”는 태도를 가진 제품은 싫음. **유연성 부족**이 결정적이었음
  - Linux로 배우는 건 좋지만, 라우터는 잘못되면 곤란함  
    Atom 미니 PC로 300Mb/s까지 라우팅했지만, 기가비트 인터넷으로 바꾸며 **VM 기반 OPNsense**로 전환했음  
    Intel 4포트 카드로 포트를 VM에 개별 패스스루하는 게 재미있음

- 나는 **N100 + 10Gbit 라우터 장비**를 쓰고 있는데, 전용 하드웨어 라우터보다 **지연(latency)** 이 높은 것 같음  
  전용 칩셋은 패킷을 CPU 개입 없이 처리하므로 훨씬 효율적임.  
  실제로 이런 차이를 측정한 사람이 있는지 궁금함. 대부분은 대역폭 테스트만 함
  - 맞음, **Linux bridge**는 전용 스위치 ASIC만큼 빠를 수 없음  
    OpenWRT가 일부 하드웨어 스위치 API를 지원하지만, PCIe 카드 형태로는 거의 없음  
    Mikrotik의 [CCR2004-1G-2XS-PCIe](https://mikrotik.com/product/ccr2004_1g_2xs_pcie)는 흥미로운 예임.  
    RouterOS가 돌아가는 완전한 라우터 보드를 PCIe로 연결하는 방식임.  
    25Gbps 포트를 활용할 수 있다면 가치가 있지만, 그렇지 않다면 **RB5009**와 큰 차이는 없음

- 관리형 스위치가 있다면 **NIC 하나로도 라우터 구성**이 가능함  
  802.1q 트렁크 포트로 설정하면 스위치를 인터페이스 확장기로 쓸 수 있음  
  내 집은 이런 “**router-on-a-stick**” 구성임.  
  PoE 스위치와 중고 Aruba IAP를 조합하면 소비자용보다 훨씬 품질 좋은 WiFi를 구축할 수 있음  
  예전엔 Thinkpad를 라우터로 썼지만, 지금은 Dell Optiplex로 바꿔서 **VM도 함께 돌리는 홈랩 라우터**로 사용 중임  
  Alpine Linux가 이런 용도로 아주 좋음
  - WiFi **mesh의 지연 성능**이 어느 정도까지 개선될 수 있는지 궁금함. 소비자용 라우터와 비교하면 얼마나 차이날까?
  - 내 ISP 제공 AP도 **기가비트 WiFi**를 지원함. 다만 DNS를 강제 설정해 감시 목적이 있어 교체하려 함  
    같은 성능의 AP를 사려면 180달러 정도 들어서 아쉬움

- 라우터 수입 금지 정책의 **정책적 이유**가 궁금함  
  이미 대부분의 트래픽이 TLS로 암호화되어 있는데, 왜 여전히 위험하다고 보는지 의문임  
  혹시 **봇넷, DDoS, 약한 기본 비밀번호**, 또는 내부망 침투 같은 이유 때문인지?
  - 보안 업계에서는 이를 **APT(Advanced Persistent Threat)** 라 부름.  
    Volt Typhoon, Flax Typhoon 같은 사례들이 여전히 활동 중임.  
    외국 장비 금지로 완전히 해결되진 않지만, **보안은 제품이 아니라 과정**이므로 공급망을 조절하는 건 필요함
  - 네가 말한 모든 이유가 맞음. 추가로 “**원격으로 장비를 꺼버릴 수 있는 능력**”도 큰 위험임  
    예전에 Amazon에서 **Bot Mitigation**을 하며 전 세계 소비자 기기에서 발생한 트래픽을 본 적 있음.  
    절반도 안 되는 활성 기기만으로도 막을 수 없는 수준의 트래픽이 발생했음
  - 사실 FCC가 진짜 보안을 걱정했다면 **고유 비밀번호 의무화**나 **패치 미비 제조사 책임제**를 도입했을 것임.  
    Huawei든 Netgear든 DDoS의 근원은 같음
  - 이유는 여러 가지임  
    DNS/트래픽 메타데이터 접근, 내부망 공격, DDoS, 인터넷 차단 등  
    결국 **감시와 통제 수단**으로 악용될 수 있음
  - 기술적으로는 맞음. TLS로 암호화돼도 **메타데이터**만으로도 충분히 감시 가능함.  
    외국 장비가 백도어를 가질 가능성은 현실적인 가정임

- “그냥 OPNsense 써라”는 **운영 환경**에서는 좋은 조언이지만, **학습용**으로는 최악임  
  이 글의 가치는 라우팅이 얼마나 **단순한 원리**로 동작하는지 보여주는 데 있음
  - SOHO급 장비는 진짜 의미의 **라우팅**을 하지 않음

- 글에서 언급되지 않은 부분인데, 라우터로 쓸 때는 `/etc/sysctl.d/10_router.conf`에  
  ```
  net.ipv4.ip_early_demux = 0  
  net.ipv4.tcp_early_demux = 0  
  net.ipv4.udp_early_demux = 0
  ```  
  같은 설정으로 **오버헤드 감소**를 할 수 있음.  
  VoIP나 게임용으로 **지연과 지터를 줄이는 튜닝**에 효과적임.  
  gro_flush_timeout, sch_cake, napi_defer_hard_irqs 등도 조정함.  
  가족들이 더 나은 **게이밍 체감**을 느끼게 하는 게 목표임
  - 나도 early_demux를 끄지만 실제 차이는 테스트해본 적 없음.  
    내 경우 **fq_codel**만으로도 10Gbps 환경에서 충분히 안정적임

- 나는 오히려 **광모뎀 대체**가 더 궁금함  
  AT&T에서 받은 게 자주 느려지고 보안도 의심스러움.  
  **직접 광모뎀으로 바꾸는 방법**에 대한 가이드가 있을까 궁금함
