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,errorwarning,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

img
img

流量分析思路(不考虑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链
posted @   wanghongwei-dev  阅读(104)  评论(0编辑  收藏  举报
编辑推荐:
· .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吗?
点击右上角即可分享
微信分享提示