openwrt设置重启aria2脚本

openwrt设置重启aria2脚本,第1张

在OpenWrt系统上设置aria2重启脚本,需要在OpenWrt的网络设置中,设置一个开机自动执行的脚本,具体 *** 作步骤如下:

1. 首先创建重启aria2的脚本文件,例如将其命名为 aria2_restart.sh,内容如下:

/etc/init.d/aria2 stop

/etc/init.d/aria2 start

2. 将该脚本文件上传至OpenWrt系统中,例如上传到/data目录。

3. 打开"系统-自动启动"菜单,点击"添加",添加aria2_restart.sh脚本文件即可。

1.条件 固定mac地址

为限制ip的访问控制 通常使用iptables 限制ip部分 ,如果设备更换ip地址,则原有的ip地址列表规则会失效

在局域网内 使用根据设备的mac地址配置ebtables限制目标设备的访问控制.

但是,这样也是有缺陷的,如设备每隔一段时间会使用产生新的,随机的mac地址进行连接,则ebtables的mac匹配会失效

为了限制这种情况,可以设置允许已知的mac连接,未识别的禁止其连接.

做到这种情况

1.1.wifi连接的可使用 允许列表中mac地址连接 如图

在这里插入图片描述

1.2.使用 arp 静态绑定

这样做是为了迫使 连接设备使用固定的mac 进行连接 从而能够使用ebtables 达到限制目的

2. openwrt 安装配置ebtables

2.1 安装

opkg install ebtables ebtables-utils kmod-ebtables-ipv4 kmod-ebtables-ipv6

1

1

查看版本

ebtables -V

1

1

2.2 创建为启动脚本

创建文件 /etc/init.d/efw 内容如下

#!/bin/sh /etc/rc.common

#/etc/init.d/efw

START=21

STOP=21

cleartables() {

/usr/sbin/ebtables -t $1 -F

/usr/sbin/ebtables -t $1 -X

/usr/sbin/ebtables -t $1 -Z

}

boot() {

start

}

start() {

ebtables -P INPUT ACCEPT

ebtables -P FORWARD ACCEPT

ebtables -P OUTPUT ACCEPT

# 1.基于mac地址检查 禁止指定的mac设备访问内网 除了一些dns dhcp ntp之外,允许访问外网

# 1. filter mac address which is disallowed to access intranet except some dns dhcp ntp , extranet is allowed

# 2. 基于mac地址检查 禁止指定的mac设备访问外网 只能访问内网,禁止访问外网

# 2. filter mac address which is disallowed to access extranet , intranet is allowed

#sh files is locale in /usr/efw/*

#由于分为多个执行脚本 把他们放置在 /usr/efw/目录下执行

SHDIR=/usr/efw

for file in $(ls $SHDIR)

do

if [ -x $SHDIR/$file ]then

#need arg: add

sh $SHDIR/$file add

fi

done

}

stop() {

cleartables filter

cleartables nat

#cleartables broute

/usr/sbin/ebtables -P INPUT ACCEPT

/usr/sbin/ebtables -P FORWARD ACCEPT

/usr/sbin/ebtables -P OUTPUT ACCEPT

}

