我正在运行一个iptables防火墙5个别名ip地址(实际ip 10.64.18.1)。 这台机器也是我所有内部机器的出口(192.168.18。*)。 我的问题是,当192.168.18.65出去时,我需要我的网关说IP是10.64.18.107而不是10.64.18.1。 这可能吗? 有没有一个后续的命令可以做到这一点?
*filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [276:56637] -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -i br1 -o br0 -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -i br0 -o br1 -j ACCEPT -A FORWARD -p tcp -m tcp --dport 21 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT -A FORWARD -p tcp -m tcp --dport 22 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT -A FORWARD -p tcp -m tcp --dport 53 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT -A FORWARD -p udp -m udp --dport 53 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT -A FORWARD -p tcp -m tcp --dport 2048:2248 -j ACCEPT -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT *nat :PREROUTING ACCEPT [1558:188540] :POSTROUTING ACCEPT [55:4040] :OUTPUT ACCEPT [87:6458] -A PREROUTING -i br1 -p tcp -m tcp -d 10.64.18.107 --dport 2048:2248 -j DNAT --to-destination 192.168.18.65 -A PREROUTING -i br1 -p tcp -m tcp -d 10.64.18.146 --dport 53 -j DNAT --to-destination 192.168.18.50:53 -A PREROUTING -i br1 -p udp -m udp -d 10.64.18.146 --dport 53 -j DNAT --to-destination 192.168.18.50:53 -A PREROUTING -i br1 -p tcp -m tcp -d 10.64.18.144 --dport 21 -j DNAT --to-destination 192.168.18.60:21 -A PREROUTING -i br1 -p tcp -m tcp -d 10.64.18.144 --dport 22 -j DNAT --to-destination 192.168.18.60:22 -A PREROUTING -i br1 -p tcp -m tcp -d 10.64.18.126 --dport 22 -j DNAT --to-destination 192.168.18.126:22 -A PREROUTING -i br1 -p tcp -m tcp -d 10.64.18.118 --dport 22 -j DNAT --to-destination 192.168.18.118:22 -A POSTROUTING -o br1 -j MASQUERADE COMMIT
使用源NAT( SNAT )规则而不是MASQUERADE 。 这可以让你控制源地址,所以你可以做这样的事情:
iptables -t nat -A POSTROUTING -o br1 \ -s 192.168.18.65 -j SNAT --to-source 10.64.18.107
等等。
如果你看看iptables手册页,你可以在MASQUERADE选项的描述中find以下内容:
它只能与dynamic分配的IP(拨号)连接一起使用:如果您有静态IP地址,则应使用SNAT目标。