1.一對一流量完全DNAT
首先說一下網絡環境,普通主機一台做防火牆用,網卡兩塊
eth0 192.168.0.1 內網
eth1 202.202.202.1 外網
內網中一台主機 192.168.0.101
現在要把外網訪問202.202.202.1的所有流量映射到192.168.0.101上
命令如下:
[xhtml] view plaincopy
#將防火牆改為轉發模式
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -A PREROUTING -d 202.202.202.1 -j DNAT --to-destination 192.168.0.101
iptables -t nat -A POSTROUTING -d 192.168.0.101 -j SNAT --to 192.168.0.1
2.多對多流量完全DNAT
說是多對多,實際上這里的配置是指定了多個一對一
環境:
eth0 192.168.0.1 內網
eth1 202.202.202.1 、202.202.202.2 外網
內網中2台主機 192.168.0.101、192.168.0.102
現在要把外網訪問202.202.202.1的所有流量映射到192.168.0.101上,同時把把外網訪問202.202.202.2的所有流量映射到192.168.0.102上
這里順便提一下如何為網卡配置多個IP
[c-sharp] view plaincopy
ifconfig eth1:1 202.202.202.2 netmask 255.255.255.0 up
命令如下:
[c-sharp] view plaincopy
#將防火牆改為轉發模式
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -A PREROUTING -d 202.202.202.1 -j DNAT --to-destination 192.168.0.101
iptables -t nat -A POSTROUTING -d 192.168.0.101 -j SNAT --to 192.168.0.1
iptables -t nat -A PREROUTING -d 202.202.202.2 -j DNAT --to-destination 192.168.0.102
iptables -t nat -A POSTROUTING -d 192.168.0.102 -j SNAT --to 192.168.0.1
3.一對多根據協議DNAT
這個最常用,一般是內網或DMZ區內有多個應用服務器,可以將不同的應用流量映射到不同的服務器上
環境:
eth0 192.168.0.1 內網
eth1 202.202.202.1 外網
內網中2台主機 192.168.0.101(Web服務器)、192.168.0.102(郵件服務器)
現在要把外網訪問202.202.202.1的Web流量映射到192.168.0.101上,同時把把外網訪問202.202.202.1的郵件訪問流量映射到192.168.0.102上
命令如下:
[c-sharp] view plaincopy
#將防火牆改為轉發模式
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -A PREROUTING -d 202.202.202.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.101:80
iptables -t nat -A POSTROUTING -d 192.168.0.101 -p tcp --dport 80 -j SNAT --to 192.168.0.1
iptables -t nat -A PREROUTING -d 202.202.202.1 -p tcp --dport 25 -j DNAT --to-destination 192.168.0.102:25
iptables -t nat -A POSTROUTING -d 192.168.0.102 -p tcp --dport 25 -j SNAT --to 192.168.0.1
iptables -t nat -A PREROUTING -d 202.202.202.1 -p tcp --dport 110 -j DNAT --to-destination 192.168.0.102:110
iptables -t nat -A POSTROUTING -d 192.168.0.102 -p tcp --dport 110 -j SNAT --to 192.168.0.1