iptables路由转发

本文介绍了一段脚本,演示如何使用iptables在Linux中进行PREROUTING和POSTROUTING阶段的NAT配置,实现路由转发功能。
#!/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 
iptables(Internet Protocol Table)是一个Linux内核中的包过滤防火墙工具,用于控制进出网络接口的数据包。规则转发iptables的核心功能,它定义了一系列规则(rules),根据数据包头信息(如源IP、目标IP、端口、协议等)来决定如何处理这些数据包,包括允许、拒绝、路由、日志等操作。 iptables规则转发通常遵循这样的流程: 1. **链(Chains)**:iptables分为几个主要链,如`PREROUTING`(对进入系统的流量预处理)、`INPUT`(对到达本地接口的流量处理)、`FORWARD`(对转发到其他接口的流量处理)、`OUTPUT`(对离开本地接口的流量处理)和`POSTROUTING`(对流出系统的流量后处理)。 2. **规则(Rules)**:每条规则由多个部分组成,包括目标链(target chain)、匹配条件(match criteria, 如源/目标地址、端口、协议)、动作(action, 如ACCEPT、DROP、SNAT等)以及可选的目标(如特定的网络、端口或服务)。 3. **优先级和匹配顺序**:规则根据它们的优先级执行,优先级越高优先级越靠前。匹配顺序是从上到下,一旦找到一条匹配的规则就会停止处理后续规则。 4. **规则类型**:iptables支持多种类型的规则,如单条匹配规则(-m)和目标规则(-j)。常见的规则类型包括`MATCH`(检查包头)、`LOG`(记录并丢弃)、`DNAT`(数据包目的地址转换)、`MASQUERADE`(源地址转换)等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值