다음 설정을 갖고 싶습니다. 두 가지 인터페이스가 있습니다: wlan0wg0. wlan0기본값이며, wg0wireguard 인터페이스로 구성되어 있습니다.수동으로.

기본적으로 트래픽은 으로 이동합니다 wlan0. 그러나 프로세스가 cgroup 내에 있는 경우 wgcgrp(classid는 1), 트래픽은 wg0.

나는 이것을 어떻게 해야할지 전혀 모른다. 제가 시도한 것은 이것입니다. 나는 매우 좌절감을 느끼기 때문에 매우 장황하게 말할 것입니다.

[와이어가드 설정]

이것은 매우 간단합니다. 먼저 ip l a wg0 name wg0 type wireguard. 그런 다음 에 공급되는 데이터가 포함된 w.conf 파일이 있습니다 wg setconf wg0. 개인키, 공개키, 허용 IP(0.0.0.0/0, ::0/0), 엔드포인트를 설정합니다.아무것도 아님더. 그런 다음 미리 알고 있는 wg0 인터페이스의 IP 주소도 설정했습니다 ip ad a $ip dev wg0; ip -6 ad a $ip6 dev wg0. 이제 경로를 추가합니다.ip l s wg0 up; ip r a default dev wg0 t wg

[방화벽]

내가 아는 한, 어떻게든 wg라우팅 테이블에 도달하려면 cgroup 트래픽을 만들어야 합니다. 나는 이것을하는 방법을 알고 있습니다. 해당 유형의 체인 내부에 cgroup 트래픽을 표시한 route다음 가장 무도회해야 합니다. 규칙은 다음과 같습니다.

table inet t {
    chain post {
        type route hook output priority mangle; policy accept
        meta cgroup 1 counter meta mark set meta cgroup
    }
    
    chain masq {
        type nat hook postrouting priority srcnat; policy accept
        meta cgroup 1 oifname "wg0" counter masquerade
    }
}

있다더 이상은 없어내 방화벽의 규칙.

[경로 설정]

표시된 트래픽이 테이블에 들어가야 하므로 wg실행합니다.ip ru a fwmark 1 lookup wg

[결과]

cgexec -g net_cls:wg ping 8.8.8.8 그리고 나는 아무것도 얻지 못합니다. 왜??? 디버깅을 시작하는 방법조차 모릅니다. 이것은 간단해야 하는데 나는 근처에도 없습니다.

답변1

ip r a "$endpoint_ip" dev wlan0 via "$wlan0_gateway" t wg이 설정이 작동하도록 해야 할 것 같습니다 . openVPN은 이 추가 경로 없이도 작동하기 때문에 저에게는 매우 예상치 못한 일이었습니다. 왜 그런지 아시고 설명해 주시면 정말 감사하겠습니다. 아마도 openVPN은 사용자 공간 프로세스인 반면 wireguard는 커널에서 실행되고 라우팅이 다르게 이루어지기 때문일까요?

관련 정보