Linux 라우터 및 보조 라우터 구축 개요: 커널 직접 실행과 트래픽 가로채기 범위

배포 전 선택을 위해 게이트웨이, DNS, 포워딩, 커널의 역할을 설명하고 메인 라우터와 보조 라우터의 트래픽 경로를 비교합니다. 권한, 리소스 사용량, 롤백 준비까지 정리합니다.

이 글 한눈에 보기

이 개요는 Linux 호스트에서 V2Ray 또는 Xray 코어를 직접 실행하고, 로컬 네트워크 기기의 트래픽을 해당 호스트를 통해 전달하려는 사용자를 위한 글입니다. 규칙을 그대로 복사하는 대신 메인 라우터, 보조 라우터, DNS, 투명 프록시가 각각 어떤 역할을 하는지 먼저 판단하고, 테스트·관찰·롤백이 가능한 구축 순서를 정리합니다.

먼저 ‘커널 직접 실행’이 가로채는 범위를 구분하기

여기서 ‘커널’은 사용자 공간에서 실행되는 V2Ray 또는 Xray 프록시 코어를 뜻하며, 프록시 기능을 Linux 커널에 컴파일한다는 의미가 아닙니다. 프록시 코어는 인바운드 포트로 전달된 연결을 받아 라우팅 규칙에 따라 직접 연결, 차단 또는 원격 아웃바운드를 선택합니다. 네트워크 인터페이스, 주소, 라우팅 테이블, 연결 추적, 포워딩, 방화벽은 여전히 Linux가 담당합니다.

따라서 프로그램에 ‘실행 중’이라고 표시되어도 프로세스가 시작되었다는 뜻일 뿐, 로컬 네트워크 트래픽이 반드시 해당 프로세스를 통과한다는 의미는 아닙니다. 게이트웨이가 트래픽을 인계받으려면 패킷이 먼저 Linux 호스트에 도착한 뒤 nftables 또는 iptables가 대상 트래픽을 투명 프록시 인바운드로 전달해야 합니다. 응답 트래픽도 예측 가능한 경로로 원래 기기까지 돌아가야 하며, 그렇지 않으면 연결 직후 끊기거나 일부 웹사이트만 열리고 다른 앱은 시간 초과되는 문제가 발생합니다.

보조 라우터 시험 운영

권장

기존 메인 라우터의 인터넷 연결과 DHCP는 유지하고, 테스트 기기 한 대만 기본 게이트웨이와 DNS를 Linux 호스트로 지정합니다. 영향 범위가 작아 포워딩, DNS, 프록시 규칙을 확인하기 쉽습니다.

적합한 경우: 최초 구축, 기기별 이전, 빠른 롤백이 필요한 경우

메인 라우터로 전환

Linux 호스트가 기본 게이트웨이, 주소 할당, 포워딩을 모두 담당하므로 모든 단말이 자연스럽게 호스트를 통과합니다. 경로는 단순하지만 설정 오류가 전체 로컬 네트워크에 영향을 줄 수 있습니다.

적합한 경우: 네트워크 구성이 명확하고 별도의 관리 경로가 있는 경우

명시적 프록시

단말에서 HTTP 또는 SOCKS 주소를 직접 입력하고 기본 게이트웨이는 변경하지 않습니다. 노드와 아웃바운드를 먼저 검증할 수 있지만 투명 프록시가 완료되었다는 의미는 아닙니다.

적합한 경우: 코어 아웃바운드 검증, 방화벽 변수 분리

결론: 먼저 테스트 기기 한 대만 트래픽을 인계받기

첫 단계부터 전체 네트워크의 DHCP를 변경하지 마세요. 단말 한 대의 주소, 게이트웨이, DNS를 고정하고 직접 연결, 프록시, 도메인 확인, 롤백이 모두 정상인지 검증한 뒤 적용 범위를 넓히세요.

게이트웨이, DNS, 포워딩, 프록시 코어의 역할

기본 게이트웨이는 ‘패킷의 다음 홉이 어디인가’를 결정합니다. DNS는 ‘도메인이 어떤 주소로 해석되는가’를 반환합니다. Linux 포워딩은 한 인터페이스로 들어온 패킷이 다른 인터페이스로 나갈 수 있게 하며, 프록시 코어는 실제로 인바운드에 전달된 연결만 처리합니다. 네 요소는 함께 작동하지만 어느 하나가 정상이라고 해서 나머지 세 요소까지 구축되었다고 볼 수는 없습니다.

