iptables 基础使用SNAT 和 DNAT

实验环境ubuntu 充当Service端企业边界的服务器 和一台windows 充当client企业内网用户.

在这里插入图片描述
说明:
1.服务器端能够正常访问互联网.
2.企业内用户无法直接访问互联网

需求1:使client 能够正常访问外网

配置数据转发

	临时转发生效:
	echo 1>/proc/sys/net/ipv4/ip_forward

永久转发生效:
	vi  /etc/sysctl.conf 
	net.ipv4.ip_forward = 1
	配置即时生效 sysctl -p
配置:
iptables -F 清空iptables 表项

允许ssh 登录service 
iptables -I INPUT -p tcp --dport 22 -i ens33 -j ACCEPT

或者配置INPUT 默认为允许所有
iptables -P INPUT ACCEPT

允许服务器ping 回应icmprequest 发出
iptables -I OUTPUT -p icmp -j ACCEPT
允许服务器ping 回应icmp replay 进入
iptables -I INPUT -p icmp -j ACCEPT

配置SNAT
iptables -t nat -I POSTROUTING -s 172.16.0.0/24 -o ens33 -j SNAT --to 10.5.20.248

client ping 8.8.8.8 不通.
由于目的地址为8.8.8.8,到达server端时,进入PREROUTING->FORWARD->POSTROUTING. 因此需要在FORWARD 链中允许数据进出
方式1:

iptables -P FORWARD ACCEPT

方式2:

iptables -I FORWARD  -i ens38 -s  172.16.0.0/24 -j ACCEPT  //icmp request
iptables -I FORWARD -i ens33 -d 172.16.0.0/24 -j ACCEPT   //icmp replay

或者下面方法均可:

iptables -I FORWARD -i ens38 -d 8.8.8.8/32 -s 0/0 -j ACCEPT
 iptables -I FORWARD -i ens33 -s 8.8.8.8/32  -d 0/0 -j ACCEPT

 iptables -I FORWARD -i ens38 -s 172.16.0.0/24 -d 8.8.8.8/32 -j ACCEPT
 iptables -I FORWARD -i ens33 -s 8.8.8.8/32 -d 172.16.0.0/24  -j ACCEPT

需求2: 将client 去往8.8.8.8 的流量重定向到114.114.114.114

iptables -t nat -I PREROUTING -d 8.8.8.8/32 -i ens38 -j DNAT --to 114.114.114.114

需求3:外网访问10.5.20.248 :80 即访问172.16.0.2:80

iptables -t nat -I PREROUTING -d 10.5.20.248/32 -i ens33 -p tcp --dport 80 -j DNAT --to 172.16.0.2:80

iptables -I FORWARD -s 172.16.0.0/24 -j ACCEPT

补充:
iptables -t nat -L --line //查看
iptables -t nat -D PREROUTING 1 删除某个1 为序列号

PREROUTING 只能配置-i 指定入接口的DNAT
POSTROUTING 只能配置 -o 指定出接口SNAT

查看FORWARD
iptables -L FOREWARD
删除FORWARD表项
iptables -D FORWARD 1

查看nat表
iptables -L -t nat -nv --line

对iptables修改进行保存 :
service iptables save

DNAT (Destination NAT) 和 SNAT (Source NAT) 是 iptables 中的两个重要功能,用于修改数据包的目的地址和源地址,以实现网络地址转换和负载均衡等功能。具体上,DNAT 可以将数据包的目的地址转换为指定的地址,而 SNAT 可以将数据包的源地址转换为指定的地址。 下面是具体的使用方法: 1. DNAT 使用 DNAT 可以将数据包的目的地址转换为指定的地址,具体方法如下: ``` iptables -t nat -A PREROUTING -d [原始目的地址] -j DNAT --to-destination [目标地址] ``` 其中,-t nat 表示指定 iptablesnat 表,-A PREROUTING 表示在数据包进入路由前应用规则,-d [原始目的地址] 表示匹配数据包的原始目的地址,-j DNAT 表示将匹配的数据包进行 DNAT 转换,--to-destination [目标地址] 表示指定目标地址。 例如,将来自 192.168.1.2 的数据包的目的地址转换为 10.0.0.2: ``` iptables -t nat -A PREROUTING -d 192.168.1.2 -j DNAT --to-destination 10.0.0.2 ``` 2. SNAT 使用 SNAT 可以将数据包的源地址转换为指定的地址,具体方法如下: ``` iptables -t nat -A POSTROUTING -s [原始源地址] -j SNAT --to-source [目标地址] ``` 其中,-t nat 表示指定 iptablesnat 表,-A POSTROUTING 表示在数据包出路由后应用规则,-s [原始源地址] 表示匹配数据包的原始源地址,-j SNAT 表示将匹配的数据包进行 SNAT 转换,--to-source [目标地址] 表示指定目标地址。 例如,将来自 192.168.1.2 的数据包的源地址转换为 10.0.0.2: ``` iptables -t nat -A POSTROUTING -s 192.168.1.2 -j SNAT --to-source 10.0.0.2 ``` 需要注意的是,DNAT 和 SNAT 都会修改数据包的地址,因此需要谨慎使用,避免对网络造成影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值