pla*_*nor 3 linux routing iptables iproute
我正在使用 iptables 来标记包并希望根据标记进行路由。
首先我添加了ip规则:
sudo ip rule add fwmark 1 prohibit
Run Code Online (Sandbox Code Playgroud)
(“禁止”仅用于测试,稍后我将其更改为某个路由表。)
然后我开始标记包裹:
sudo iptables -A OUTPUT -d 192.168.1.0/24 -j MARK --set-mark 1
Run Code Online (Sandbox Code Playgroud)
但是电脑仍然可以访问192.168.1.0/24网络。
经过长时间的谷歌搜索和挣扎,我尝试过:
sudo iptables -t mangle -A OUTPUT -d 192.168.1.0/24 -j MARK --set-mark 1
Run Code Online (Sandbox Code Playgroud)
它有效并且连接被阻止。
在第一种情况下,使用过滤器的默认表。所以我的问题是 mangle table 和 filter table 之间有什么区别?在什么情况下应该使用哪一个?据我了解,所有这些表都会在路由策略之前进行查询,那么为什么过滤表不能正常工作呢?
mangle
用于处理(修改)数据包,而filter
仅用于过滤数据包。
这样做的结果是,在LOCAL_OUT
遍历表并获得过滤决定后,mangle
可能会尝试重做路由决定,假设过滤决定不是丢弃或以其他方式控制数据包,通过调用ip_route_me_harder
,而filter
只是返回过滤决策。
详情在net/ipv4/netfilter/iptable_mangle.c
和net/ipv4/netfilter/iptable_filter.c
。
归档时间: |
|
查看次数: |
6014 次 |
最近记录: |