我的 OpenSUSE 服务器上设置了两个 OpenVPN 服务器(10.8.0.0 和 10.9.0.0)。在一个网络中,每台计算机对其他任何计算机都是可见的,但我想让计算机跨网络可见。我想像这样路由数据包:当用户(例如 10.8.0.6)ping 另一个 VPN(10.9.0.6)上的地址时,数据包将路由到 10.9.0.1,然后路由到此 VPN 中的相应计算机。如何使用iptables
或其他工具实现此目的?我尝试了末尾的命令本节但无济于事。
答案1
DD-WRT 项目的 wiki 上有一些 OpenVPN 示例,其中有一个示例配置,可以完全按照你的需要进行操作。高级配置:多路由网络部分。
您需要牢记的关键部分在此摘录中:
由于两者都将连接到同一台服务器,因此您不能对两个客户端使用相同的端口号,因此我们将为第一个客户端提供端口 1999,为第二个客户端提供端口 2000。此外,我们需要告诉客户端 1 如何到达客户端 2 的子网,反之亦然。这意味着在我们的配置中包含第二个路由条目。
您最有可能需要添加到现有配置中的是以下内容:
10.8.0.0 上的客户端 OpenVPN 配置
port 2000
# Create routes
route add -net 10.8.0.0 netmask 255.255.255.0 gw 10.8.0.1
route add -net 10.9.0.0 netmask 255.255.255.0 gw 10.8.0.1
10.8.0.0 上的客户端的 iptables 配置
# Open firewall holes
iptables -I INPUT 2 -p udp --dport 2000 -j ACCEPT
iptables -I FORWARD -i br0 -o tun0 -j ACCEPT
iptables -I FORWARD -i tun0 -o br0 -j ACCEPT
10.9.0.0 上的客户端 OpenVPN 配置
port 1999
# Create routes
route add -net 10.9.0.0 netmask 255.255.255.0 gw 10.9.0.1
route add -net 10.8.0.0 netmask 255.255.255.0 gw 10.9.0.1
10.9.0.0 上的客户端的 iptables 配置
# Open firewall holes
iptables -I INPUT 2 -p udp --dport 1999 -j ACCEPT
iptables -I FORWARD -i br0 -o tun0 -j ACCEPT
iptables -I FORWARD -i tun0 -o br0 -j ACCEPT
服务器的 OpenVPN 配置
# Create routes
route add -net 10.8.0.0 netmask 255.255.255.0 gw 10.8.0.6
route add -net 10.9.0.0 netmask 255.255.255.0 gw 10.9.0.6
服务器的 iptables 配置
# Open firewall holes for Client1
iptables -I INPUT 2 -p udp --dport 2000 -j ACCEPT
iptables -I FORWARD -i br0 -o tun0 -j ACCEPT
iptables -I FORWARD -i tun0 -o br0 -j ACCEPT
# Open firewall holes for Client2
iptables -I INPUT 2 -p udp --dport 1999 -j ACCEPT
iptables -I FORWARD -i br0 -o tun1 -j ACCEPT
iptables -I FORWARD -i tun1 -o br0 -j ACCEPT
# Allow Forwarding packets between Client1 and Client2
iptables -I FORWARD -i tun0 -o tun1 -j ACCEPT
iptables -I FORWARD -i tun1 -o tun0 -j ACCEPT
请注意,这些说明用于设置以太网路由,该路由设置起来更容易,可能正是您需要的。但是,您应该查看桥接和路由之间的区别以及如何设置的概述以太网桥接如果您认为您需要桥接所提供的功能。