8P by GN⁺ 19시간전 | ★ favorite | 댓글 1개
  • 일반 컴퓨터나 미니 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으로 트래픽을 분리하는 것이 바람직

결론

  • 무료 소프트웨어와 폐기 하드웨어만으로도 완전한 라우터 구축 가능
  • 라우터는 결국 일반 컴퓨터에 불과하며, 누구나 직접 제작 가능
  • 불필요한 장비를 재활용해 안정적이고 유연한 네트워크 인프라를 구축할 수 있음
Hacker News 의견들
  • 훌륭한 글임. 내가 오랫동안 유지보수해온 create_ap 스크립트를 소개하고 싶음
    GitHub 저장소에서 볼 수 있음.
    이건 단 한 줄의 명령으로 어떤 Linux 컴퓨터든 WiFi 라우터로 바꿔주는 셸 스크립트임.
    기본적으로 WiFi 카드를 AP 모드로 설정하고, WPA2/3, MAC 필터링, DHCP/DNS 서버까지 자동 구성함.
    의존성도 거의 없고, NetworkManager도 필요 없음.
    오래된 Atom 미니 PC로 집 인터넷 게이트웨이로도 썼고, IoT 기기 리버스 엔지니어링용 테스트 네트워크를 만들 때도 자주 사용함
    관련 사례는 이 글에서 볼 수 있음

    • 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
  • 나는 오랫동안 OPNsense/pfSense를 써왔고 강력히 추천함
    자동 업데이트, 백업, WireGuard 터널, Suricata 기반 패킷 필터링 등 기능이 훌륭함
    주말에 네트워크 관리할 때 터미널 대신 웹 UI로 설정할 수 있어서 편함
    공식 사이트

    • 동의하지만 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는 흥미로운 예임.
      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에서 받은 게 자주 느려지고 보안도 의심스러움.
    직접 광모뎀으로 바꾸는 방법에 대한 가이드가 있을까 궁금함