예를 들어 단말이 Linux의 DNS 서비스에서 올바른 주소를 받아도 패킷은 기존 라우터로 보낼 수 있습니다. 반대로 기본 게이트웨이를 Linux로 변경했더라도 시스템에서 IPv4 포워딩을 활성화하지 않았다면 로컬 네트워크 외부 주소에 연결할 수 없습니다. 포워딩과 투명 인바운드가 정상이어도 방화벽에서 게이트웨이 자체, 로컬 네트워크 대역 또는 원격 서버 주소를 제외하지 않으면 루프가 발생할 수 있습니다.

53
로컬 네트워크 DNS의 일반적인 수신 포트
12345
이 글의 투명 인바운드 예시 포트
100
정책 라우팅 테이블 예시 번호
1
net.ipv4.ip_forward 목표값
게이트웨이 구축에서의 역할 범위
구성 요소 주요 역할 단독으로 정상이어도 확인할 수 없는 사항
기본 게이트웨이 단말의 로컬 네트워크 외부 트래픽을 Linux 호스트로 전달합니다. Linux가 해당 트래픽을 포워딩하거나 프록시한다는 사실은 확인할 수 없습니다.
DNS 쿼리를 받아 도메인 해석 결과를 반환합니다. 이후 TCP 및 UDP 연결이 같은 경로를 사용하는지는 확인할 수 없습니다.
방화벽 및 정책 라우팅 선택한 패킷을 표시하고 리디렉션하거나 투명하게 수신합니다. 프록시 코어의 아웃바운드 매개변수가 작동한다는 사실은 확인할 수 없습니다.
V2Ray 또는 Xray 코어 인바운드 연결을 처리하고 도메인, IP, 프로토콜 라우팅 규칙을 적용합니다. 단말 트래픽이 투명 인바운드에 도달했다는 사실은 확인할 수 없습니다.

메인 라우터와 보조 라우터의 트래픽 경로 차이

메인 라우터 모드에서는 Linux가 일반적으로 로컬 네트워크 인터페이스와 상위 네트워크 인터페이스를 모두 보유하며, 단말은 DHCP를 통해 Linux를 기본 게이트웨이로 자동 설정합니다. 패킷은 로컬 네트워크 인터페이스로 들어와 라우팅 판단, 방화벽, 프록시 규칙을 거친 뒤 상위 네트워크 인터페이스로 나갑니다. 경로가 일원화되어 분기 규칙을 관리하기 쉽지만 DHCP, NAT 또는 포워딩 중 한 곳만 잘못되어도 전체 네트워크가 외부 연결을 잃을 수 있습니다.

보조 라우터 모드에서는 기존 라우터가 인터넷 연결과 주소 할당을 계속 담당하고 Linux 호스트는 같은 로컬 네트워크에 위치합니다. 기본 게이트웨이를 보조 라우터로 명시한 단말만 보조 라우터를 통과합니다. 단말의 게이트웨이가 여전히 기존 라우터이고 DNS만 보조 라우터로 변경하면, 보조 라우터는 일반적으로 DNS 쿼리만 볼 수 있고 이후 연결은 볼 수 없습니다. 따라서 투명 프록시 규칙도 적용되지 않습니다.

응답 경로도 확인해야 합니다. 보조 라우터가 패킷을 기존 라우터로 전달한 뒤에는 기존 라우터가 응답을 단말로 돌려보내는 방법을 알아야 합니다. 일반적인 방법은 보조 라우터의 출구에서 소스 주소 변환을 수행하거나 기존 라우터에 테스트 네트워크 대역으로 향하는 정적 라우트를 추가하는 것입니다. 전자는 구축이 간단하지만 기존 라우터에는 보조 라우터 주소로 보입니다. 후자는 원본 주소를 유지하는 대신 네트워크 장비에 명확한 라우팅 설정 기능이 필요합니다.

결론: DNS 주소는 기본 게이트웨이를 대신할 수 없습니다

