我有一台启用了 OpenVPN 服务器的华硕 RT-N66U 路由器。我需要让连接的 OpenVPN 客户端的一个端口在互联网上可用。因此,我想将端口 80 转发到通过 OpenVPN 连接到路由器的设备。
首先,我尝试 TUN 配置。客户端的 IP 地址为 10.8.0.5。我将端口 80 转发到 10.8.0.5
问题是它只能在内部局域网中工作。我也可以使用外部 IP 地址,并正常将所有数据包转发到 10.8.0.5 到客户端,但从互联网上我总是会超时,看起来数据包到达了设备但没有响应。
我尝试手动修改 iptableshttps://community.openvpn.net/openvpn/wiki/BridgingAndRouting并没有什么帮助。
现在我重新配置了 OpenVPN 以使用 TAP。同样,它在 LAN 上完全可以工作,但在 Internet 上却不行。一定是我漏掉了什么。
以下是适用于 booth 配置的所有 iptables 规则的列表https://gist.github.com/tprochazka/72b5ca9b686d20b200c5f2662d0e9db8(IP 表由路由器本身生成)
有人能告诉我是什么阻止了从 eth0 到 tun/tap 接口的流量吗?
答案1
您对配置的描述非常不完整,所以我只能冒险猜测有几件事需要检查。
首先,你添加了客户对客户指令到服务器配置?这将允许你绕过大多数iptables相关问题,因为数据包不是通过通常的堆栈,但它们将被内部路由到开放VPN。
您是否注意到以下规则
Chain FORWARD (policy DROP) target prot opt source destination ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED DROP all -- anywhere anywhere
阻止两个客户端之间的通信?iptables规则按顺序应用:只要找到第一个合适的规则,就停止对后续规则的进一步处理,并使用适用的规则。因此,每当一个新的数据包到达时,上面的第一条规则不适用,第二条规则适用,因此适用第二条规则,并且新的数据包被丢弃。因此没有新的连接曾经已确立的。
我是不是确保这就是使你的配置正常工作所需的全部内容,但你可以先尝试修改上述两点,然后再回来进行另一次迭代,如果你已经确定上述原因并不是你恶作剧的唯一原因。