我很难设置正确的 iptable 以便将 OpenVPN 流量路由到我的内部 OpenVPN 客户端。
我的网络与此类似
+-------------------------+ (public IP)| | {INTERNET}============{ eth1 Router | | | | eth2 | +------------+------------+ | (192.168.0.254) | | +-----------------------+ | | | | | OpenVPN | eth0: 192.168.0.1/24 +--------------{eth0 server | tun0: 10.8.0.1/24 | | | | | {tun0} | | +-----------------------+ | +--------+-----------+ | | | Other LAN clients | | | | 192.168.0.0/24 | | (internal net) | +--------------------+
所以基本上,我想接受端口并将 VPN 流量从路由器转发到内部 OpenVPN 盒。然后我希望 OpenVPN 盒从 eth 端口获取流量并将其发送到 tun。
以下是我尝试过的:
路由器上的 iptable:
$ iptables -A 输入 -i tun+ -j 接受 $ iptables -A 转发 -i tun+ -j 接受
# 允许 udp 1194 # iptables -A INPUT -p udp --dport 1194 -j ACCEPT
# 允许从 VPN 发起的流量访问 LAN iptables -I FORWARD -i tun0 -o eth2 \ -s 10.8.0.0/24 -d 192.168.0.0/24 \ -m conntrack --ctstate NEW -j ACCEPT
允许已建立的流量来回传递
iptables -I FORWARD -m conntrack --ctstate RELATED,ESTABLISHED \
-j ACCEPT
伪装来自 VPN 客户端的所有流量——在 nat 表中完成
iptables -t nat -I POSTROUTING -o eth0 \
-s 10.8.0.0/24 -j MASQUERADE
OpenVPN 上的 iptable
有人能指点我该如何解决这个问题吗?
答案1
如果我的猜测正确,则您正在尝试10./8
从公共网络之外使用 VPN 的范围。这行不通,因为您只能从外部通过公共 IP 地址路由流量,并且只能从192.168./16
网络内部路由范围。
一个关键要素:你的 VPN 服务器是一个普通应用程序在您的网络内部,可通过网络接口访问192.168.0.1/24
。想要从外部连接到您的 VPN 的客户端需要通过公共 IP 地址和端口进行连接,该端口从您的路由器转发到您的 VPN 应用程序。
您的路由器既不知道接口,tun
也不知道10./8
VPN 地址范围。两者都在 OpenVPN 框上处理。加密流量使用192.168./16
专用网络封装在 IP 数据包中,在路由器上进行 NAT。