我有一台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端配置正确,因为我可以使用我的VPS IP SSH到我的Raspberry Pi。这就是我在那里所做的事情,以使其发挥作用:
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。
答案 0 :(得分:0)
我已设法使用以下命令重定向我的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
在我的VPS上还有这些命令,因为我在这个帖子开头的第一个端口22完成了这个命令:
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及其服务。您可以将其用作教程:)