我正在尝试在树莓派上设置一个 openvpn 服务器,作为道路连接的端点,但该设备位于网络上,而不是网络上任何机器的网关,我怀疑这是问题。
我查看了许多教程并正确建立了 vpn 连接,并且客户端路由正常,因为我可以通过隧道连接到 raspi,但是如果我在网络上 ping 其他任何东西,我会收到请求超时。我唯一的区别是我使用的是 tcp 连接,而不是 UDP 连接,但已将防火墙规则调整为套件。
我尝试了许多不同的 iptables 规则,启用了转发,甚至在cyberoam 上安装了一个静态路由来尝试使其工作。
我的配置如下。
服务器...
local 192.168.1.84
port 1194
proto tcp
dev tun
ca /etc/openvpn/ca.crt # generated keys
cert /etc/openvpn/folkarch.crt
key /etc/openvpn/folkarch.key # keep secret
dh /etc/openvpn/dh2048.pem
server 10.8.0.0 255.255.255.0 # internal tun0 connection IP
ifconfig 10.8.0.1 10.8.0.2
ifconfig-pool-persist ipp.txt
push "route 10.8.0.1 255.255.255.255"
#route 192.168.1.0 255.255.255.0
push "route 10.8.0.0 255.255.255.0"
push "route 192.168.1.0 255.255.255.0"
#push dhcp-option DNS 8.8.8.8"
push "redirect-gateway def1"
keepalive 30 240
comp-lzo # Compression - must be turned on at both end
persist-key
persist-tun
status log/openvpn-status.log
verb 3 # verbose mode
client-to-client
duplicate-cn
要匹配的客户端配置,其中没有太多内容..
防火墙.sh
#!/bin/bash
#/sbin/iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source 192.168.1.84
/sbin/iptables -A INPUT -i tun+ -j ACCEPT
/sbin/iptables -A OUTPUT -o tun+ -j ACCEPT
/sbin/iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
/sbin/iptables -I FORWARD -i tun0 -o eth0 -s 10.8.0.0/24 -d 192.168.1.0/24 -m conntrack --ctstate NEW -j ACCEPT
/sbin/iptables -I FORWARD -i tun0 -o eth0 -s 10.8.0.0/24 -d 10.1.0.0/8 -m conntrack --ctstate NEW -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 1194 -j ACCEPT
/sbin/iptables -A FORWARD -i tun+ -j ACCEPT
/sbin/iptables -A FORWARD -i tun+ -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A FORWARD -i eth0 -o tun+ -m state --state RELATED,ESTABLISHED -j ACCEPT
注释的第一行是使它工作的另一种尝试.. 这在 /etc/network/interfaces 中被称为预先设置。
静态路由是10.8.0.0/24,网关192.168.1.84,cyberoam上的PortA。
正如我所说,我真的被困在这里,我可以很高兴地到达 192.168.1.84 设备,但在局域网上什么也没有。
有任何想法吗??
彼得。
附加信息...来自已连接客户端的路由表(在本例中为 mac)。
% netstat -rn pnunn@Peters-MacBook-Pro
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.0.1 UGSc 68 5 en0
default 10.8.0.5 UGScI 3 0 utun0
10.8/24 10.8.0.5 UGSc 1 0 utun0
10.8.0.5 10.8.0.6 UHr 7 0 utun0
10.8.0.5/32 link#19 UCS 1 0 utun0
127 127.0.0.1 UCS 1 0 lo0
127.0.0.1 127.0.0.1 UH 6 1179613 lo0
169.254 link#4 UCS 1 0 en0
192.168.0 link#4 UCS 4 0 en0
192.168.0.1/32 link#4 UCS 2 0 en0
192.168.0.1 c0:3f:e:e4:c:c UHLWIir 70 902 en0 375
192.168.0.4 link#4 UHLWIi 1 7 en0
192.168.0.5/32 link#4 UCS 2 0 en0
192.168.0.5 34:36:3b:cd:ca:20 UHLWIi 1 7 lo0
192.168.0.6 link#4 UHLWIi 1 0 en0
192.168.0.255 link#4 UHLWbI 1 894 en0
192.168.1 10.8.0.5 UGSc 2 5 utun0
255.255.255.255/32 link#4 UCS 2 0 en0
255.255.255.255 link#4 UHLWbI 1 13 en0
255.255.255.255/32 link#19 UCSI 1 0 utun0
VPN 客户端必须有路由才能到达网络,但网络上的机器也必须有路由才能发回响应。
因此,您必须指示本地网络上的机器要到达 vpn 客户端,它们必须将数据包发送到树莓派 IP 地址 (192.168.1.84)
要确认这是问题所在,请在网络机器上添加一条路由: route 10.8.0.0/24 via 192.168.1.84
在 Windows 上,您可以在命令提示符中添加它(以管理员身份)
在 Linux 上
如果这允许这台机器进行通信,您可以在充当网络网关的设备上添加路由。