2009年1月13日 星期二

移除routing table entry

Linux有個神奇的特性,那就是即使link沒有up,interface一樣可以up,這一點和windows不一樣,於是也就照成了我的困擾……

network device上通常會有不只一張網卡,而為了開發方便,我會給其中的一些網卡ip,由於都在同一個lan,因此這些網卡up之後的routing destination ip都一樣,若dst ip重覆,則priority最高的優先,若你要連的ip不是eth0(通常priority最高)的話,那麼就會連不上

因為雖然每張網卡的ip不一樣,但他們送回的封包都會從eth0送回,這就導致,你往eth1連線,而return pkt卻是從eth0返回,由於return pkt的source ip為eth0的ip,因此連線永遠建不起來,你也就沒回連向該張網卡

解決的辦法是將其他網卡從routing table裡拿掉,只留下你要連的網卡,這樣就可以保證封包會從該網卡return
又或者建立正確的routing table

移除routing entry的方法是:
route del -net 192.168.0.0 netmask 255.255.0.0 dev eth0

這樣就會將dst ip為192.168.0.0從eth0出去的routing rule從routing table拿掉了

.

沒有留言: