iptables路由转发

#!/bin/sh

echo "start clear iptables table v1.3"



iptables -t nat -F                        
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD

echo "start config ip forward"
echo 1 > /proc/sys/net/ipv4/ip_forward

#set -x

echo "start const iptables"


function configRouteForward()
{
	DNAT_ETH=$1
	DNAT_ADDR=$2
	DNAT_PORT=$5
	DNAT_FORWARD_ADDR=$4
	DNAT_FORWARD_PORT=$3
	SNAT_ETH=$6
	SNAT_ADDR=$7
	SNAT_NETMASK=$8
	
	echo "Config route forward: 
			DNAT_ETH=${DNAT_ETH} 
			DNAT_ADDR=${DNAT_ADDR} 
			DNAT_PORT=${DNAT_PORT} 
			DNAT_FORWARD_ADDR=${DNAT_FORWARD_ADDR} 
			DNAT_FORWARD_PORT=${DNAT_FORWARD_PORT} 
			SNAT_ETH=${SNAT_ETH} 
			SNAT_ADDR=${SNAT_ADDR} 
			SNAT_NETMASK=${SNAT_NETMASK}"
	
	set -x
	iptables -t nat -A PREROUTING -i $DNAT_ETH -d $DNAT_ADDR -p tcp --dport $DNAT_FORWARD_PORT -j DNAT --to $SNAT_ADDR:$DNAT_PORT
	iptables -t nat -A POSTROUTING -o $SNAT_ETH -d $SNAT_NETMASK -j SNAT --to $DNAT_FORWARD_ADDR
	set +x
	
}


function onExitCallback()
{
	echo "networkmapstart exit!"

	echo "start clear iptables table"

	iptables -t nat -F                        
	iptables -F INPUT
	iptables -F OUTPUT
	iptables -F FORWARD
	
	echo 0 > /proc/sys/net/ipv4/ip_forward
	exit
}


trap 'onExitCallback' SIGTERM
trap 'onExitCallback' SIGINT

#配置路由转发
configRouteForward eth0 192.168.1.101 22101 192.168.2.103 22 eth1 192.168.2.101 192.168.2.0/24

#iptables -t nat -A PREROUTING -i eth0 -d 192.168.1.101 -p tcp --dport 22101 -j DNAT --to 192.168.2.101:22
#iptables -t nat -A POSTROUTING -o eth1 -d 192.168.2.0/24 -j SNAT --to 192.168.2.103


iptables -L -t nat

while true
do
	sleep 10
done

PREROUTING和POSTROUTING是Linux内核中网络地址转换(NAT)的两个阶段。

PREROUTING阶段发生在数据包进入路由表之前,主要用于修改目标IP地址和端口号。这个阶段通常用于目标地址转换(DNAT),即将数据包转发到另一个IP地址和端口上。POSTROUTING阶段则发生在数据包从路由表中选择出接口之后,主要用于修改源IP地址和端口号。这个阶段通常用于源地址转换(SNAT),即将数据包的源IP地址和端口号修改为路由器的IP地址和端口号,以便目标服务器返回数据时能够正确地路由到路由器。1

简而言之,PREROUTING链用于将数据包的公网IP地址转换为内部网络的IP地址,以便数据包能够被内部网络上的设备访问。POSTROUTING链则用于将内部网络上的设备返回的数据包的公网IP地址转换为内部网络的IP地址,以便数据包能够正确地离开内部网络并返回给发送者

Iptables 最佳实践 ! | 《Linux就该这么学》 (linuxprobe.com)

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值