VPN 클라이언트로 포트 전달 및 클라이언트에서 로컬 IP로 추가 전달

VPN 클라이언트로 포트 전달 및 클라이언트에서 로컬 IP로 추가 전달

openvpn 서버에 연결된 raspbian 운영 체제를 갖춘 라즈베리 파이가 있습니다. Openvpn 서버에는 공용 IP가 있으며 Ubuntu를 실행합니다. 이 방법으로 VPN 서버에서 포트 전달을 활성화하면(XXX.XXX.XXX.XXX가 공용 IP임) VPN 서버의 공용 IP 주소를 통해 Raspberry Pi에서 실행되는 웹 애플리케이션에 액세스할 수 있습니다.

iptables -t nat -A PREROUTING -d XXX.XXX.XXX.XXX -p tcp --dport 8765 -j DNAT --to-dest 10.8.0.6:8765

하지만 라즈베리 파이와 동일한 LAN에 있는 IP 카메라도 연결하고 싶습니다. 안타깝게도 IP 카메라에서 openvpn 클라이언트를 실행할 수 없으므로 IP 카메라는 로컬 IP 192.168.1.110만 갖고 포트 80에서 수신 대기합니다. 공용 IP의 포트를 raspberry pi openvpn 클라이언트로 전달한 다음 로컬 LAN의 웹캠으로 더 전달할 수 있습니까?

답변1

Raspberry Pi에서 다음을 시도해 보세요.

# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -t nat -I PREROUTING -p tcp --dport 8088 -j DNAT --to <cameraip>:<camera port>
# iptables -t nat -I POSTROUTING -s <cameraip>/255.255.255.0 -j MASQUERADE

그런 다음 pi에서 애플리케이션에 액세스하는 것과 동일한 방식으로 카메라에 액세스합니다. 단, 8765 대신 포트 8088을 사용합니다. 행운을 빌어요.

답변2

컴퓨터에서 IP 전달을 활성화하지 않는 또 다른 솔루션입니다.

  1. OpenVPN 서버에서 Raspberry로 포트를 전달합니다.
iptables -t nat -A PREROUTING \ 
   -d XXX.XXX.XXX.XXX -p tcp --dport 8888 \
   -j DNAT --to-dest 10.8.0.6:8888
  1. Raspberry에서 socat과 같은 것을 사용하여 들어오는 연결을 카메라로 전달하십시오.
socat TCP-LISTEN:8888,fork TCP:192.168.1.110:80

이것의 장점은 부작용이 있을 수 있는 컴퓨터에서 IP 전달을 활성화할 필요가 없다는 것입니다. (방화벽 규칙을 추가하지 않고) 로컬 컴퓨터에서 IP 전달을 활성화하면 잠재적으로 LAN에 있는 컴퓨터가 OpenVPN 서버 네트워크에 있는 컴퓨터를 공격할 수 있습니다(OpenVPN 서버가 이를 허용한다고 가정).

관련 정보