如何將特定目標 IP 地址的出站流量路由到 CentOS 中的 GRE 隧道?
您好我正在嘗試配置像這樣的網路圖的網路:-
好吧,我必須在我的 alpha 伺服器上創建一個 GRE 隧道,並將一些特定的流量路由到 GRE 隧道。我想在 CentOS 上進行配置。我將在下面解釋這個場景:-
我的伺服器中有兩個網卡。一個是 eth0,一個是 eth1。eth1 連接到網際網路,eth0 連接到網路 A。現在我創建了一個通過 eth1 的網際網路 GRE 隧道。現在我想要目標 IP 地址為 190.93.247.183 或 www.serverfault.com 的傳出流量應該通過我的 GRE 隧道和其餘所有流量都應該通過 eth0。我該怎麼做?我認為這可以通過靜態路由實現。請逐步解釋命令,因為我不太熟悉 CentOS 和網路。謝謝。
雖然您的描述沒有為我們提供足夠的資訊(例如 IP 等)來提供完整/完整的答案,但基本思想是您創建一個靜態路由,以便您想要的特定 IP 的任何流量都通過 GRE 隧道。
因此,例如,如果您想
190.93.247.183
通過 GRE 隧道進行路由,您可以使用以下命令添加靜態路由。ip route add 190.93.247.183 via 10.0.0.1 dev tun0
該
10.0.0.1
地址是將用作網關的 GRE 隧道的遠端地址(不是公共地址)。所以你用你在隧道上配置的任何東西替換它。在您的圖表中,您將此地址稱為
gre addr
.此外,您需要
tun0
用 GRE 隧道介面的任何名稱替換。這條路線應該添加在
client
一邊(我不確定哪一邊是你的圖表,你在那裡提到了 alpha 和 beta,但沒有在你的描述中)這將通過隧道路由該 IP 的所有內容(UDP、TCP、ICMP …)。
另請記住,這僅適用於 IP。因此,如果您想路由 www.serverfault.com(解析為多個 IP - 並且可能會不時更改),則無法通過 DNS 進行。您需要為要通過隧道路由的所有相關 IP 添加靜態路由。
最後請記住,重新啟動後靜態路由將失去。
您需要將其添加到某個配置文件中以在重新啟動後保留。根據您的發行版,這是不同的。
這是 Debian(或基於 debian)的 disto 範例:
存檔
/etc/network/interfaces
auto tun1 iface tun1 inet static address <tunnel IP> netmask <tunnel subnet mask> pre-up iptunnel add tun1 mode gre local <local IP> remote <remote IP> ttl 255 up ifconfig tun1 multicast pointopoint <remote tunnel IP> post-up ip route add <IP to route via tunnel> via <remote tunnel IP> dev tun0 post-down iptunnel del tun1
編輯:
抱歉,我沒有看到您提到您使用 CentOS。
下面介紹如何在 CentOS(或任何基於 RHEL)的機器上添加永久靜態路由。
您需要根據您的介面名稱創建一個路由文件。
因此,例如,如果您的介面名稱(在您的情況下為隧道),
tun0
那麼您需要創建以下文件:/etc/sysconfig/network-interfaces/route-tun0
您只需在其中添加以下內容:
<IP to route via tunnel> via <remote tunnel IP>
對於您想通過隧道路由的任何額外 IP 或子網,您只需在同一個文件中添加更多行,如 abone 行。
對於子網,您可以按以下格式添加它們:
10.0.0.0/8
最後要應用上述配置,您可以先關閉然後再打開 tun0 介面
ifdown tun0 ; ifup tun0
或完全重啟網路
service network restart