1、首先在Openwrt里边使用的不是名为Openssh的程序,而是叫dropbear,由这个服务提供ssh连接的。
2、连接上去,如下图所示。
3、然后使用vi命令编辑 /etc/init.d/dropbear,如下图所示。
4、然后找到有字符 22 那一行,可以在里边搜索的。
5、最后将它改为自己定义的端口,这里修改为43999 ,然后保存退出,如下图所示。
6、然后重启服务或者路由器都可以,等重启好之后,测试一下,即可设置成功。
admin设置。开放端口选择undefined。即可同时监听内外网指定端口。
设置OpenWRT详细步骤如下:
1、打开网页浏览器,输入管理页地址"192.168.5.1"进行访问(如果不是默认固件,请根据你的固件说明来确定访问IP),账号为"root",默认没有密码。
2、点击左侧的"系统"菜单,选择子菜单"管理权",并在右边重复输入两次密码,最后滚动页面到底部,点击"保存&应用"按钮,此时如果返回登录页面,则用你设置的密码再次登录。
3、点击左侧网络-接口,找到右侧的"WAN",并点击"修改"按钮,进入拨号帐号设置页面。
4、在WAN口设置页面,首先点击"协议"下拉框,选择"PPPoE"协议,并点击下方的"切换协议"按钮切换到拨号上网模式。
5、按下图,输入你的拨号上网的帐号和密码(如果不知道,可以看看光猫上的贴纸,或者拨打你的ISP客服电话查询),并点击页面底部"保存&应用"按钮确认。
6、这时,返回第3步的页面,右侧"WAN"处将会出现你拨号获得的外网IP,重启电脑并重启软路由,就可以愉快的上网了。
OpenWRT系统特点
OpenWRT是一个高度模块化、高度自动化的嵌入式Linux系统,拥有强大的网络组件和扩展性,常常被用于工控设备、电话、小型机器人、智能家居、路由器以及VOIP设备中。同时,它还提供了100多个已编译好的软件,而且数量还在不断增加,而 OpenWrt SDK 更简化了开发软件的工序。
OpenWRT不同于其他许多用于路由器的发行版,它是一个从零开始编写的、功能齐全的、容易修改的路由器操作系统。实际上,这意味着您能够使用您想要的功能而不加进其他的累赘,而支持这些功能工作的linux kernel又远比绝大多数发行版来得新。
如果是openwrt官方的默认设置,用二级路由器访问一级路由器本来就可以如果要用二级路由器下的电脑访问一级路由器,要设置电脑的路由表从一级访问二级,要在二级路由器的防火墙设。
置里,允许二级路由器接收wan区域的入站数据(默认不允许)从外网访问二级,要设置客户端路由表,设置一级路由器允许wan区域到lan区域的转发,再。
加上上一行的设置A路由器LAN下的电脑如何访问B路由器LAN下的电脑,要设置B路由器允许wan区域到lan区域的转发,再加上端口转发的设置。
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。
查看版本
ebtables -V
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
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
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
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
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。