Linux
我需要根據源 IP 地址更改外部 IP 地址
我正在執行具有 5 個別名 ip 地址(實際 ip 10.64.18.1)的 iptables 防火牆。這台機器也是我所有內部機器(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
使用 source 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
選項的描述中找到以下內容:它只能用於動態分配的 IP(撥號)連接:如果您有靜態 IP 地址,則應使用 SNAT 目標。