【网络工具ip 学习】
1. 四表五链
应该叫五链四表
链是指的链路,指的数据包的通过路径
四表里面表示对数据包的操作(这里面加入具体的处理规则链)
filter表——过滤数据包
Nat表——用于网络地址转换(IP、端口)
Mangle表——修改数据包的服务类型、TTL、并且可以配置路由实现QOS
Raw表——决定数据包是否被状态跟踪机制处理
2. ip route关于路由转发,网络工具ip的使用
ip route show table main 查看main路由表
liangji@liangji-Vostro-3670:~/liangji_test$ ip route show table main
default via 172.16.9.1 dev enx000ec6821555 proto dhcp metric 100
default via 10.0.0.1 dev enp2s0 proto static metric 20101
10.0.0.0/8 dev enp2s0 proto kernel scope link src 10.0.0.2 metric 101
169.254.0.0/16 dev enp2s0 scope link metric 1000
172.16.9.0/24 dev enx000ec6821555 proto kernel scope link src 172.16.9.119 metric 100
liangji@liangji-Vostro-3670:~/liangji_test$
liangji@liangji-Vostro-3670:~/liangji_test$
liangji@liangji-Vostro-3670:~/liangji_test$ route -n
内核 IP 路由表
目标 网关 子网掩码 标志 跃点 引用 使用 接口
0.0.0.0 172.16.9.1 0.0.0.0 UG 100 0 0 enx000ec6821555
0.0.0.0 10.0.0.1 0.0.0.0 UG 20101 0 0 enp2s0
10.0.0.0 0.0.0.0 255.0.0.0 U 101 0 0 enp2s0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 enp2s0
172.16.9.0 0.0.0.0 255.255.255.0 U 100 0 0 enx000ec6821555
ip route show table main 和route -n对应
先寻找下面三个的有指定目标的路由表,如果该数据包的目的ip是这三个有具体目标的(按子网掩码来定优先级),那么就发送给这个的网关。
如果没有匹配到具体的目标,那么按照默认路由表转发,由跃点确认优先级。
ip route add 192.168.64.0/24 via 172.16.9.1 table main 加入一个有具体目标的路由表
3. ip rule
#ubuntu 的 ip rule list
seaice@seaice-VirtualBox:~$ ip rule list
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
#android 的 ip rule list
shell@rk3288:/ $ ip rule list
0: from all lookup local
9999: from all lookup 1
10000: from all fwmark 0xc0000/0xd0000 lookup legacy_system
13000: from all fwmark 0x10063/0x1ffff lookup local_network
15000: from all fwmark 0x0/0x10000 lookup legacy_system
16000: from all fwmark 0x0/0x10000 lookup legacy_network
17000: from all fwmark 0x0/0x10000 lookup local_network
23000: from all fwmark 0x0/0xffff uidrange 0-0 lookup main
32000: from all unreachable
10000: from all fwmark 0xc0000/0xd0000 lookup legacy_system
优先级为10000的策略表示,所有的数据包(from all), 其iptables的mark(fwmark)和0xd0000按位与后,所得结果为0xc0000的数据包(fwmark 0xc0000/0xd0000),使用legacy_system路由表(ip route show table)进行路由查找(lookup legacy_system)
11000: from all iif lo oif rmnet_data0 uidrange 0-0 lookup rmnet_data0
优先级为11000的策略表示,所有是的数据包(from all),如果是从lo回环接口输入(iif lo),从rmnet_data0接口输出(oif rmnet_data0),其uid为0(uidrange 0-0)即系统用户,使用rmnet_data0路由表进行路由查找。lo接口的作用是,假如一个本地进程向另一个本地进程发送数据,那么将会使用lo接口,此时如果在rmnet_data0接口上抓包是无法抓到的,但是在lo接口上能够抓到。
29000: from all fwmark 0x0/0xffff iif lo lookup rmnet_data0
优先级为29000的策略表示,所有的数据包,其iptables的mark和0xffff按位与后,所得结果为0x0,且是从lo回环接口输入的数据包,使用rmnet_data0路由表。在不主动设置数据包的mark时,数据包的mark就是0,所以在不设置mark的时候,数据包通常会满足这条路由策略。
添加策略路由
root@seaice-VirtualBox:/home/seaice# ip rule add from 109.131.7.10 table 10
root@seaice-VirtualBox:/home/seaice# ip rule add from 109.131.8.0/24 table 20
root@seaice-VirtualBox:/home/seaice# ip rule list
0: from all lookup local
32764: from 109.131.8.0/24 lookup 20 #如果来源端的IP是109.131.8.0/24网段的IP,就参考路由20
32765: from 109.131.7.10 lookup 10 #如果数据包的来源IP是109.131.7.10, 就参考路由表10
32766: from all lookup main
32767: from all lookup default
#根据目的ip指定策略路由
root@seaice-VirtualBox:/home/seaice# ip rule add to 109.131.9.0/24 table 30
root@seaice-VirtualBox:/home/seaice# ip rule add to 109.131.10.10 table 40
用iptable 设置 网络包的mark,来使用fwmark来指定特定数据包
seaice# iptables -t mangle -A PREROUTING -p tcp --dport 80 -j MARK --set-mark 1
seaice# ip rule add fwmark 1 table 50
#table 50 就是ip route show table 50, 可以用 ip route add xxx via xxx table 50 来增加路由表
凡是enp0S3端口接入的都走55路由表
root@seaice-VirtualBox:/# ip rule add dev enp0s3 table 55
ip rule 删除策略
root@seaice-VirtualBox:/# ip rule list
0: from all lookup local
32760: from all iif enp0s3 lookup 55
32761: from all fwmark 0x1 lookup 50
32762: from all to 109.131.10.10 lookup 40
32763: from all to 109.131.9.0/24 lookup 30
32764: from 109.131.8.0/24 lookup 20
32765: from 109.131.7.10 lookup 10
32766: from all lookup main
32767: from all lookup default
root@seaice-VirtualBox:/# ip rule del prio 32760
root@seaice-VirtualBox:/# ip rule del fwmark 1
root@seaice-VirtualBox:/# ip rule del table 40
root@seaice-VirtualBox:/# ip rule del table 30
root@seaice-VirtualBox:/# ip rule del from 109.131.8.0/24
root@seaice-VirtualBox:/# ip rule del prio 32765
root@seaice-VirtualBox:/# ip rule list
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
要记得创建新的路由表
ip rule add from 192.168.2.0/24 table 10
ip route add 192.168.1.0/24 dev eth1 table 10
ip route add default via 192.168.1.254 table 10
ip route show table 10