목표가 투명 프록시라면 테스트 단말의 기본 게이트웨이가 실제로 Linux 호스트를 가리켜야 합니다. DNS만 변경하는 것은 이름 해석을 검증하는 방법일 뿐, 트래픽 인계를 검증하기에는 부족합니다.

롤백 가능한 순서로 구축 완료하기

구축할 때는 ‘노드를 사용할 수 있는가’와 ‘게이트웨이가 트래픽을 인계받는가’를 두 단계로 나누어 테스트해야 합니다. 먼저 명시적 프록시로 코어 설정과 원격 연결을 검증한 다음 Linux 포워딩과 투명 규칙을 활성화하세요. 문제가 발생해도 프록시 아웃바운드인지 로컬 네트워크 경로인지 빠르게 판단할 수 있습니다.

  1. 기존 네트워크 기록

    테스트 단말의 기존 IP, 서브넷 마스크, 기본 게이트웨이, DNS를 저장합니다. 보조 라우터도 로컬 네트워크 주소를 고정해 DHCP 임대 변경으로 관리 경로를 잃지 않도록 합니다.

  2. 코어 아웃바운드 검증

    먼저 V2Ray 또는 Xray가 테스트 전용 HTTP/SOCKS 포트(예: 10808)를 수신하도록 설정하고, 단일 애플리케이션에 해당 주소를 직접 입력합니다. 이 단계에서는 투명 포워딩을 활성화하지 않습니다.

  3. 코어 유형 확인

    Windows 테스트 단말에서 같은 노드 매개변수를 교차 검증하려면 v2rayN에서 「설정」→「매개변수 설정」→「Core 유형」을 열어 선택한 코어가 프로토콜 설정과 일치하는지 확인할 수 있습니다.

  4. 시스템 포워딩 활성화

    net.ipv4.ip_forward가 1인지 확인한 다음 FORWARD 체인이 테스트 네트워크 대역을 통과시키는지 확인합니다. 먼저 일반 라우팅을 사용할 수 있게 유지하고 투명 규칙 추가는 서두르지 마세요.

  5. 투명 인바운드 연결

    TProxy에 패킷 표시, 정책 라우팅, 로컬 라우팅 테이블을 설정해 선택한 TCP/UDP 트래픽을 12345로 전달하고, 로컬 네트워크, 멀티캐스트, 브로드캐스트, 게이트웨이 자체, 원격 서버 주소는 제외합니다.

  6. 범위를 단계적으로 확대

    먼저 고정 IP 하나를 테스트한 뒤 기기 그룹 단위로 확대합니다. 한 번에 게이트웨이, DNS 또는 규칙 중 하나만 변경하고, 투명 규칙을 비활성화한 뒤 일반 포워딩으로 복구할 수 있는 관리 경로를 유지하세요.

아래 명령은 상태를 확인하기 위한 것이며 방화벽 규칙을 대신 생성하지 않습니다. 출력에서 포워딩 값, 정책 규칙, 라우팅 테이블, 수신 포트가 실제 설정과 일치하는지 확인해야 합니다. 시스템이 nftables를 사용한다면 호환 계층의 표시만 보지 말고 실제 규칙 집합을 직접 확인하세요.

sysctl net.ipv4.ip_forward
ip rule show
ip route show table 100
nft list ruleset
ss -lntup | grep -E '(:53|:10808|:12345)'

TProxy, 리디렉션, TUN 선택 방법

투명 프록시를 구현하는 방법은 하나뿐이 아닙니다. TCP 리디렉션 규칙은 이해하기 쉽지만 원래 목적지와 UDP 처리 능력이 구현 방식에 따라 제한됩니다. TProxy는 목적지 정보를 유지하면서 TCP와 UDP를 수신할 수 있어 도메인, IP, 전송 계층을 함께 사용하는 게이트웨이 분기에 적합합니다. 다만 방화벽 표시, 정책 라우팅, 프록시 코어의 투명 인바운드 설정이 필요해 문제 해결 단계가 더 많습니다.

TUN은 프록시 코어가 가상 네트워크 인터페이스를 만들고 라우팅 계층에서 트래픽을 수신하는 방식입니다. 일부 방화벽 리디렉션 로직을 줄일 수 있지만 라우팅, DNS, 인터페이스 권한, 우회 규칙을 올바르게 설정해야 합니다. 기본 라우트가 실수로 TUN을 다시 가리키면 원격 서버 연결도 프록시 자체로 되돌아가 루프가 발생할 수 있습니다.

