扫盲 网卡配置 说明
TYPE=Ethernet 网卡类型:以太网
PROXY_METHOD=none 代理方式:关闭状态
BROWSER_ONLY=no 只是浏览器(yes|no)
BOOTPROTO=static 设置网卡获得ip地址的方式(static|dhcp|none|bootp)
DEFROUTE=yes 设置为默认路由(yes|no)
IPV4_FAILURE_FATAL=no 是否开启IPV4致命错误检测(yes|no)
IPV6INIT=yes IPV6是否自动初始化
IPV6_AUTOCONF=yes IPV6是否自动配置
IPV6_DEFROUTE=yes IPV6是否可以为默认路由
IPV6_FAILURE_FATAL=no 是不开启IPV6致命错误检测
IPV6_ADDR_GEN_MODE=stable-privacy IPV6地址生成模型
NAME=eth0 网卡物理设备名称
UUID=6e89ea13-f919-4096-ad67-cfc24a79a7e7 UUID识别码
DEVICE=eth0 网卡设备名称
ONBOOT=no 开机自启(yes|no)
IPADDR=192.168.103.203 IP地址
NETNASK=255.255.255.0 子网掩码,也可使用掩码长度表示(PREFIX=24)
GATEWAY=192.168.103.1 网关
DNS1=114.114.114.114 首选DNS
DNS2=8.8.8.8 备用DNS
最简化配置
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
DEVICE=eth0
ONBOOT=yes
IPADDR=10.10.10.31
NETMASK=255.255.255.0
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="eth1"
UUID="3c4004a4-6394-41b6-88f3-e543a2b3573c"
DEVICE="eth1"
ONBOOT="yes"
IPADDR="172.16.0.249"
PREFIX="24"
GATEWAY="172.16.0.254"
IPV6_PRIVACY="no"
四表五链 | iptables
四表五链
iptables
四表五链
四表:filter 负责过滤功能
nat 网络地址转换
mangle 负责修改数据包内容
raw 负责数据包跟踪
五链:PREROUTING 主机外报文进入位置
INPUT 报文进入本机用户空间位置
OUTPUT 报文从本机用户空间出去的位置
FORWARD 报文经过路由发觉不是本机决定转发不知道从哪个网卡出去
POSTROUTING 报文经过路由被转发出去
流入本机:A ---> PREROUTING ---> INPUT ---> B
流出本机:A ---> OUTPUT ---> POSTROUTING ---> B
经过本机:A ---> OUTPUT ---> POSTROUTING | --->
PREROUTING ---> FORWARD ---> POSTROUTING -
--> C ---> PREROUTING ---> INPUT ---> B
filter:INPUT FORWARD OUTPUT
nat:PREROUTING INPUT OUTPUT POSTROUTING
raw:PREROUTING OUTPUT
mangle:PREROUTING INPUT FORWARD OUTPUT
POSTROUTING
iptables
格式:iptables -t 表名 选项 链名称 条件 动作
-t 指定操作的表
-L 列出当前规则
-v 显示数据包和大小
-n 不反解地址
-A 追加一条规则到链中
-I 插入一条规则到顶部
-F 清空
-Z 清空计数器
-D 删除链中的规则
-R 修改
-S 列出所有的规则
-N 创建一个自定义链
-X 删除一个自定义链
-P 指定链的默认策略
查询本机端口占用命令:netstat -nutlp
iptables动作
1.ACCEPT 将数据包放行,处理完不比对其他规则,跳到下一个规则链
2.REJECT 阻拦数据包,传送数据包通知对方
3.DROP 丢弃包,处理完不比对其他规则,中断过滤程序
4.REDIRECT 将包导入另一个端口,处理完比对其他规则
1.-s 源地址 发送请求的地址
2.-d 目标地址 访问的地址
3.--sport 源端口 发送请求的端口
4.--dport 目标端口 访问的端口
iptables基本条件匹配
1.TCP
2.UDP
3.ICMP
4.ALL
动作
1.-i 进来的网卡
2.-o 出去的网卡
3.-m 指定的模块
4.-j 转发动作
5.-p 指定协议
iptables模块
指定模块:-m
1.连续匹配多个端口multiport--dports 指定多个端口(不同端口之间以逗号分割,连续的端 口使用冒号分割)
2.指定一段连续ip地址范围iprange
--src-range from[-to] 源地址范围
--dst-range from[-to] 目标地址范围
3.匹配指定字符串string
--string pattern 指定要匹配的字符串
--algo {bm|kmp} 匹配的查询算法
4.根据时间匹配报文time
--timestart hh:mm[:ss] 开始时间
--timestop hh:mm[:ss] 结束时间
--monthdays day[,day...] 指定一个月的某一天
--weekdays day[,day...] 指定周 还是 周天
5.禁ping,默认本机无法ping别人,别人无法ping自己
--icmp-type {type[/code]|typename}
echo-request (8) 请求
echo-reply (0) 回应
6.限制链接数,并发连接connlimit
--connlimit-upto n 如果现有连接数小于或等于n 则匹配
--connlimit-above n 如果现有连接数大于n 则匹配
7.针对 报文速率 进行限制。 秒、分钟、小时、天
--limit rate[/second|/minute|/hour|/day] 报文数量
--limit-burst number 报文数量(默认:5)
案例
1.只允许22端口访问,其他端口无法访问
iptables -t filter -A INPUT -p TCP --dport 22 -j ACCEPT
iptables -t filter -A INPUT -p TCP -j DROP
2.只允许192.168.15.71能够通过22端口链接,其他的不行
iptables -t filter -A INPUT -p TCP -s 192.168.15.71 -d 198.168.15.81 --dport 22 -j ACCEPT
iptables -t filter -A INPUT -p TCP -j DROP
3.要求192.168.15.71对外部不可见
iptables -t filter -A INPUT -p TCP -d 192.168.15.71 -j DROP
4.要求将22,80,443以及30000-50000之间所有的端口向外暴露,其他端口拒绝
iptables -t filter -A INPUT -p TCP -m multiport --dports 22,80,443,30000:50000 -j ACCEPT
iptables -f filter -A INPUT -p TCP -j DROP
5.要求访问数据包中包含HelloWorld的数据不允许通过
iptables -t filter -A INPUT -p TCP -m string --string "HelloWorld" --algo kmp -j DROP
6.7.要求限制速率在500k/s左右
iptables -t filter -A OUTPUT -p -TCP -m limit --limit 300/s -j ACCEPT
iptables -t filter -A OUTPUT -p TCP -j DROP
双网卡配置
定位eth0网卡物理位置
#ethtool -p eth0 10 //让eth0网卡LED灯持续闪烁10秒。
#ethtool -p eth0 //让eth0网卡LED灯持续闪烁,直到手动终止(Ctrl+c)
yum install net-tools -y
使用 rount -n ifocnfig 命令
开启内核转发
sudo sysctl -w net.ipv4.ip_forward=1
#设置网卡的临时变量
PHY_IFACE=eth1
ZT_IFACE=eth0
sudo iptables -t nat -A POSTROUTING -o $PHY_IFACE -j MASQUERADE # 指定网卡 开启转发功能
sudo iptables -A FORWARD -i $ZT_IFACE -o $PHY_IFACE -j ACCEPT # 转发链 添加 从 I 网卡来的数据包,任意状态数据包,从A网卡转出,动作为允许 (zerTier网段的数据可以从物理网卡出去)
sudo iptables -A FORWARD -i $PHY_IFACE -o $ZT_IFACE -m state --state RELATED,ESTABLISHED -j ACCEPT # 转发链 添加 从 I 网卡来的数据包,状态是 xxx的,从 O 网卡转出,动作为允许 ( 互联网来的数据包,要进去zerTier网络,状态必须是链接的,可以进入)
iptables-save
-----
也可以这么细化 做
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE # 指定网卡 开启转发功能
iptables -t nat -I POSTROUTING -o eth1 -i eth2 -j MASQUERADE # 来源eth2的网卡数据 可以从eth1 网卡 地址转换出去
iptables -t nat -I POSTROUTING -o eth1 -s 192.168.10.68/32 -j MASQUERADE # # 来源 某个ip或者ip段的数据 可以从eth1 网卡 地址转换出去
添加路由
# 路由添加 前往的网段 掩码 网关 IP 设备 网卡名
route add -net 172.16.0.0 netmask 255.255.0.0 gw 172.16.10.1 dev ens37
追加到开机自启动中
echo "route add -net 172.16.0.0 netmask 255.255.0.0 gw 172.16.10.1 dev ens37" >>/etc/rc.local