透過 VPN 伺服器將流量路由到 Internet 中的某個主機

透過 VPN 伺服器將流量路由到 Internet 中的某個主機

我需要透過 VPN 伺服器將流量路由到網際網路中的某個主機。

配置:

計算機:ubuntu-12.04

eth0-xxxx/24

tun0 - inet 位址:10.8.0.6 PtP:10.8.0.5 遮罩:255.255.255.255

有 OpenVPN 伺服器(亞馬遜):

ubuntu-12.04

eth0 - yyyy/24

tun0 - inet 位址:10.8.0.1 PtP:10.8.0.2 遮罩:255.255.255.255

內部網路有主機 IP: qqqq

我想把流量傳到qqqq就丟OpenVPN伺服器了。為此我這樣做:

iptables:

我在 table mangle 中標記資料包:

sudo iptables -t mangle -A OUTPUT -d q.q.q.q -j MARK --set-mark 2

我發送流量到qqqq丟tun0:

sudo iptables -t nat -A POSTROUTING -d q.q.q.q -j SNAT --to-source 10.8.0.6

ip路由2:

我在 /etc/iproute2/rt_tables 中建立表“100”

sudo ip rule add fwmark 2 table 100
sudo ip route add default via 10.8.0.5 table 100

第一台計算機上的 tcpdump:

14:22:04.554399 IP 10.8.0.6 > qqqq.clodo.ru :ICMP 回顯請求,id 11717,seq 1,長度 64

14:22:04.681918 IP qqqq.clodo.ru > 10.8.0.6 : ICMP 回顯回复,id 11717,seq 1,長度 64

14:22:05.562577 IP 10.8.0.6 > qqqq.clodo.ru :ICMP 回顯請求,id 11717,seq 2,長度 64

14:22:05.690240 IP qqqq.clodo.ru > 10.8.0.6 : ICMP 回顯回复,id 11717,seq 2,長度 64

但沒有 ping 通。發送 2 個資料包,接收 0 個資料包,100% 資料包遺失。

答案1

您不需要標記資料包,要做計劃的事情,您需要以下內容

在伺服器設定檔中新增以下內容:

"push route q.q.q.q 255.255.255.255"

上面的程式碼會將路由推送到客戶端,因此從客戶端傳送到該 ip 的所有流量都會透過 openvpn 隧道傳送。

此外,在伺服器端,您需要接受來自客戶端的傳入流量,您可以接受來自客戶端子網路的所有流量,如下所示

iptables -A INPUT -s 10.8.0.0/24 -j ACCEPT

您可能還需要這個不確定:

iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT

您需要對從客戶端到伺服器端的通訊進行 nat [在伺服器端執行此操作]

iptables -t nat -A POSTROUTING -d q.q.q.q -j SNAT --to-source PUBLIC_IP_OR_YOUR_VPN_SERVER

而且您不需要 iproute2 或 mangle 表。

規則的順序很重要,所以請在匹配的刪除規則之前先取悅他們

相關內容