restart() {

cleartables filter

cleartables nat

#cleartables broute

start

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

上面的脚本会 遍历调用 /usr/efw 目录下的每个可执行文件 执行动作为 sh $SHDIR/$file add

如果 /usr/efw 目录为空 则仅执行

/usr/sbin/ebtables -P INPUT ACCEPT

/usr/sbin/ebtables -P FORWARD ACCEPT

/usr/sbin/ebtables -P OUTPUT ACCEPT

/usr/efw 目录 每个可执行文件 可以 各自完成自己的功能 如

disallow_extranet.sh 指定mac地址 禁止访问外网,允许访问内网

disallow_intranet.sh 指定mac地址 禁止访问内网,允许访问外网

2.3 /usr/efw/disallow_extranet.sh

禁止访问外网,允许访问内网

#!/bin/sh

#set -x

#用法: 单独 调用

#添加 sh disallow-extranet.sh add删除 sh disallow-extranet.sh earse

# 这样就不必重启 efw服务

#配合 /etc/init.d/efw 使用

#/usr/efw/disallow_extranet.sh

#手动开关 ENABLE=0 禁用 =1 启动

ENABLE=1

[ "$ENABLE" = 1 ] || exit 1

#基于mac地址过滤 禁止访问外网 允许访问内网

#-----在这里添加需要限制的mac地址

#DISALLOW_MACLIST="11:11:11:22:22:22,22:22:22:11:11:11"

#使用文件记录禁止的mac地址 一个行 用逗号分隔

DISALLOW_MACFILE=/usr/efw/maclist_extranet

[ -e $DISALLOW_MACFILE ] || echo "11:22:33:44:55:66,22:22:22:33:33:33"|tee $DISALLOW_MACFILE

#需要16进制 这样grep才能匹配

VARMARK=0x123132

IPV4_A="10.0.0.0/8"

#IPV4_A_RFC6598="100.64.0.0/10"

IPV4_B="172.16.0.0/12"

IPV4_C="192.168.0.0/16"

IPV4_LOCAL="169.254.0.0/16"

IPV4_MCAST="224.0.0.0/4"

IPV4_BCAST="255.255.255.255"

# 会变成 fc00::/fc00:: 但效果一样

IPV6_LOCAL="fc00::/6"

add() {

ebtables -t nat -N NOEXTRANET_MARK

ebtables -t nat -A PREROUTING -j NOEXTRANET_MARK

#ebtables -t nat -A NOEXTRANET_MARK --among-src ${DISALLOW_MACLIST} -j mark --mark-set $VARMARK

ebtables -t nat -A NOEXTRANET_MARK --among-src-file $DISALLOW_MACFILE -j mark --mark-set $VARMARK

#INPUT

ebtables -t filter -N NOEXTRANET_IN

ebtables -t filter -A INPUT --mark $VARMARK -j NOEXTRANET_IN

#IPV4

ebtables -t filter -A NOEXTRANET_IN -p ipv4 --ip-dst $IPV4_A -j ACCEPT

ebtables -t filter -A NOEXTRANET_IN -p ipv4 --ip-dst $IPV4_B -j ACCEPT

ebtables -t filter -A NOEXTRANET_IN -p ipv4 --ip-dst $IPV4_C -j ACCEPT

ebtables -t filter -A NOEXTRANET_IN -p ipv4 --ip-dst $IPV4_BCAST -j ACCEPT

ebtables -t filter -A NOEXTRANET_IN -p ipv4 --ip-dst $IPV4_MCAST -j ACCEPT

ebtables -t filter -A NOEXTRANET_IN -p ipv4 --ip-dst $IPV4_LOCAL -j ACCEPT

ebtables -t filter -A NOEXTRANET_IN -p ipv4 -j DROP

#IPV6

ebtables -t filter -A NOEXTRANET_IN -p ipv6 --ip6-dst $IPV6_LOCAL -j ACCEPT

ebtables -t filter -A NOEXTRANET_IN -p ipv6 -j DROP

#FORWARD

ebtables -t filter -N NOEXTRANET_FWD

ebtables -t filter -A FORWARD --mark $VARMARK -j NOEXTRANET_FWD

#IPV4

ebtables -t filter -A NOEXTRANET_FWD -p ipv4 --ip-dst $IPV4_A -j ACCEPT

ebtables -t filter -A NOEXTRANET_FWD -p ipv4 --ip-dst $IPV4_B -j ACCEPT

ebtables -t filter -A NOEXTRANET_FWD -p ipv4 --ip-dst $IPV4_C -j ACCEPT

ebtables -t filter -A NOEXTRANET_FWD -p ipv4 --ip-dst $IPV4_BCAST -j ACCEPT

ebtables -t filter -A NOEXTRANET_FWD -p ipv4 --ip-dst $IPV4_MCAST -j ACCEPT

ebtables -t filter -A NOEXTRANET_FWD -p ipv4 --ip-dst $IPV4_LOCAL -j ACCEPT

ebtables -t filter -A NOEXTRANET_FWD -p ipv4 -j DROP

#IPV6

ebtables -t filter -A NOEXTRANET_FWD -p ipv6 --ip6-dst $IPV6_LOCAL -j ACCEPT

ebtables -t filter -A NOEXTRANET_FWD -p ipv6 -j DROP

}

earse() {

ebtables -t nat -F NOEXTRANET_MARK

ebtables -t nat -X NOEXTRANET_MARK

ebtables -t filter -D INPUT --mark $VARMARK -j NOEXTRANET_IN

ebtables -t filter -D FORWARD --mark $VARMARK -j NOEXTRANET_FWD

ebtables -t filter -F NOEXTRANET_FWD

ebtables -t filter -X NOEXTRANET_FWD

ebtables -t filter -F NOEXTRANET_IN

ebtables -t filter -X NOEXTRANET_IN

}

#reload mac list DISALLOW_MACLIST

#修改 DISALLOW_MACLIST 变量后 调用reload重新载入规则 而不是整个efw重载

#sh /usr/efw/disallow_extranet.sh reload

reload() {

if [ -n "$(ebtables -t nat -L|grep "mark-set $VARMARK")" ]then

ebtables -t nat -F NOEXTRANET_MARK

ebtables -t nat -A NOEXTRANET_MARK --among-src-file $DISALLOW_MACFILE -j mark --mark-set $VARMARK

fi

}

# MAIN

case "$1" in

add)

add

earse)

earse

reload)

reload

*)

exit 1

esac

exit 0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

2.4 /usr/efw 脚本规范

需要提供几个选项

add 添加规则

earse 删除

reload 重载mac列表

/etc/init.d/efw 的调用 sh $SHDIR/$file add 启动时创建规则

或者

修改 /usr/efw/maclist_extranet 的mac文件

只能一个行 每个mac地址用逗号分隔

修改完成后调用

sh /usr/efw/disallow_extranet.sh reload 以重载当前的规则 而不是重启整个 /etc/init.d/efw restart


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11196417.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-14
下一篇2023-05-14

发表评论

登录后才能评论

评论列表(0条)

    保存