我有一个远程办公室,带有运行 OpenVPN 的防火墙,客户端可以连接到该防火墙。
防火墙接口:
* eth0 - 1.2.3.4(公共)
* br0 - 192.168.1.1 (/24)
* tun0 - 192.168.254.1(/24,VPN 客户端)
因此 VPN 客户端 192.168.254.0/24 可以看到 192.168.1.0/24,尽管他们不需要。但我确实需要 192.168.1.0/24 才能与 VPN 客户端通信。从防火墙本身,我可以通过 SSH 连接到 VPN 客户端。从一个 VPN 到另一个我可以通过 SSH 连接 - 虽然这个流程不是必需的,但在某些时候它可能会很好。问题是我无法从 192.168.1.0/24 上的主机通过 SSH 连接到 VPN 客户端。每个链、输入、转发和输出的默认策略是丢弃。
我觉得这不是 OpenVPN 问题,而是 netfilter (iptables) 问题。
相关规定:
INPUT -p udp --dport 1194 -j ACCEPT
FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
FORWARD -i br0 -o tun0 -j ACCEPT
FORWARD -i tun0 -o br0 -j ACCEPT
FORWARD -s 192.168.254.0/24 -j ACCEPT
OUTPUT -d 192.168.254.0/24 -j ACCEPT
上述规则都得到了命中。我已经尝试了具有各种源和目标接口以及 IP 地址的其他规则,但无法提出缺少的内容。我最初认为,最明显的是:
转发 -d 192.168.254.0/24 -j 接受
...但是添加后它不起作用。甚至没有受到打击。
=== EDIT 1 ===
防火墙有以下路由:
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 br0
192.168.254.0 0.0.0.0 255.255.255.0 U 0 0 0 tun2
此外,以下规则(也在上面列出)......
FORWARD -i br0 -o tun0 -j ACCEPT
...当 192.168.1.0/24 主机尝试访问 VPN 客户端时被点击。
=== 编辑 2 ===
从 192.168.1.x(特别是 .171)我做了traceroute --icmp 192.168.254.2
一段时间在防火墙的 tun0 接口上运行数据包捕获,我看到了请求但没有回复。目标 192.168.254.2 从 192.168.254.0/24 回复 traceroute。它允许所有 ICMP。广泛的防火墙规则允许此流量,FORWARD -i br0 -o tun0 -j ACCEPT
并且我看到它已相应记录。
你的 FORWARD 表中有这个:
要么我对本地路由表的工作方式有误,要么有其他问题,但这是我为使其正常工作所做的工作。我更改了 VPN 客户端的本地子网,因为它与 VPN 服务器后面的子网相同,即 VPN 服务器上的接口 br0。
VPN 服务器的防火墙规则正确,VPN 配置正确。
VPN 客户端上的路由表在连接到 VPN 时,正在获得具有正确度量和接口的正确路由......具有获胜度量的 0.0.0.0 和 192.168.1.0/24 都指向 tun0 接口。