请求报文经过的hook点顺序如下:
序号 | hook点 | 输入接口 | 输出接口 |
---|---|---|---|
1 | PREROUTING | ns1veth1 | 无 |
2 | PREROUTING | vrftest | 无 |
3 | FORWARD | vrftest | ns2veth1 |
4 | POSTROUTING | 无 | ns2veth1 |
应答报文经过的hook点顺序如下:
序号 | hook点 | 输入接口 | 输出接口 |
---|---|---|---|
1 | PREROUTING | ns2veth1 | |
2 | PREROUTING | vrftest | |
3 | FORWARD | vrftest | ns2veth1 |
4 | POSTROUTING | 无 | ns2veth1 |
本机访问外网
vrftest ping 1.1.1.1
1 2 3 4 5 6 7 8 9 |
|
查看log
1 2 3 4 5 6 7 |
|
从log可以看出:
请求报文经过的hook点顺序如下:
序号 | hook点 | 输入接口 | 输出接口 |
---|---|---|---|
1 | OUTPUT | 无 | vrftest |
2 | POSTROUTING | 无 | vrftest |
3 | OUTPUT | 无 | ns1veth1 |
4 | POSTROUTING | 无 | ns1veth1 |
应答报文经过的hook点顺序如下:
序号 | hook点 | 输入接口 | 输出接口 |
---|---|---|---|
1 | PREROUTING | ns1veth1 | 无 |
2 | PREROUTING | vrftest | 无 |
3 | INPUT | vrftest | 无 |
本机访问本机,即环回
vrftest ping vrf接口地址9.9.9.9/24
添加如下netfilter规则:
1 2 3 4 5 6 7 |
|
配置vrftest接口地址为9.9.9.9/24
1 2 3 4 5 6 7 8 9 |
|
查看log
1 2 3 4 5 6 7 8 |
|
从log可以看出:
请求报文经过的hook点顺序如下:
序号 | hook点 | 输入接口 | 输出接口 |
---|---|---|---|
1 | OUTPUT | 无 | vrftest |
2 | POSTROUTING | 无 | vrftest |
3 | PREROUTING | vrftest | 无 |
4 | INPUT | vrftest | 无 |
应答报文经过的hook点顺序如下:
序号 | hook点 | 输入接口 | 输出接口 |
---|---|---|---|
1 | OUTPUT | 无 | vrftest |
2 | POSTROUTING | 无 | vrftest |
3 | PREROUTING | vrftest | 无 |
4 | INPUT | vrftest | 无 |
环回请求和应答是一样的。
总结
- linux内核支持VRF后,报文会两次进入PREROUTING节点,第一次是原始接口,第二次是原始接口依附的vrf主接口。
- linux内核支持VRF后,本机输出的报文,先以vrf接口作为输出接口经过OUTPUT和POSTROUTING节点,然后再以真实出去的接口经过OUPUT和POSTROUTING节点。
- 本机报文进行环回时,与没有VRF的环境是一样的。
推荐学习:《linux视频教程》
以上就是一文详解Linux netfilter与VRF及其总结的详细内容,更多文章请关注木庄网络博客!
相关阅读 >>
为了保证导入Linux类型镜像时的镜像源配置成功应该安装cloud-init
更多相关阅读请进入《Linux》频道 >>