각각 '실제' 인터페이스를 직접 사용하고 이를 통해 모든 IP에 도달할 수 있는 다중 와이어가드 인터페이스

각각 '실제' 인터페이스를 직접 사용하고 이를 통해 모든 IP에 도달할 수 있는 다중 와이어가드 인터페이스

wg-quick실제 이더넷 NIC를 직접, 독립적으로 사용하여 단일 시스템에 여러 인터페이스를 설정해야 합니다 .
내가 겪고 있는 문제는 이들 각각을 통해 전체 인터넷에 액세스하고 싶다는 것입니다. 이는 을 의미한다고 가정 AllowedIPs = ::0하지만 wg-quick어디로 가는 모든 트래픽이 이 새로운 인터페이스를 통과하도록 로컬로 경로를 추가하는 것을 좋아합니다. 다음 wg-quick시도를 포함하여 ..

전화해서 "안녕하세요, '기본 게이트웨이'가 아닌 wg-quick구체적으로 사용하시길 바랍니다"라고 말할 수 있는 방법이 있나요 ? eno1아마도 raw를 사용하고 있을까요 wg?

온라인에서 여러 권의 책을 읽어 보았지만 읽을 때 다른 사람들이 무엇을 요구하는지 계속 혼란스러워집니다.것 같다비슷한 질문 같지만 여러 Wireguard 서비스 등을 호스팅하는 것으로 밝혀졌습니다.

아래에 설명된 것은 두 개의 wg 인터페이스가 있는 기본 요지입니다. 이 경우에는 모든 트래픽을 투명하게 훔치는 wg0일반적인 작업을 수행합니다 . 여기서는 트래픽과 구체적으로 통신하도록 앱을 구성할 수 있는 인터페이스가 있습니다. 귀하의 솔루션이 이런 방식으로 작동하도록 강요되어도 상관 없습니다 . 동일한 효과를 얻기 위해 "트래픽에 이 인터페이스/IP 사용" 플래그를 지원하지 않는 소프트웨어에 대해 SOCKS 및 HTTP 프록시를 설정할 수 있습니다.wg-quickwg1
wg0

                                                             
      Home                ║      ISP       ║       Internet  
                          ║                ║                 
                          ║                ║                 
  ┌─────────────┐         ║                ║                 
  │             │         ║                ║                 
  │             │         ║                ║        ┌───┐    
  │             │         ║                ║     ╔══╪        
  │         eno1│         ║                ║     ║  └───┘    
  │   wg0      ┐│         ╙────────────────╜     ║  VPN0     
  │     ┐      └─────────────┘                   ║           
  │     ╞════════════════════════════════════════╝           
  │     ┘   ╔════════════════════════════════════╗           
  │   wg1   ║  ┌─────────────┐                   ║           
  │     ╓   ║  ┘│  router                        ║  ┌───┐    
  │     ╠═══╝   │         ╓────────────────╖     ╚══╪        
  │     ╙       │         ║                ║        └───┘    
  │             │         ║                ║        VPN1     
  │             │         ║                ║                 
  └─────────────┘         ║                ║                 
        PC                                                   
                                                             

"왜?". openVPN을 사용하면 내 공급자는 기본적으로 로컬 방화벽이 허용하는 열린 포트를 허용했으며 공개적으로 라우팅이 가능했고 원하는 수의 포트에서 서비스를 호스팅할 수 있었습니다. Wireguard로 전환했는데 이는 훌륭하지만 Wireguard 연결당 하나의 개방형 포트만 지원합니다. 따라서 기본적으로 포트 전달이 있는 모든 앱에 대해 VPN 인터페이스를 가동하고 싶습니다.

iptables 없이 wireguard만 사용하여 이것이 가능합니까(전혀 이해하지 못합니다)?

답변1

예. 좋아요. 따라서 겉으로 보기에 솔루션은 sudo ip route add $VPN1 via eno1존재하는 wg0에 관계없이 eno1을 통해 VPN1에 연결할 수 있도록 허용하는 것만큼 간단합니다. 귀하는 여러 개의 ::0wg 인터페이스를 갖는 것이 완전히 허용됩니다.동일한 네임스페이스애플리케이션이 연결을 위한 인터페이스 바인딩을 지원하는 한 그 중 하나를 기본값(wg0)으로 사용합니다(예: netcat -s). 이러한 터널이 단 하나뿐이라는 주의 사항은 wg-quick'를 사용하여 생성될 수 있습니다 Table=auto.


그러나 제가 지난 주에 싸운 것은 애초에 이 일을 하고 싶은 목적이었습니다. 해당 wg 인터페이스를 사용하면 인바운드 트래픽을 전달할 수 있습니다!

나는 여러 가지를 시도했습니다.

  • 순진하게 wg-quick는 경로가 있는 상태에서 여러 번 실행됩니다. (이로 인해 모든 것이 종료되고 wg-quick down네트워크 스택이 완전히 중단됩니다.)
  • 위와 같이 다중 회전, 하나는 Table=auto, 다른 하나는Table=off
  • 위와 같이 다중 회전, 하나는 wg-quick, 다른 하나는wg
  • 여러 개를 회전시키다eno1뒤에 숨어있는namespace(아웃바운드 트래픽에 대해 이 작업을 수행할 수도 없었습니다...)
  • 여러 개를 회전시키다각자 wg자신의namespace

netcat -l -p $assignedPort그러나 이러한 작업이 [해당 터널의 아웃바운드 트래픽에 대해] 작동하더라도(달리 명시하지 않는 한) "VPN{0,1}"에 대해 동일하거나 다른 서버를 사용하는지 여부에 관계없이 이러한 모든 거부된 수신 연결( 로 테스트)이 거부되었습니다 ufw disable.


여기서 해결책은 내가드디어 어제 발견. 마법의 소스 wg-quickTable=auto; FwMark.

내가 스스로 수행하는 방법을 배우지 않으려고 했던 것은 "와이어가드만 사용하면 이것이 가능합니까?"입니다. 글쎄요, 패킷을 표시하고 테이블과 연결해야 하지만, 무엇을 이해/모방/재구현할 필요는 없습니다 wg-quick...분명히 그냥 할 수 있습니다사용그것.

따라서 기본 터널을 VPN0으로 설정한 후 wg-quick해당 FwMark를 사용하고 ip routeVPN1에 대해 설정한 후FwMark 재사용을 위한 wg. 후자의 연결은 이제 경로에 따라 eno1을 통과하지만 VPN1에서 전달되는 수신 패킷을 허용합니다(VPN0의 터널에 설정된 테이블 덕분에).

관련 정보