iptables/ufw를 사용하여 Wireguard VPN을 통해 다양한 포트의 트래픽을 전달하는 방법

iptables/ufw를 사용하여 Wireguard VPN을 통해 다양한 포트의 트래픽을 전달하는 방법

우분투 22.04를 실행하는 컴퓨터가 2대 있는데, 이를 서버와 프록시라고 부르겠습니다. 프록시는 고정 공용 IP를 가진 vps이고 서버는 nat 뒤에서 실행됩니다. 프록시의 일부 포트에서 모든 트래픽을 서버로 라우팅하고 싶습니다.

나는 2 사이에 wireguard VPN을 설정했으며 둘 다 서로 핑할 수 있습니다. 프록시에서 서버의 VPN 주소를 컬링하면 올바른 HTML 응답을 얻고 프록시에서 nginx를 설정합니다(의도된 최종 의도는 아님). http/https가 아닌 다른 서비스를 라우팅하고 싶기 때문에) VPN IP에 Proxy_pass를 허용하고 일단 올바른 HTML 응답을 얻을 수 있습니다.

하지만 iptables/ufw를 사용하여 전달을 설정할 수 없었습니다. 이것은 인터페이스 작동 시 iptables 라우팅 규칙을 포함하는 wiregaurd 구성입니다.

대리:

[Interface]
# Proxy with static ip
Address = 10.250.0.1/32
ListenPort = 23456
PrivateKey = {private key}
# packet forwarding
PreUp = sysctl -w net.ipv4.ip_forward=1
# port forwarding
PreUp = iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.250.0.2
PostDown = iptables -t nat -D PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.250.0.2
PreUp = iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination 10.250.0.2
PostDown = iptables -t nat -D PREROUTING -p tcp --dport 443 -j DNAT --to-destination 10.250.0.2
      
[Peer]
# main_server behind nat
PublicKey = {pub key}
AllowedIPs = 10.250.0.2/32

섬기는 사람:

[Interface]
Address = 10.250.0.2/32
ListenPort = 23456
PrivateKey = {priv key}

[Peer]
PublicKey = {pub key}
Endpoint = {proxy server ip}:23456
AllowedIPs = 10.250.0.0/16
PersistentKeepalive = 25

실행하면 sudo iptables-save -c 다음이 반환됩니다.

# Completed on Wed Aug 24 17:01:57 2022
# Generated by iptables-save v1.8.7 on Wed Aug 24 17:01:57 2022
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
[0:0] -A PREROUTING -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.250.0.2
[4:208] -A PREROUTING -p tcp -m tcp --dport 443 -j DNAT --to-destination 10.250.0.2
COMMIT

[4:208]웹 브라우저를 통해 프록시에 액세스하려고 할 때마다 패킷 및 바이트 수가 증가합니다.

관련 정보