iptables实现SNAT和DNAT,并对规则持久保存

 

#iptables实现SNAT和DNAT,并对规则持久保存
实现SNAT和DNAT都需要开启内核数据转发功能

[root@localhost ~]# vim /etc/sysctl.conf
# 把下列选项改正1
net.ipv4.ip_forward=0
...
net.ipv4.ip_forward=1

#SNAT
基于nat表的target,适用于固定的公网IP

SNAT选项:

--to-source [ipaddr[-ipaddr]][:port[-port]]
--random
语法:

iptables -t nat -A POSTROUTING -s LocalNET ! -d LocalNet -j SNAT --to-source ExtIP
范例:

[root@localhost ~]# iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j SNAT --to-source 192.168.122.103

#DNAT
nat表的target,适用于端口映射,即可重定向到本机,也可以支持重定向至不同主机的不同端口,但不支持多目标,即不支持负载均衡功能

DNAT选项:

--to-destination [ipaddr[-ipaddr]][:port[-port]]
DNAT语法:

iptables -t nat -A PREROUTING -d ExtIP -p tcp|udp --dport PORT -j DNAT --todestination InterSeverIP[:PORT]
范例:

[root@localhost ~]# iptables -t nat -A PREROUTING -d 192.168.122.103 -p tcp --dport 80 -j DNAT --to-destination 10.0.0.6:80

#iptables规则持久保存:
CentOS 7、8

iptables-save > /PATH/TO/SOME_RULES_FILE
CentOS 6

# 将规则覆盖保存至/etc/sysconfig/iptables文件中
service iptables save

#加载规则
#CentOS 7、8 重新载入预存规则文件中规则:
iptables-restore < /PATH/FROM/SOME_RULES_FILE
iptables-restore选项

-n, --noflush:不清除原有规则
-t, --test:仅分析生成规则集,但不提交
#CentOS 6:
service iptables  restart      
#会自动从/etc/sysconfig/iptables 重新载入规则

# 开机自动重载规则
#用脚本保存各iptables命令;让此脚本开机后自动运行
/etc/rc.d/rc.local文件中添加脚本路径 /PATH/TO/SOME_SCRIPT_FILE
用规则文件保存各规则,开机时自动载入此规则文件中的规则

在/etc/rc.d/rc.local文件添加

iptables-restore < /PATH/FROM/IPTABLES_RULES_FILE

 

posted @   小糊涂90  阅读(307)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示