Iptables其他内容
REJECT
--reject-with icmp-host-unreachable # 当不设置任何值时,默认值为icmp-port-unreachable。
# 其他可选项
icmp-net-unreachable
icmp-host-unreachable
icmp-port-unreachable
icmp-proto-unreachable
icmp-net-prohibited
icmp-host-pro-hibited
icmp-admin-prohibited
LOG
--log-level # 选项可以指定记录日志的日志级别,可用级别有emerg,alert,crit,error,warning,notice,info,debug。
--log-prefix# 选项可以给记录到的相关信息添加"标签"之类的信息,以便区分各种记录到的报文信息,方便在分析时进行过滤。
# 配置iptables日志文件
vim /etc/rsyslog.conf
kern.waring /var/log/iptables.log
service rsyslog restart # 服务重启后,配置即可生效,iptables的日志就存入/var/log/iptables.log中
NAT表
# POSTROUTING与PREROUTING基本用法
echo 1 > /proc/sys/net/ipv4/ip_forward # 开启内核转发
iptables -t nat -I POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 10.10.10.1
iptables -t nat -I POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
iptables -t nat -I PREROUTING -d 10.10.10.1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.0.2:80
iptables -t nat -I PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
# 外部主机IP地址:10.0.0.2
# 转发主机IP地址:10.0.0.10、192.168.0.10
# 内部主机IP地址:192.168.0.2
# 示例需求:外部主机10.0.0.2通过访问转发主机10.0.0.10的8888端口来访问内部主机192.168.0.2的80端口。
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -I PREROUTING -d 10.0.0.10 -p tcp -m tcp --dport 8888 -j DNAT --to-destination 192.168.0.2:80
iptables -t nat -I POSTROUTING -s 10.0.0.2 -j MASQUERADE
iptables -t filter -I FORWARD -s 10.0.0.10 -d 192.168.0.2 -j ACCEPT
iptables -t filter -I FORWARD -s 192.168.0.2 -d 10.0.0.10 -j ACCEPT
RAW表
# 访问22端口增加不追踪标识
iptables -t raw -I PREROUTING -p tcp --dport 22 -j NOTRACK
iptables -t raw -I OUTPUT -p tcp --dport 22 -j NOTRACK
自定义链
iptables -t table -N chain_name # 创建自定义链
iptabels -t table -E chain_name # 重命名自定义链
iptables -t table -X chain_name # 删除自定义链(前提是没有被引用且没有规则)
iptables -t table -A|-I chain match_expression -j chain_name # 引用自定义链
iptables -t filter -N VM_FIREWARD
iptables -t filter -I VM_FIREWARD -p tcp -m multiport --dports 22,80,8080 -j ACCEPT
iptables -t filter -I VM_FIREWARD -m conntrack --ctstate ESTABLISH,RELATED -j ACCEPT
iptables -t filter -A VM_FIREWARD -p icmp -j ACCEPT
iptables -t filter -I INPUT -j VM_FIREWARD # 引用VM_FIREWARD链
iptables -t filter -P INPUT DROP
保存与恢复
保存规则:# iptables-save > /etc/sysconfig/iptables
恢复规则:# iptables-restore < /etc/sysconfig/iptables
若想开机自动启用脚本,则可以使用以下命令放到系统初始化Shell脚本/etc/rc.d/rc.local中
# echo '/sbin/iptables-restore /etc/sysconfig/iptables' >> /etc/rc.d/rc.local
# chmod a+x /etc/rc.d/rc.local
流量分析思路(不考虑mangle和raw表)
# 本机流入流量(由本机上层处理):
iptables -t nat -nvL PREROUTING # 经过nat表的PREROUTING链
route -n # 查询本机路由表
iptables -t filter -nvL INPUT # 经过filter表的INPUT链
# 本机转发流量:
iptables -t nat -nvL PREROUTING # 经过nat表的PREROUTING链
route -n # 查询本机路由表
iptables -t filter -nvL FORWARD # 经过filter表的FORWARD链
iptables -t nat -nvL POSTROUTING # 经过nat表的POSTROUTING链
# 本机流出流量(由本机上层产生):
iptables -t nat -nvL OUTPUT # 经过nat表的OUTPUT链
iptables -t filter -nvL OUTPUT # 经过filter表的OUTPUT链
route -n # 查询本机路由表
iptables -t nat -nvL POSTROUTING # 经过nat表的POSTROUTING链
作者:wanghongwei
版权声明:本作品遵循<CC BY-NC-ND 4.0>版权协议,商业转载请联系作者获得授权,非商业转载请附上原文出处链接及本声明。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?