Openvpp 服务器为除自己之外的所有人路由流量吗?

Openvpp 服务器为除自己之外的所有人路由流量吗?

我想用 Openvpn 设置子网到子网 vpn 网关,它应该如下所示:

[gwA]===[devA1]===[ovpnServer]<---vpn--->[ovpnClient]===[devB1]===[gwB]

[gw?] 是我的子网的默认网关
[devA1] 是我的 openvpn 服务器子网上的 N 台计算机中的第一台
[devB1] 是我的 openvpn 客户端子网上的 M 台计算机中的第一台

这不是我第一次尝试使用 openvpn。我做过几次这样的配置,没有遇到我自己无法解决的问题。但这次,我再也没有什么主意了。

我在我的 openvpn 节点上使用 tun 接口并正确应用有关路由和防火墙的所有文档。

我的问题是:
- 我可以从 ovpnServer ping ovpnClient
- 我可以从 ovpnClient ping ovpnServer
- 我可以从任何 devA ping ovpnClient 吗?
- 我可以从任何 devB ping ovpnServer 吗?
- 我可以从 ovpnClient ping 任何 devA 吗?
- 我不能从 ovpnServer ping 任何 devB? (1)
- 我可以从任何 devB? ping 任何 devA?
- 我可以从任何 devA? ping 任何 devB?
(1) 但是如果我使用 ovpnServer eth0 接口作为 ping 接口,我就可以从 ovpnServer ping 任何 devB? ("ping -I ${lanIP} ${any-devB-IP}")

我不确定,但我假设我的 Linux ovpnServer 系统选择 tun0 的 IP 作为 ping devB? 机器的 IP。如果这是正确的,那么这个 IP 不起作用。但它可以使用 eth0 的 IP 作为 ping 源 IP!

有什么建议可以使我的路由完全正常运行?

这是我的 iptables 规则:

ovpnServer >$ iptables --list-rules:

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N DOCKER
-N DOCKER-ISOLATION
-N f2b-sshd
-A INPUT -p udp -m udp --dport 68 -j ACCEPT
-A INPUT -p tcp -m multiport --dports 22 -j f2b-sshd
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -p tcp -m set --match-set minuteman dst,dst -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -j DOCKER-ISOLATION
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A FORWARD -i eth0 -o tun0 -j ACCEPT
-A FORWARD -i tun0 -o eth0 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m set --match-set minuteman dst,dst -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REJECT --reject-with icmp-port-unreachable
-A DOCKER-ISOLATION -j RETURN
-A f2b-sshd -j RETURN

ovpn服务器>$ iptables -t nat --list-rules:

-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-N DOCKER
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A POSTROUTING -s 192.168.254.0/24 ! -o docker0 -j MASQUERADE
-A POSTROUTING -o tun0 -j MASQUERADE
-A DOCKER -i docker0 -j RETURN

ovpnClient >$ iptables --list-rules:

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N DOCKER
-N DOCKER-ISOLATION
-N f2b-sshd
-A INPUT -p udp -m udp --dport 68 -j ACCEPT
-A INPUT -p tcp -m multiport --dports 22 -j f2b-sshd
-A FORWARD -j DOCKER-ISOLATION
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A FORWARD -p tcp -m set --match-set minuteman dst,dst -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i eth0 -o tun0 -j ACCEPT
-A FORWARD -i tun0 -o eth0 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m set --match-set minuteman dst,dst -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REJECT --reject-with icmp-port-unreachable
-A DOCKER-ISOLATION -j RETURN
-A f2b-sshd -j RETURN

ovpn客户端 >$ iptables -t nat --list-rules:

-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-N DOCKER
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A POSTROUTING -s 192.168.254.0/24 ! -o docker0 -j MASQUERADE
-A POSTROUTING -o tun0 -j MASQUERADE
-A DOCKER -i docker0 -j RETURN

答案1

因此,您需要设置以下一组路由并允许在两个 OpenVPN 上转发:

在 OpenVPNServer 上:

ip route add 192.168.101.0/24 via 10.8.0.4
iptables -t nat -I POSTROUTING -o tun0  -j MASQUERADE
iptables -I FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -I FORWARD -i tun0 -o eth0 -j ACCEPT
iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

在 OpenVPNClient 上:

ip route add 192.168.100.0/24 via 10.8.0.1
iptables -t nat -A POSTROUTING -o tun0  -j MASQUERADE
iptables -I FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -I FORWARD -i tun0 -o eth0 -j ACCEPT
iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

在 gwA 上:

ip route add 192.168.101.0/24 via 192.168.100.2

在 gwB 上:

ip route add 192.168.100.0/24 via 192.168.101.2

并确保在 OpenVPNServer 配置文件 (server.conf) 中包含以下行:

route add 192.168.101.0 255.255.255.0
push "route 192.168.100.0 255.255.255.0"
iroute 192.168.101.0 255.255.255.0
client-to-client

相关内容