三台机器,1号机和2号机有同一个网络区段,二号机的第二个网络区段和3号机相同,我们想让1号机和三号机互通
首先,需要给1号机和2号机的第二个网卡之间添加一个静态路由
route add -net 172.16.1.0/24 gw 10.0.0.12
(目的网段) (入口)
这时1号机连接3号机的ip的去路有了,还需要将三号机的回应包返回来
route add -net 10.0.0.0/24 gw 172.16.1.12
2号机虽然能连3号机,但是当1号机给3号机IP172.16.2.13发数据时,数据在经过2号机的时候会被丢弃,所以在给2号机添加路由的时候更改转发参数
route add -net 172.16.2.0/24 gw 172.16.1.13
sysctl net.ipv4.ip_forward=1 (临时)
永久更改转发参数
echo 'net.ipv4.ip_forward = 1' >>/etc/sysctl.conf
sysctl -p 从配置文件“/etc/sysctl.conf”加载内核参数设置
iptable 软件防火墙 用来管理 Linux 防火墙的命令程序
iptable (通过调用Linux内核的netfilter模块起到防火墙的作用)
iptable:四表五链
四表:
filter表:过滤数据包 (防火墙相关)
nat表:实现nat上网 (内网上外网,将私网IP转换成公网IP)
mangle表:修改数据包
raw表:追踪数据包
五链:
PREROUTING 在对数据包做路由选择之前,将应用此链中的规则;
INPUT 当收到访问防火墙本机地址的数据包时,将应用此链中的规则;
FORWARD 当收到需要通过防火中转发给其他地址的数据包时,将应用此链中的规则;
OUTPUT 当防火墙本机向外发送数据包时,将应用此链中的规则;
POSTROUTING 在对数据包做路由选择之后,将应用此链中的规则;
命令:
iptables -L 查看所有链的iptable规则
iptables -P INPUT DROP 修改INPUT链的默认规则为白名单模式 (拒绝所有人)
-I 插入新规则
-A 追加新规则
-D 删除规则
-j 动作
-F 清楚添加的所有的规则
场景:允许所有人可以访问80端口,只允许10.0.0.1可以访问22端口
黑名单模式(默认)
iptables -I INPUT --source 10.0.0.1 --protocol tcp --dport 22 -j ACCEPT
iptanles -A INPUT --protocol tcp --dport 22 -j DROP
白名单模式(拒绝所有人)
iptables -A INPUT --protocol tcp --dport 80 -j ACCEPT
iptables -I INPUT --source 10.0.0.1 --protocol tcp --dport 22 -j ACCEPT
iptables -P INPUT DROP
--source 指定源地址
--destination 指定目标地址
--protocol 指定访问协议
--dport 指定端口
禁止本机向目标地址发送数据
iptables -A OUTPUT --protocol icmp --destination 172.16.1.12 -j DROP