題 通過OpenVPN連接的GRE隧道接收的Linux虛擬機上的流量轉發


我正在嘗試通過OpenVPN網絡路由發往公共互聯網的流量,其中流量將通過網絡上的另一個客戶端(恰好是VirtualBox VM)退出VPN。

為了解釋拓撲,我將使用客戶端A作為流量發起者,並將客戶端E作為流量的期望退出/假設原點。客戶端和服務器都是Linux機器。

客戶端A和E都連接到OpenVPN服務器,並在服務器創建的子網上具有本地地址;讓我們說10.8.0.0/16,其中服務器有10.8.0.1,客戶端A,E有... 2,... 3。客戶端可以通過服務器相互訪問。 OpenVPN服務器還有一個到客戶端E的GRE隧道,它運行在OpenVPN連接之上。

目前,抽象拓撲/流程如下所示:

(A) ={OpenVPN}=> (OpenVPN Server) ={GRE in OpenVPN}=> (E) -> ...

我遇到的問題是,一旦流量到達客戶端E,它就不會通過E的默認網關發送到公共互聯網。

客戶端的相關配置如下:

A:

default gateway is the OpenVPN server (10.8.0.1)  

OpenVPN服務器:

ip rule add from 10.8.0.2 lookup node  

路由表'node'具有以下路由:

default dev gre5  scope link  
10.8.0.0/16 dev tun0  proto static  scope link  src 10.8.0.1  

E:

default gateway is the VirtualBox nat network (through which it has a working Internet connection)

net.ipv4.ip_forward = 1  
net.ipv4.conf.all.forwarding = 1  
net.ipv4.conf.default.forwarding = 1  
iptables -t nat -A POSTROUTING -s 10.8.0.0/16 -o eth0 -j MASQUERADE

The iptables policy for E's filter table is to accept everything.

使用tcpdump我可以看到A的數據包來自E的GRE隧道接口,但它們似乎落在了E.我已經能夠驗證它們沒有通過E的任何接口轉發(環回,虛擬隧道也沒有VBox nat網絡接口;上面的eth0)。

我是否遺漏了一些與GRE隧道有關的額外/特殊配置,或與之相關的內容?此問題是否與端點客戶端是VM有關?
或者,是否有更好的方法來引導通過OpenVPN網絡和客戶端的外部網絡流量?

如果需要,我很樂意提供更多詳細信息。

根據@MariusMatutiae的要求,E的路由表

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use     Iface
default         10.0.2.2        0.0.0.0         UG    0      0        0 eth0
10.0.2.0        *               255.255.255.0   U     0      0        0 eth0
10.8.0.0        *               255.255.0.0     U     0      0        0 tun0
10.10.5.0       *               255.255.255.0   U     0      0        0 gre5
192.168.56.0    *               255.255.255.0   U     0      0        0 eth1

在eth0連接到VBox nat網絡的地方,eth1連接到我用來ssh到VM的主機網絡,tun0是OpenVPN接口,gre5是GRE隧道的接口。


4
2018-05-31 21:25


起源


請發布路由表 E 。 - MariusMatutiae
@MariusMatutiae:我已根據您的要求更新了OP。 - ThomasL744


答案: