概述
可以通过设置内核参数来启动或停止内核的转发
sysctl -w net.ipv4.ip_forward=1
当开启了Linux内核转发
cat /proc/sys/net/ipv4/ip_forward
开启内核转发后,当Linux主机收到不属于自己IP的数据包时,将会根据主机上配置的路由表进行转发,而不是丢弃数据包。
如何数据包如何转发下一跳是谁,可以通过查询路由表
route -n
限制转发
默认情况下开启转发后,若无特殊配置 iptables 的 FORWARD 链为空,转发所有的数据包。
若需要对转发的做限制,那么就需要设置 FORWARD 链规则。
查看当前iptables FORWARD链规则
iptables -nvL FORWARD
例如需要 禁止转发目的地址为 192.168.1.0/24 整个网段的数据包 我们可以通过下面方式实现
iptables -I FORWARD -d 192.168.1.0/24 -j DROP
允许某个主机的 ICMP (PING)数据
iptables -I FORWARD -d 192.168.1.200/32 -p icmp -j ACCEPT
注意iptables在数据包流转时,将会按照列表的顺序依次匹配数据包,若上一条未能匹配则继续匹配下一条,因此若你的DROP在你允许通过的条目之上可能就会造成,配置的ACCEPT无效。
允许某个IP的某个端口TCP协议通过
iptables -I FORWARD -d 192.168.1.232/32 -p tcp -m tcp --dport 80 -j ACCEPT
参考文献
[1]. 博客园 . iptables命令、规则、参数详解 . zclzhao . 2015.12 . https://www.cnblogs.com/zclzhao/p/5081590.html