#!/bin/bash
pro='tcp'
src_host1='192.168.2.1'
src_host2='192.168.1.2'
src_host3='192.168.1.1'
src_host4='192.168.2.2'
src_port3=3222
src_port2=2222
src_port1=1222
Dst_Host1='192.168.1.2'
Dst_Host2='192.168.2.1'
Dst_Host3='192.168.2.2'
Dst_Host4='192.168.1.1'
Dst_Port=2222
#slave 1
ifconfig eth0 192.168.2.2 netmask 255.255.255.248
ifconfig eth1 192.168.1.1 netmask 255.255.255.248
#slave 2
#ifconfig eth0 192.168.1.2 netmask 255.255.255.248
#ifconfig eth1 192.168.2.1 netmask 255.255.255.248
# 清空规则
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
# Destination network address translate (dnat)
# 如图2所示
iptables -t nat -A PREROUTING -p $pro -s $src_host1 --sport $src_port3 -j DNAT --to $Dst_Host1:$src_port2
iptables -t nat -A PREROUTING -p $pro -s $src_host1 --sport $src_port2 -j DNAT --to $Dst_Host1:$src_port1
iptables -t nat -A PREROUTING -p $pro -s $src_host2 --sport $src_port3 -j DNAT --to $Dst_Host2:$src_port2
iptables -t nat -A PREROUTING -p $pro -s $src_host2 --sport $src_port2 -j DNAT --to $Dst_Host2:$src_port1
iptables -t nat -A PREROUTING -p $pro -s $src_host3 --sport $src_port3 -j DNAT --to $Dst_Host3:$src_port2
iptables -t nat -A PREROUTING -p $pro -s $src_host3 --sport $src_port2 -j DNAT --to $Dst_Host3:$src_port1
iptables -t nat -A PREROUTING -p $pro -s $src_host4 --sport $src_port3 -j DNAT --to $Dst_Host4:$src_port2
iptables -t nat -A PREROUTING -p $pro -s $src_host4 --sport $src_port2 -j DNAT --to $Dst_Host4:$src_port1
#iptables -A FORWARD -p $pro -d $Dst_Host --dport $Dst_Port -j ACCEPT
# 本地连接不经过prerouting,只经过output链,所以想要在服务器A通过本地ip访问服务器B需要在output 链增加dnat规则
#iptables -t nat -A OUTPUT -p $pro -d $src_host1 --dport $src_port -j DNAT --to $Dst_Host:$Dst_Port
#iptables -t nat -A OUTPUT -p $pro -d $src_host2 --dport $src_port -j DNAT --to $Dst_Host:$Dst_Port
# source network address translate (snat)
#iptables -t nat -A POSTROUTING -p $pro -d $Dst_Host --dport $Dst_Port -j SNAT --to $src_host1
iptables -t nat -A POSTROUTING -p $pro -d $Dst_Host1 -j SNAT --to $src_host3
iptables -t nat -A POSTROUTING -p $pro -d $Dst_Host2 -j SNAT --to $src_host4
iptables -t nat -A POSTROUTING -p $pro -d $Dst_Host3 -j SNAT --to $src_host1
iptables -t nat -A POSTROUTING -p $pro -d $Dst_Host4 -j SNAT --to $src_host2
# 显示已有规则
iptables -t nat -L -n --line-number
pro='tcp'
src_host1='192.168.2.1'
src_host2='192.168.1.2'
src_host3='192.168.1.1'
src_host4='192.168.2.2'
src_port3=3222
src_port2=2222
src_port1=1222
Dst_Host1='192.168.1.2'
Dst_Host2='192.168.2.1'
Dst_Host3='192.168.2.2'
Dst_Host4='192.168.1.1'
Dst_Port=2222
#slave 1
ifconfig eth0 192.168.2.2 netmask 255.255.255.248
ifconfig eth1 192.168.1.1 netmask 255.255.255.248
#slave 2
#ifconfig eth0 192.168.1.2 netmask 255.255.255.248
#ifconfig eth1 192.168.2.1 netmask 255.255.255.248
# 清空规则
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
# Destination network address translate (dnat)
# 如图2所示
iptables -t nat -A PREROUTING -p $pro -s $src_host1 --sport $src_port3 -j DNAT --to $Dst_Host1:$src_port2
iptables -t nat -A PREROUTING -p $pro -s $src_host1 --sport $src_port2 -j DNAT --to $Dst_Host1:$src_port1
iptables -t nat -A PREROUTING -p $pro -s $src_host2 --sport $src_port3 -j DNAT --to $Dst_Host2:$src_port2
iptables -t nat -A PREROUTING -p $pro -s $src_host2 --sport $src_port2 -j DNAT --to $Dst_Host2:$src_port1
iptables -t nat -A PREROUTING -p $pro -s $src_host3 --sport $src_port3 -j DNAT --to $Dst_Host3:$src_port2
iptables -t nat -A PREROUTING -p $pro -s $src_host3 --sport $src_port2 -j DNAT --to $Dst_Host3:$src_port1
iptables -t nat -A PREROUTING -p $pro -s $src_host4 --sport $src_port3 -j DNAT --to $Dst_Host4:$src_port2
iptables -t nat -A PREROUTING -p $pro -s $src_host4 --sport $src_port2 -j DNAT --to $Dst_Host4:$src_port1
#iptables -A FORWARD -p $pro -d $Dst_Host --dport $Dst_Port -j ACCEPT
# 本地连接不经过prerouting,只经过output链,所以想要在服务器A通过本地ip访问服务器B需要在output 链增加dnat规则
#iptables -t nat -A OUTPUT -p $pro -d $src_host1 --dport $src_port -j DNAT --to $Dst_Host:$Dst_Port
#iptables -t nat -A OUTPUT -p $pro -d $src_host2 --dport $src_port -j DNAT --to $Dst_Host:$Dst_Port
# source network address translate (snat)
#iptables -t nat -A POSTROUTING -p $pro -d $Dst_Host --dport $Dst_Port -j SNAT --to $src_host1
iptables -t nat -A POSTROUTING -p $pro -d $Dst_Host1 -j SNAT --to $src_host3
iptables -t nat -A POSTROUTING -p $pro -d $Dst_Host2 -j SNAT --to $src_host4
iptables -t nat -A POSTROUTING -p $pro -d $Dst_Host3 -j SNAT --to $src_host1
iptables -t nat -A POSTROUTING -p $pro -d $Dst_Host4 -j SNAT --to $src_host2
# 显示已有规则
iptables -t nat -L -n --line-number