OpenVPN配置

OpenVPN配置

我家里有局域网。它位于 NAT 后面并在外部使用动态 IP 地址。在我的家庭 LAN 中,我使用 192.168.1.x IP 地址。

此外,我有一个 VPS,其 IP 为 185.xxx 地址。我现在想做的是使用OpenVPN在我的家庭局域网和VPS之间建立一条隧道,这样VPS就可以访问我家庭局域网中的共享文件。

我已经使用 OpenSSL 设置了 OpenVPN 和所有证书等。当我跑步时

openvpn --config server.conf

在 VPS 上和

openvpn --config client.conf

在我 LAN 中的 PC 上,建立了 VPN 连接,VPS 和 PC 都获得了具有 10.8.xx IP 地址的 TUN 设备。到目前为止,看来这两台计算机已连接,并且我没有看到任何错误消息。

然而,我不知道我该如何继续。

这是我的server.conf

server 10.8.0.0 255.255.255.0
verb 3
key /etc/openvpn/server/server.key
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/server.crt
dh /etc/openvpn/server/dh.pem
keepalive 10 120
persist-key
persist-tun
comp-lzo
route 192.168.1.0 255.255.255.0

dhcp-option DNS 192.168.1.1

user nobody
group nobody

proto udp
port 1194
dev tun1194
status openvpn-status.log

这是我的client.conf

client
nobind
dev tun
redirect-gateway def1 bypass-dhcp
remote 185.x.x.x 1194 udp
comp-lzo yes

redirect-gateway def1

key /etc/openvpn/client.key
cert /etc/openvpn/client.crt
ca /etc/openvpn/ca.crt

我应该如何配置客户端和服务器,以便我可以将 VPS 上的流量发送到我的 LAN? (例如在VPS上挂载SMB/CIFS共享,例如192.168.1.2)

理想情况下,如果可能的话,VPN 连接将使用我家的路由器作为 DHCP 服务器。我尝试使用dhcp-option,但没有效果。它似乎也没有将流量从 VPS 路由到我的 LAN,例如我无法ping 192.168.1.2在我的 VPS 上执行操作(我希望这应该是可能的)。

另外,是否可以从内部再连接一台PC到VPS上运行的VPN服务器,并且第三台PC也可以访问我的家庭局域网?就像这样:

Some PC on the internet <---> VPS <---> VPN tunnel <---> Home LAN

答案1

要在子网之间建立路由,您需要通告这些子网。考虑使用该push "route 192.168.1.0 255.255.255.0"选项。请参阅 OpenVPN 文档,特别是https://community.openvpn.net/openvpn/wiki/BridgingAndRouting

站点到站点 OpenVPN 隧道(=带路由的点对点)上的客户端和服务器 OpenVPN tun 接口使用的 IP 地址正是您所声明的地址。

答案2

我取得了一点进步。在服务器上使用此配置

server 10.8.0.0 255.255.255.0
verb 3
key /etc/openvpn/server/server.key
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/server.crt
dh /etc/openvpn/server/dh.pem
keepalive 10 120
persist-key
persist-tun
comp-lzo

route 192.168.1.0 255.255.255.0

push "route 192.168.1.0 255.255.255.0"
push "dhcp-option DNS 192.168.1.1"
push "dhcp-option DNS 1.1.1.1"
push "dhcp-option DNS 1.0.0.1"

push "redirect-gateway def1 bypass-dhcp"

user nobody
group nobody

proto udp
port 1194
dev tun1194
status openvpn-status.log

client
nobind
dev tun
redirect-gateway def1 bypass-dhcp
remote 185.x.x.x 1194 udp
comp-lzo yes

redirect-gateway def1

#iroute 192.168.1.0 255.255.255.0

key /etc/openvpn/client.key
cert /etc/openvpn/client.crt
ca /etc/openvpn/ca.crt

在客户端上,建立 OpenVPN 连接后我得到以下路由表:

服务器:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway.netcup. 0.0.0.0         UG    100    0        0 ens3
10.8.0.0        10.8.0.2        255.255.255.0   UG    0      0        0 tun1194
10.8.0.2        0.0.0.0         255.255.255.255 UH    0      0        0 tun1194
185.x.x.x       0.0.0.0         255.255.252.0   U     100    0        0 ens3
192.168.1.0     10.8.0.2        255.255.255.0   UG    0      0        0 tun1194

客户:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.8.0.5        128.0.0.0       UG    0      0        0 tun0
default         gateway         0.0.0.0         UG    0      0        0 eth0
10.8.0.1        10.8.0.5        255.255.255.255 UGH   0      0        0 tun0
10.8.0.5        0.0.0.0         255.255.255.255 UH    0      0        0 tun0
128.0.0.0       10.8.0.5        128.0.0.0       UG    0      0        0 tun0
link-local      0.0.0.0         255.255.0.0     U     1118   0        0 eth0
185.x.x.x       gateway         255.255.255.255 UGH   0      0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

但是,仍然无法ping 192.168.1.1从服务器访问。当然我在客户端启用了IP转发

sysctl -w net/ipv4/ip_forward=1

我还尝试在客户端上配置 iptables:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

相关内容