背景
搭建的k8s集羣總有一個節點IP連接很不穩定,經常性斷網,並且無法通過ssh遠程連接。這種情況在實驗室內部經常出現,基本可以斷定是局域網內有人和我用了一樣的IP地址。導致的現象就是遠程連接時有時無,網絡時好時壞,主要原因在於數據包時而傳給A,時而傳給B。
解決方案
- 以往都會比較謙讓,看到IP衝突了,一般就直接自己換個IP地址用就好了。
但搭建的集羣,如果改IP地址,後面怕出現比較麻煩的事情,於是決定惡意搶佔這個IP。主要的問題在於人太多了,也不知道是誰搶佔的。
原理
惡意搶佔局域網IP的思路主要就兩個。
- 不停的訪問百度,癱瘓另一個人的正常使用,最終他覺得十分受影響了,就會自己換一個IP地址。當時試了下,寫了個死循環,用curl 不停的訪問百度。但第二天,發現沒啥用,網絡連接還是十分不穩定。
- 強制刷新局域網的mac表,更新局域網內所有鄰居的mac表,這樣所有人就都只認識我,而不認識另一個人。發現十分好用。
實現方法
現在你和對方都有同樣的IP地址,你需要做的就是告訴你們所有的鄰居,通過這個IP訪問你,而不是另一個搶佔IP的人。
使用arp強制更新局域網內所有主機的MAC表。
arping -U -s 10.x.x.155 -I eth0 10.x.x.254
# -U 是發起主動的ARP報文請求
# -s 指明ARP報文中的source ip地址。這個參數後跟你要搶佔的IP地址即可。
# -I 指定網卡名字。這個自己看下搶佔的IP地址,用的是哪張網卡。
# 最後一個參數是局域網的網關IP地址。
通過這條命令,局域網內所有主機的mac表都會把IP->mac的記錄修改爲 IP -> your mac的記錄。這樣保證所有鄰居都只認識你。
搶佔完之後,對方主機訪問網絡應該會出現問題,這樣他就會自己改一個IP地址,雙方都可以繼續正常使用。