在我正在設定的私有雲上,我有一些 RHEL VM、網路和 OpenStack 上的路由器。我的路由器連接到公共互聯網,我的網關節點連接到路由器並透過 eth0 存取互聯網。此節點透過 eth1 連接到內部網路。我有一些內部 RHEL 節點透過其 eth0 介面連接到內部網路。這些節點都可以互相 ping 通,而且我相信每個節點的 ifcfg 檔案都設定正確。
使用 IPTables,我嘗試透過以下方式為內部節點提供網路存取權限:
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -m conntrack -ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
我還在核心層級啟用了 ipv4 轉送(預設為停用)。儲存配置並透過 SSH 連接到內部節點後,我無法 ping 通外部位址:
# ping 8.8.8.8
connect: Network is unreachable
我在 openstack 中的路由器有一條靜態路由,
目標 CIDR:我的內部網路
下一跳:我的網關節點
為什麼我的內部節點無法上網?我在這裡缺少什麼?
答案1
可能是您沒有在核心中啟用轉送 -
嘗試
echo 1 > /proc/sys/net/ipv4/forward
如果這解決了問題,請透過編輯 /etc/sysctl.conf 並新增以下行使其永久化
net.ipv4.ip_forward = 1
答案2
Network is unreachable
表示沒有定義到達 8.8.8.8 的路由。這很可能是虛擬機器直接回傳的問題,並且是虛擬機器而不是主機中的問題。
OpenStack 有許多不同的可能的網路配置。您只是寫了“網路”,並沒有提供有關虛擬機器 IP 的任何資訊。希望沒有未知的設定(已完成中間 NAT 的中間網路),在每個虛擬機器上,您需要透過路由器eth1
介面上設定的 IP 新增預設路由。例如,如果此 IP 是 10.0.2.1,則可以執行下列操作:
ip route add default via 10.0.2.1
對於永久設置,應將其添加到其特定的配置文件中(請參閱靜態路由和預設網關來自紅帽)。