- 论坛徽章:
- 0
|
环境:多台linux主机,例如主机1 主机2,每台主机都有一个公网ip,例如
主机1:公网ip:120.192.96.3 绑定在br0,小网ip:192.168.1.2,绑定在br0:1;在linux有个windows虚拟机,ip为192.168.1.3
主机2:公网ip:120.192.96.4 绑定在br0,小网ip:192.168.1.2,绑定在br0:1;在linux有个windows虚拟机,ip为192.168.1.3
先拿主机1为例,为了使windows虚拟机可以访问公网,设置虚拟机的网关为192.168.1.2,设置linux为路由模式,即echo "1" >/proc/sys/net/ipv4/ip_forward
然后开启nat,即$IPTABLES -t nat -A POSTROUTING -o br0-s ‘192.168.1.0/24’ -j MASQUERADE,这样虚拟机就可以访问公网了。
现在的问题是:
多台主机在通过交换机连接在一起,因为他们的小网ip相同,即都是192.168.1.2,所以会造成ip冲突,所以我想使linux本机小网ip(192.168.1.2)出去的时候也经过nat转换,这样就不会造成ip冲突,但是应该怎么设置啊?
上面-t nat的设置解释:
nat,这个表被查询时表示遇到了产生新的连接的包,由三个内建的链构成:PREROUTING (修改到来的包)、OUTPUT(修改路由之前本地的包)、POSTROUTING(修改准备出去的包)。
也即是说 -t nat应该是 在linux作为路由模式才会进行查询,不会对本地的ip产生作用。
比如主机3,小网ip192.168.1.22,公网ip 192.168.96.6
假设我将主机1本地点小网ip nat了,那么我ping主机3,即ping 192.168.1.22的时候,在主机3上用tcpdump icmp -i any抓包,是否会看到来源ip是主机1的公网ip呢?
|
|