首先我应该提到本地和远程 LAN 位于 192.168.1.0。我的本地/客户端 LAN 路由器位于 192.168.1.1。远程 LAN 路由器也位于 192.168.1.1。实际 VPN 服务器位于 192.168.1.73。我想要的是在浏览器中输入 192.168.1.1 并访问远程 LAN。我可以在我的 Android 手机上执行此操作,但不能在我的 Linux 笔记本电脑上执行此操作。我在两台设备上使用完全相同的设置。这样做的原因是我希望能够访问我的远程/VPN LAN,无论我当前连接的网络如何 - 我经常出差。以下是配置文件:
服务器.conf:
port 1194
proto udp
dev tun
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/crt-openvpn.crt
key /etc/openvpn/easy-rsa/keys/key-openvpn.key
dh /etc/openvpn/easy-rsa/keys/dh4096.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
tls-auth /etc/openvpn/easy-rsa/keys/ta.key 0
cipher AES-256-CBC
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384:TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256
auth SHA256
comp-lzo
user nobody
group nobody
persist-key
persist-tun
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 10.8.0.1"
status /var/log/openvpn-status.log
verb 3
log-append /var/log/openvpn
status /tmp/vpn.status 10
客户端.conf:
client
remote 'name' 1194 - removed actual address since this is public
dev tun
proto udp
resolv-retry infinite
nobind
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/key.crt
key /etc/openvpn/keys/key.key
ns-cert-type server
keepalive 10 120
tls-auth /etc/openvpn/keys/ta.key 1
cipher AES-256-CBC
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384:TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256
auth SHA256
comp-lzo
user nobody
group nobody
persist-key
persist-tun
verb 3
我还设置了 dnsmasq,以确保 VPN 服务器上处理 DNS 查询。这很好用。正如我之前所说,唯一剩下的问题是当我尝试从客户端加载 192.168.1.1 时。在我的 Android 手机上,这会重定向到远程路由器,就像我希望的那样。但在我的 Linux 机器上,它会转到我的本地路由器,而我不想要这样。我不明白当我指示笔记本电脑通过远程 LAN 进行所有通信时,它如何以及为什么会看到本地 LAN。
我发现,如果我将本地 LAN 更改为 192.168.2.0,我就能访问远程 LAN 上的 192.168.1.1。但由于我经常出差,无法始终连接到我管理的网络,因此我无法确保本地子网不会与远程子网匹配。因此,我希望无论本地设置如何,都能访问远程 LAN。这是如何实现的?
谢谢。
答案1
通过使用 192.168.0.0/24 或 192.168.1.0/24(甚至 192.168.2.0/24 等),您将面临路由冲突。最好的解决方案是将您管理的所有网络重新编号为 RFC1918 中非常独特的范围。示例 LAN1:10.209.121.0/24 LAN2:10.209.122.0/24