특정 인터페이스에서만 UFW 매스커레이딩 및 외부 트래픽

특정 인터페이스에서만 UFW 매스커레이딩 및 외부 트래픽

다음 네트워크 및 UFW 규칙을 사용하여 2개의 터널이 있는 Wireguard "서버"로 실행되는 Ubuntu 시스템(192.168.AB)이 있습니다.

네트워크 10.255.200.0/24

ufw allow XXX/udp && ufw route allow in on wg200 out on any && ufw route allow in on wg200 out on eth0 && ufw route allow in on eth0 out on wg200

네트워크 10.255.245.0/24

ufw allow YYY/udp && ufw route allow in on wg245 out on wg245 to any from any && ufw route reject in on wg245 out on any to any from any

10.255.200.0/24 네트워크의 장치가 호스트 외부에 도달할 수 있도록 /etc/ufw/before.rules에 다음을 추가했습니다.

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.255.200.0/24 -o eth0 -j MASQUERADE
COMMIT

이것이 작동하는 것 같지만 이제 호스트 네트워크(192.168.A.0/24)의 다른 호스트가 기본적으로 192.168.A에 액세스할 수 없는 10.255.245.0/24 네트워크의 시스템에 액세스할 수 있도록 허용해야 합니다. 0/스물넷.

호스트 네트워크를 안전하게 유지하고 WG 네트워크를 가능한 한 분리하기 위해 어떤 UFW 규칙을 사용해야 합니까? 또한 변장을 수행하는 더 좋은 방법이 있습니까?

미리 감사드립니다!

답변1

문제 설명과 설정한 UFW 규칙 사이에서 WireGuard 서버가 다음 4가지 작업을 수행하도록 허용하려는 것처럼 들리나요? :

  1. wg200 네트워크에 있는 두 호스트 간의 연결을 전달합니다.
  2. wg200 네트워크의 모든 호스트에서 eth0 네트워크의 모든 호스트로의 연결을 가장합니다.
  3. wg245 네트워크에 있는 두 호스트 간의 연결을 전달합니다.
  4. eth0 네트워크의 모든 호스트에서 wg245 네트워크의 모든 호스트로의 연결을 가장합니다.

이 4가지 사항만 허용하려면 다음이 필요한 유일한 UFW 라우팅 규칙입니다.

ufw route allow in on wg200 out on wg200
ufw route allow in on wg200 out on eth0
ufw route allow in on wg245 out on wg245
ufw route allow in on eth0 out on wg245

MASQUERADE또한 두 번째 규칙 을 추가해야 합니다 /etc/ufw/before.rules(#4를 위조하려는 경우).

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.255.200.0/24 -o eth0 -j MASQUERADE
-A POSTROUTING -s 192.168.A.0/24 -o wg245 -j MASQUERADE
COMMIT

UFW는 자동으로 다음 두 가지를 설정합니다:

  1. UFW는 연결 추적을 사용하여 한 방향으로 전달된 연결 대상이 연결의 원래 소스에 응답할 수 있도록 합니다(따라서 "역방향"이 아닌 "앞으로" 방향에 대한 규칙만 지정하면 됩니다).
  2. UFW는 명시적으로 허용한 연결을 제외한 모든 전달된 연결을 차단합니다(따라서 명시적으로 허용하지 않는 연결을 거부할 필요는 없습니다).

따라서 기존 경로 규칙을 까다롭게 선택하려면 다음을 수행하세요.

(1) ufw route allow in on wg200 out on any
(2) ufw route allow in on wg200 out on eth0
(3) ufw route allow in on eth0 out on wg200
(4) ufw route allow in on wg245 out on wg245 to any from any
(5) ufw route reject in on wg245 out on any to any from any
  • (1)과 (2)는 중복됩니다. (1)이 있으면 (2)가 필요하지 않습니다. 하지만 (1)은 wg200의 모든 호스트가 wg245의 모든 호스트에 연결되도록 허용합니다(원하는지는 확실하지 않음). ?)
  • eth0 네트워크의 호스트에 대한 액세스를 허용하려는 경우에만 필요합니다. (3)시작하다wg200 네트워크에 대한 새로운 연결; eth0 네트워크의 호스트가 항상 wg200 네트워크 연결의 수신 측에 있는 경우(wg200에서 eth0으로 가장하기 때문일 가능성이 높음), 이것이 필요하지 않습니다. 규칙
  • to any from any(4) 불필요
  • (5) 불필요

관련 정보