Networking

神秘的內部路由

  • August 4, 2019

我正在調查安裝 Snort IDS 後在我管理的伺服器上發現的一些異常情況。

我有大約 10 個使用 Ansible 設置並定期配置的 Ubuntu 生產網路伺服器。其中之一是顯示非常奇怪的請求路由。

假設伺服器的公共 IP 是111.1.1.11.

  • 這是一個數字海洋液滴。
  • 它只有一個網卡。
  • ifconfig顯示具有公共 IP 的 NIC 111.1.1.11

當我查看 Snort 中的日誌時,以及當我使用iftop監控網路流量時,我看到:

  • 我期望的所有流量(ssh、https、一個 SQL 埠)都被路由到位於10.0.0.0-10.255.255.255範圍內的私有地址的主機。假設它是:10.20.0.10
  • 其他埠上的流量不會在那裡重定向,而是解析到111.1.1.11.

如果我查看我的iptables規則,沒有提到這個 host 10.20.0.10,或者任何不尋常的路由。netstat沒有顯示任何異常。如果我 ping10.20.0.10我可以看到那裡有東西。我看不到伺服器上執行的任何意外程序。

我不知道為什麼或如何將來自外部地址的流量路由到這個私有地址。我檢查了其他 10 台伺服器(它們的配置完全相同,通過 Ansible),它們沒有這種奇怪的路由行為。他們的所有流量都解析到各自公共 IP 上的正常埠。

有任何想法嗎?

更新:

在我們使用 Digital Ocean 託管的伺服器上,網路介面配置似乎是非標準的。

標準配置:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

做配置:

auto lo
iface lo inet loopback
   dns-nameservers 67.207.67.2 67.207.67.3 # This is custom Digital Ocean DNS

auto eth0
iface eth0 inet static
   address 111.1.1.11/20
   gateway 111.1.0.1

# control-alias eth0
iface eth0 inet static
   address 10.20.0.10/16

所以這就是解開謎團的一部分。我們的其他 DO 託管伺服器具有類似的配置(顯然具有不同的 IP)。

剩下的問題是我們的其他 DO 託管伺服器不會將任何傳入流量路由到“控制別名 eth0”下列出的地址,所以我仍然對為什麼一台伺服器這樣做而其他伺服器不這樣做感到困惑。

事實證明,私有地址就是 Digital Ocean 所稱的“錨 IP”,在內部用於路由來自浮動 IP 的流量。

其他人為那個 Droplet 添加了一個浮動 IP,而我沒有意識到。

/掌臉

好吧,至少我學到了一些新東西,也許有一天這會對其他一些困惑的系統管理員有所幫助。

可能的解決方案:

  • 擺脫浮動 IP
  • 調整 Snort 配置(它為該流量拋出了很多誤報,並且會阻止大部分流量)

引用自:https://serverfault.com/questions/977886