세 가지 인계 방식의 구축 핵심
방식 적합한 범위 주요 확인 항목
TCP 리디렉션 먼저 TCP 웹 접속과 기본 분기를 검증합니다. 리디렉션 체인, 대상 포트, 로컬 네트워크 및 예약 주소 제외
TProxy TCP와 UDP를 함께 처리하면서 원래 목적지를 유지해야 하는 경우 패킷 표시, 정책 규칙, table 100, 로컬 라우트, 인바운드 권한
TUN 가상 인터페이스로 라우팅 트래픽을 통합 처리하려는 경우 인터페이스 권한, 기본 라우트, MTU, DNS, 원격 주소 우회

초기 구축 단계에서는 TProxy와 TUN을 동시에 적용하지 않는 것이 좋습니다. 두 인계 체인이 함께 존재하면 하나의 연결이 중복 처리될 수 있고, 로그에는 계속 재연결된다는 사실만 나타나 트래픽이 어느 단계에서 루프를 일으키는지 파악하기 어렵습니다. 먼저 한 가지 방식으로 TCP, UDP, DNS를 정상화한 뒤 다른 방식으로 전환할 필요가 있는지 판단하세요.

DNS와 라우팅 분기를 따로 검증하기

도메인 기반 분기에는 신뢰할 수 있는 도메인 정보가 필요합니다. 프록시 코어는 인바운드 프로토콜, DNS 결과 또는 트래픽 탐지를 통해 도메인을 얻을 수 있지만 이 정보원이 항상 동일한 것은 아닙니다. 단말이 이미 도메인을 IP로 해석한 뒤 투명 트래픽으로 게이트웨이에 들어오면 코어에는 대상 IP만 보일 수 있으므로 도메인 규칙만 설정하면 적용되지 않을 수 있습니다.

DNS의 자기 순환도 피해야 합니다. 예를 들어 Linux의 로컬 DNS가 쿼리를 프록시 코어로 전달하고, 코어의 업스트림 도메인을 확인하려면 다시 같은 로컬 DNS를 호출해야 한다면 쿼리가 원래 인바운드로 반복해서 돌아옵니다. 로컬 네트워크 수신 주소, 코어 내부 조회, 업스트림 해석 경로를 명확히 구분하고 로그에서 하나의 쿼리에 설명 가능한 요청과 응답만 발생하는지 확인하는 것이 안전합니다.

보조 라우터에서 도메인은 해석되지만 웹페이지는 계속 직접 연결되나요?

먼저 테스트 단말의 기본 게이트웨이를 확인하세요. 게이트웨이가 여전히 기존 라우터라면 DNS 쿼리만 보조 라우터를 통과합니다. 테스트 기기 한 대의 기본 게이트웨이를 Linux 주소로 변경한 뒤 투명 인바운드 카운터가 증가하는지 확인하세요.

규칙을 활성화한 뒤 모든 연결이 시간 초과되나요?

먼저 투명 규칙을 비활성화해 일반 포워딩이 복구되는지 확인합니다. 그런 다음 원격 서버 주소, Linux 자체 트래픽, 로컬 네트워크 대역이 제외되었는지 점검합니다. 마지막으로 12345 포트가 실제로 수신 중인지 확인하세요.

TCP는 정상인데 UDP가 연결되지 않나요?

투명 인바운드에서 UDP가 활성화되었는지, 방화벽 규칙이 UDP와 일치하는지 확인하고 TProxy 표시와 table 100의 로컬 라우트를 점검합니다. TCP 리디렉션만 설정한다고 UDP가 자동으로 인계되지는 않습니다.

로그에 재연결이 반복해서 나타나나요?

프록시 원격 연결이 다시 투명 인바운드로 들어가는지 확인합니다. 원격 서버 IP를 임시로 제외하고 라우팅 테이블을 확인해 코어 자체의 아웃바운드가 TUN 또는 TProxy 체인으로 되돌아가지 않는지 점검하세요.

코어를 중지하면 전체 네트워크에 접속할 수 없나요?

