19.10,重启后arptables表恢复初始

我们是菜鸟,很想起飞,请多点耐心关注和指点
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
s_slevin
帖子: 2
注册时间: 2019-11-03 16:59
送出感谢: 1 次
接收感谢: 0

19.10,重启后arptables表恢复初始

#1

帖子 s_slevin » 2019-11-03 17:22

1. 编辑 arptables 表
sudo arptables -A INPUT -s 192.168.1.1 --source-mac xx:xx:xx:xx:xx:xx -j ACCEPT
sudo arptables -A INPUT -j DROP
sudo arptables -A OUTPUT -d 192.168.1.1 --destination-mac xx:xx:xx:xx:xx:xx -j ACCEPT
sudo arptables -A OUTPUT -j DROP

2. sudo sh -c "arptables-save > /etc/arptables.rules"

3. sudo nano /etc/network/if-pre-up.d/arptablesload
#!/bin/sh
arptables-restore < /etc/arptables.rules
exit 0

4.sudo chmod +x /etc/network/if-pre-up.d/arptablesload

5.重启 arptables表恢复初始。

以上步骤2.3.4 参考 《Iptables How To》
https://help.ubuntu.com/community/Iptab ... ost-down.d

在18.04中可以开机自动恢复arptables 表。换了19.10就不行了。新手请求帮助
头像
astolia
论坛版主
帖子: 4164
注册时间: 2008-09-18 13:11
送出感谢: 1 次
接收感谢: 694 次

Re: 19.10,重启后arptables表恢复初始

#2

帖子 astolia » 2019-11-03 21:06

把arptablesload放到/etc/network/if-up.d/下面试试
这些用户感谢了作者 astolia 于这个帖子:
s_slevin (2019-11-06 15:11)
评价: 3.7%
s_slevin
帖子: 2
注册时间: 2019-11-03 16:59
送出感谢: 1 次
接收感谢: 0

Re: 19.10,重启后arptables表恢复初始

#3

帖子 s_slevin » 2019-11-06 15:10

astolia 写了:
2019-11-03 21:06
把arptablesload放到/etc/network/if-up.d/下面试试
方法有效。
可是为什么呢?
无非是网络接口启动前后的区别。怎么 /if-pre-up.d/ 目录下脚本就不运行呢?
头像
astolia
论坛版主
帖子: 4164
注册时间: 2008-09-18 13:11
送出感谢: 1 次
接收感谢: 694 次

Re: 19.10,重启后arptables表恢复初始

#4

帖子 astolia » 2019-11-06 17:42

s_slevin 写了:
2019-11-06 15:10
方法有效。
可是为什么呢?
无非是网络接口启动前后的区别。怎么 /if-pre-up.d/ 目录下脚本就不运行呢?
这个问题的关键在于搞清楚这些目录下的脚本是谁来负责运行的

在ubuntu 19.10桌面版环境下,负责处理网络的是network manager,/etc/network/if-*.d/下面的脚本也是由它来负责运行的。

更精确地说是由 /lib/systemd/system/NetworkManager-dispatcher.service 这个systemd 服务来在启动时去执行/usr/lib/NetworkManager/nm-dispatcher,再由后者去执行 /etc/NetworkManager/dispatcher.d下面的脚本。而/etc/NetworkManager/dispatcher.d下面又会装上一个01-ifupdown脚本。默认正是由这个脚本去处理/etc/network/if-*.d/下面的东西。

这个脚本的内容不长,你打开它看一下就知道了,它对if-pre-up.d和if-down.d下面脚本的处理方法是不做处理。

话说回来,18.04里的network manager的行为也是一样的。至于为什么18.04里放到if-pre-up.d下面的脚本就能被执行,是因为18.04桌面版还默认安装了ifupdown,它有一套类似的机制去执行if-pre-up.d下面的脚本。到了19.10,ifupdown没有被默认安装,if-pre-up.d下面的东西就没人管了
回复

回到 “初学者园地 - Ubuntu 19.10 (Eoan Ermine)”