I got a Knife <TGI.bbs@bbs.ntu.edu.tw> wrote in message
news:3d3DSE$6Tn@bbs.ntu.edu.tw...
>
> 小弟我目前的網路架構是利用 linux 當 firewall
>
> linux 上對外的網卡 設了三個實體 ip
>
> eth0 > xxx.xxx.xxx.aaa
> eth0:0 > xxx.xxx.xxx.bbb
> eth0:1 > xxx.xxx.xxx.ccc
>
> firewall 內的機器出去時都會偽裝成 xxx.xxx.xxx.aaa
>
> 如今,小弟想讓 firewall 內的機器 A 出去時偽裝成 xxx.xxx.xxx.aaa
>                                  B 出去時偉裝成 xxx.xxx.xxx.bbb
>
> 以此類堆.......
>
> 但 ipchains 好像無法設定 eth0:0 or eth0:1 ...
>
> 例如 :
>
> ipchains -A forward -s 10.100.100.1/32 -i eht0 -j MASQ
>
> 如果把上一行的 eth0 改成 eth0:0 是無法作用的
>
> 所以想請問高手,還有什麼方法可以達到嗎?
>

嗯﹐不知道是否我還不是很了解  ipchains 的運作﹐在我的實在中﹐似乎還不能提供
類似 masquerade as xxxx  的功能。只能換成那個出去界面的地址。

如果您確定出去的界面是 eth0:0 的話﹐應該是可以的。但在您上面的例子中﹐前面三
組都是用 xxx.xxx.xxx ﹐請問 mask 是多少﹖如果小於 24bit 而且 mask 是一樣的話
(或說 IP 在同一個 subnet裡面)﹐那出去的封包很難確定是走 eth0:0 ﹐我猜大都會
用 eth0 出去。既然這樣﹐偽裝後的地址就成了 eth0 的了﹐那對方回來的封包﹐當然
不會丟給 eth0:0 啦。

另外還有一個設定要小心﹐雖然看上去 eth0:0 和 eh0 是不同的地址﹐但其實物理界
面都相同的﹐如果您設定了 -s eth0 -j DENY 的話﹐那在 -s eth0:0 上面的設定也就
同樣會被擋下來。不過﹐這印象有點模糊了﹐不如找個機會實作一下看看﹖