config.json / outbounds 일부
구독은 여러 연결 설정을 한꺼번에 가져오는 데 사용하고, 그룹은 클라이언트에서 출처별로 구분하는 데 사용합니다. 먼저 그룹을 만든 뒤 구독 주소를 입력하고 업데이트하여 현재 클라이언트가 가져온 내용을 해석할 수 있는지 확인하세요. 업데이트 후에는 노드 이름, 프로토콜, 전송 항목을 살펴봐야 합니다. 목록에 항목이 나타나는지만 확인해서는 충분하지 않습니다. 그룹 이름과 자동 업데이트 주기는 클라이언트 설정이며 일반적인 코어 항목은 아닙니다. 아래는 가져오기 후 생성될 수 있는 아웃바운드 구조의 예시입니다. 원격 인증 정보가 없으므로 이 예시만으로 프록시 연결을 만들 수는 없습니다. 여러 출처를 정리하려면 필터 조건을 설정하고 원본 그룹은 보존하세요.
{
"outbounds": [
{ "tag": "direct", "protocol": "freedom" },
{ "tag": "block", "protocol": "blackhole" }
]
}
config.json / routing
라우팅은 규칙 순서에 따라 트래픽을 어느 아웃바운드로 보낼지 결정하며, 일반적으로 먼저 일치하는 규칙이 적용됩니다. 먼저 사설 주소를 처리하고 명확한 도메인 또는 주소 규칙을 추가한 뒤, 어떤 규칙에도 일치하지 않는 트래픽의 기본 경로를 확인하세요. 규칙의 아웃바운드 태그는 아웃바운드 목록의 태그와 정확히 일치해야 합니다. 그렇지 않으면 규칙이 있어도 예상대로 작동하지 않습니다. 아래 예시는 사설 주소를 직접 연결 아웃바운드로 보내며, 해당하는 지리 데이터 파일이 필요합니다. 전역 모드만 전환하는 것과 달리 규칙 기반 라우팅은 로컬 네트워크 접근 경로를 유지할 수 있지만, 도메인 해석 시점과 규칙 적용 범위도 확인해야 합니다.
{
"routing": {
"domainStrategy": "IPIfNonMatch",
"rules": [
{
"type": "field",
"ip": ["geoip:private"],
"outboundTag": "direct"
}
]
}
}
config.json / log
코어는 클라이언트 이름만 보고 선택하지 말고 연결 매개변수를 기준으로 선택하세요. 프로토콜, 전송 방식, 보안 계층을 확인한 뒤 현재 코어가 해당 항목을 지원하는지 살펴보세요. 특정 확장 기능이 포함된 경우 다른 코어가 같은 설정을 그대로 읽을 수 있다고 가정해서는 안 됩니다. 전환하기 전에 기존 설정을 보관하고, 전환 후에는 시작 로그와 생성된 설정을 확인해 실제로 어떤 코어가 실행되는지 점검하세요. 아래의 로그 수준은 초기 문제 해결에 사용할 수 있습니다. 자세한 로그가 필요해 일시적으로 수준을 높였다면 확인 후 원래대로 되돌리세요. 실행 로그에는 주소와 연결 정보가 포함될 수 있으므로 공유하기 전에 민감한 내용을 삭제해야 합니다.
{
"log": {
"loglevel": "warning"
}
}
config.json / inbounds / SOCKS
시스템 프록시는 해당 설정을 사용하는 앱에만 영향을 주며 전체 트래픽 처리와 같지 않습니다. 먼저 로컬 프록시 인바운드로 연결을 확인한 뒤 TUN이 필요한지 검토하세요. TUN 지원 여부는 클라이언트, 관련 구성 요소, 코어, 시스템 권한에 따라 달라집니다. 임의의 설정에 스위치 하나를 추가한다고 사용할 수 있는 기능이 아닙니다. 아래는 로컬에서만 수신하는 SOCKS 인바운드 예시로, 앱에 프록시 주소를 직접 입력해 사용할 수 있습니다. TUN 설정은 아닙니다. 모드를 전환할 때 다른 프록시 프로그램, 가상 네트워크 어댑터, DNS 설정을 확인해 트래픽이 중복 처리되어 순환하지 않도록 하세요.
{
"inbounds": [
{
"tag": "local-socks",
"listen": "127.0.0.1",
"port": 10808,
"protocol": "socks",
"settings": { "auth": "noauth", "udp": true }
}
]
}
config.json / dns
DNS 설정은 앱, 시스템, 코어의 세 계층을 함께 확인해야 합니다. 클라이언트에 리졸버를 입력했다고 해서 모든 앱의 조회 요청이 코어를 거치는 것은 아닙니다. 도메인을 어느 단계에서 해석하는지 확인하고, 리졸버에 접근하는 경로가 아직 연결되지 않은 프록시에 의존하는지도 살펴보세요. 아래는 로컬 환경에서 이름을 해석하는 기본적인 예시입니다. 항목의 위치를 설명하기 위한 것으로 모든 네트워크에 적합하다는 뜻은 아닙니다. IP 주소로는 접속되지만 도메인으로는 실패한다면 리졸버만 바꾸기 전에 해석 결과와 라우팅 정책을 비교하고 조회 트래픽이 코어에 전달되지 않는 문제인지 확인하세요.
{
"dns": {
"servers": ["localhost"]
},
"routing": {
"domainStrategy": "AsIs"
}
}
config.json / inbounds / LAN
로컬 네트워크 공유를 사용하려면 수신 주소, 시스템 방화벽, 다른 기기의 프록시 설정이 모두 올바르게 구성되어야 합니다. 루프백 주소에서만 수신하면 다른 기기에서는 연결할 수 없습니다. 모든 인터페이스에서 수신하도록 열었다면 접근 가능한 출처도 제한해야 합니다. 아래는 인증을 사용하는 HTTP 인바운드의 일부 예시이며, 자격 증명은 설명용 값이므로 실제 사용 전에 반드시 바꾸세요. 다른 기기에는 루프백 주소가 아닌 컴퓨터의 로컬 네트워크 주소를 입력해야 합니다. 신뢰할 수 있는 네트워크에서만 공유하고 프록시 포트를 공용 인터넷에 노출하지 마세요. 공유가 끝나면 수신을 중지하거나 로컬 기기에서만 접근하도록 되돌리세요.
{
"inbounds": [
{
"tag": "lan-http",
"listen": "0.0.0.0",
"port": 10809,
"protocol": "http",
"settings": {
"accounts": [
{ "user": "example-user", "pass": "your-password" }
]
}
}
]
}