방화벽이 여전히 트래픽을 종료된 인바운드로 보내고 있다는 뜻입니다. 롤백할 때는 프로세스만 중지하지 말고 투명 규칙과 정책 라우팅을 함께 철회한 뒤 일반 FORWARD와 기존 DNS를 복구해야 합니다.

리소스 사용량, 검수 지표, 롤백 준비

게이트웨이 부하는 유휴 상태의 메모리만으로 판단할 수 없습니다. 암호화 연결 수, UDP 세션, 로그 수준, DNS 캐시, 규칙 규모가 모두 리소스 사용량에 영향을 줍니다. 소프트 인터럽트, 코어별 사용률, 네트워크 처리량도 관찰해야 합니다. 저전력 기기는 전체 CPU 사용률이 높지 않아도 특정 코어 하나가 이미 병목에 도달할 수 있습니다.

기준선 측정을 위한 한 가지 테스트 환경은 N5105 쿼드코어, 메모리 4GB, Linux 6.1, 기가비트 유선 인터페이스이며, 단일 단말이 500Mbps를 지속 전송하면서 약 800개의 연결을 유지합니다. 투명 프록시 실행 후 프록시 코어의 상주 메모리는 약 118MB, 전체 CPU 사용률은 18%~27% 사이였습니다. 이 결과는 기록 방법을 설명하기 위한 예시일 뿐이며 프로토콜, 암호화 방식, 규칙 수, 하드웨어에 따라 수치는 달라집니다.

500 Mbps
기준선 지속 전송 처리량
800
테스트 중 동시 연결 수(약)
118 MB
프록시 코어 상주 메모리(약)
18–27%
테스트 장비 전체 CPU 사용률 범위

검수 시 최소한 직접 연결 기준선, 명시적 프록시, 투명 인계 세 가지 결과를 기록하고 최초 DNS 조회 시간, 지속 처리량, 연결 설정, UDP, 규칙 적용을 각각 테스트해야 합니다. 투명 인계가 명시적 프록시보다明显하게 느리다면 프로토콜 이름을 바꾸기보다 MTU, 중복 인계, DNS 대기, 코어별 병목을 먼저 확인하세요.

  1. 활성화 전 라우팅 테이블, 방화벽 규칙, DNS 설정, 시스템 포워딩 값을 백업합니다.
  2. 투명 규칙과 정책 라우팅을 동시에 철회하는 명령 또는 서비스 작업을 준비합니다.
  3. 기존 메인 라우터의 DHCP 설정을 유지하고 보조 라우터 시험 운영 중에는 즉시 삭제하지 않습니다.
  4. 로그 순환을 설정해 디버그 로그가 장기간 디스크를 가득 채우지 않도록 합니다.
  5. Linux 호스트를 재시작한 뒤 다시 검수해 네트워크 인터페이스가 준비되기 전에 규칙이 먼저 로드되지 않는지 확인합니다.

구축 전 최종 판단

소수의 애플리케이션만 프록시를 사용하면 명시적 프록시가 관찰하기 쉽고 전체 로컬 네트워크 경로를 변경할 필요도 없습니다. TV, 터미널 도구처럼 기기별 프록시 설정이 어려운 장치를 인계하려면 게이트웨이 모드의 가치가 분명하지만 라우팅, DNS, 방화벽, 프록시 코어를 함께 관리해야 합니다.

최초 구축은 보조 라우터와 테스트 단말 한 대로 시작하는 것이 좋습니다. 먼저 10808 명시적 프록시를 검증하고 시스템 포워딩을 활성화한 다음 투명 인바운드를 12345에 연결하세요. 규칙 적용, DNS 경로, TCP, UDP, IPv4, 롤백 절차를 확인한 뒤에야 DHCP를 이전하거나 Linux를 메인 라우터로 전환하는 것을 고려해야 합니다.

클라이언트 및 설치 경로

데스크톱 기기에서 노드 매개변수를 먼저 검증해야 한다면 다운로드 페이지에서 v2rayN을 선택하세요. 기본 연결을 완료한 뒤 튜토리얼에 따라 가져오기, 코어 유형, 프록시 적용 상태를 확인하면 됩니다.

v2rayN 다운로드