인터넷에서 해당 서비스에 액세스할 수 있도록 포트 포워딩해야 하는 NAS 서버가 있습니다. 그러나 내 ISP가 포트를 차단했기 때문에 저렴한 Ubuntu VPS를 구입하여 그곳에서 OpenVPN 서버를 실행한 다음 어떻게든 전체 NAS 트래픽과 필요한 포트를 그곳으로 리디렉션했습니다.
내 설정은 다음과 같습니다.
+--------------------------------+
| Raspi |
(192.168.0.101/24)| |(192.168.1.1/24)
(192.168.0.1/24) AP<>=================={wlan0 eth0}================<>NAS (192.168.1.102/24)
| \ / |
| +----------------------+ |
| | iptables and | |
| | routing engine | |
| +-----------+----------+ |
| | |
| {tun0} |
| 10.8.0.6 |
+--------------------------------+
VPS IP를 사용하여 SSH를 통해 Raspberry Pi에 연결할 수 있으므로 VPS 측이 올바르게 구성된 것 같습니다. 이것이 작동하도록 내가 한 일입니다.
iptables -t nat -A PREROUTING -d A.B.C.D -p tcp --dport 22 -j DNAT --to-dest 10.8.0.6:22
iptables -t nat -A POSTROUTING -d 10.8.0.6 -p tcp --dport 22 -j SNAT --to-source 10.8.0.1
내 OpenVPN 서버 구성:
port X
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
client-config-dir ccd
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
keepalive 10 120
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
나는 또한 다음을 수행했습니다.
sysctl -w net.ipv4.ip_forward=1
그리고 DEFAULT_FORWARD_POLICY="ACCEPT"
추가하세요/etc/default/ufw
# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to eth0
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
# END OPENVPN RULES
도착하다
/etc/ufw/before.rules
OpenVPN 클라이언트 구성:
client
dev tun
proto udp
remote A.B.C.D X
resolv-retry infinite
nobind
user nobody
group nogroup
persist-key
persist-tun
ns-cert-type server
comp-lzo
verb 3
<ca>
XXX
</ca>
<cert>
YYY
</cert>
<key>
ZZZ
</key>
eth0 트래픽을 tun0으로 리디렉션하고 터널을 통해 포트 Y와 Z를 전달하려면 어떻게 해야 합니까?
내가 아는 것은 포트 22에 대해 했던 것처럼 다른 포트에 대해서도 그에 따라 VPS를 재구성해야 한다는 것입니다.
답변1
다음 명령을 사용하여 Raspi에서 트래픽을 성공적으로 리디렉션했습니다.
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o tun0 -j MASQUERADE
NAS에서 경로를 추적하면 터널을 통과하게 됩니다. 이제 이 터널의 포트를 전달하기만 하면 됩니다.
업데이트(전체 프로젝트 해결):
몇 시간의 검색 끝에 마침내 올바른 포트 전달 명령을 찾았습니다. Raspi에서 다음 명령을 실행했습니다.
iptables -t nat -I PREROUTING -p tcp -i tun0 -d 10.8.0.6 --dport <port> -j DNAT --to 192.168.1.102:<port>
iptables -I FORWARD -p tcp -i tun0 -d 192.168.1.102 --dport <port> -j ACCEPT
그리고 이 스레드 시작 부분에서 포트 22에 대해 처음 수행한 것처럼 내 VPS에서 다음 명령을 수행합니다.
iptables -t nat -A PREROUTING -d 217.160.14.45 -p tcp --dport <port> -j DNAT --to-dest 10.8.0.6:<port>
iptables -t nat -A POSTROUTING -d 10.8.0.6 -p tcp --dport <port> -j SNAT --to-source 10.8.0.1
이제 ISP의 방화벽을 우회하고 VPS 측의 포트 전달을 사용하여 NAS와 해당 서비스에 액세스할 수 있습니다. 튜토리얼로 활용하시면 됩니다 :)