前言
我的环境是:畅网的4网口路由器安装PVE:
- eth0 做为ROS 的wan,直通
- eth1 做为ROS 的lan,桥接
- eth2 备用
- eth3 最后一个网口,pve的管理口
基本设置
通过 quick set 来设置
Configuration 选 router,接上网线会自动获取上游下发的IP
Local Network:
- IP:192.168.10.1
- NetMask 255.255.255.0(/24)
- brigde all lan ports 选中
- dhcp Server 选中
- dhcp server range 192.168.10.31-192.168.10.250
- Nat 选中
如果不能上网的话, dns settings中选中 allow remote requests。
用脚本的话是这样:
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
| # 配置 WAN 接口(假设为 ether2) CHR版本在pve里,第一个网卡是直通,第二个网卡是桥接,它识别ether1为lan, 可以改一下名,把 wan 改成 ether1
/ip dhcp-client add interface=ether1 add-default-route=yes use-peer-dns=yes
# 配置 LAN 接口(假设为 bridge1)
/interface bridge add name=bridge1
/interface bridge port add bridge=bridge1 interface=ether2
# 如果有多个按设备号添加,
#/interface bridge port add bridge=bridge1 interface=ether3
# 配置 LAN IP 地址
/ip address add address=192.168.10.1/24 interface=bridge1
# 配置 DHCP 服务器
/ip pool add name=dhcp_pool ranges=192.168.10.31-192.168.10.250
/ip dhcp-server add name=dhcp1 interface=bridge1 address-pool=dhcp_pool lease-time=10m
/ip dhcp-server network add address=192.168.10.0/24 gateway=192.168.10.1 dns-server=192.168.10.1
# 使用路由器本身作为 DNS 服务器,甚至可以设置 doH server
/ip dns set allow-remote-requests=yes
# 定义Wan 和 LAN 的网卡列表。方便后续写防火墙规则,至少有一个nat规则。如果要省事儿,不写列表就写死 out-interface=ether1 也可以
/interface list
add comment=defconf name=WAN
add comment=defconf name=LAN
/interface list member
add interface=bridge1 list=LAN
add interface=ether1 list=WAN
# 启用 NAT,或者参考后面的防火墙规则,注意,这条规则是已经配置了 interface-list 的情况
/ip firewall nat add chain=srcnat action=masquerade out-interface-list=WAN comment="defconf: masquerade"
# 使用doh server
/ip dns set use-doh-server="https://1.12.12.12/dns-query"
# 防火墙规则:
# 默认拒绝所有流量
# 丢弃无效连接
# 允许本地网络访问路由器
# 允许已建立和相关的连接
# 允许本地网络访问互联网
# 允许来自内部网络的 ICMP 流量
# 阻止 外部访问路由器的Telnet、FTP、SSH、HTTP、HTTPS
# 允许本地网络的 DNS 查询
# 允许 DHCP 请求
# 配置地址伪装,也叫开启 NAT
/ip firewall filter
add chain=input action=drop comment="Drop all input by default"; \
add chain=forward action=drop comment="Drop all forward by default"; \
add chain=input connection-state=invalid action=drop comment="Drop invalid connections"; \
add chain=forward connection-state=invalid action=drop comment="Drop invalid connections"; \
add chain=input action=accept in-interface=bridge1 comment="Allow LAN access to router"; \
add chain=input action=accept connection-state=established,related comment="Allow established and related connections"; \
add chain=forward action=accept connection-state=established,related comment="Allow established and related connections"; \
add chain=forward action=accept in-interface=bridge1 out-interface=ether1 comment="Allow LAN to WAN"; \
add chain=input protocol=icmp in-interface=bridge1 action=accept comment="Allow ICMP from LAN"; \
add chain=input action=drop protocol=tcp dst-port=23 comment="Drop Telnet"; \
add chain=input action=drop protocol=tcp dst-port=21 comment="Drop FTP"; \
add chain=input action=drop protocol=tcp dst-port=22 comment="Drop SSH from WAN"; \
add chain=input action=drop protocol=tcp dst-port=80 comment="Drop HTTP from WAN"; \
add chain=input action=drop protocol=tcp dst-port=443 comment="Drop HTTPS from WAN"; \
add chain=input protocol=udp port=53 in-interface=bridge1 action=accept comment="Allow DNS queries from LAN"; \
add chain=input protocol=tcp port=53 in-interface=bridge1 action=accept comment="Allow DNS queries from LAN"; \
add chain=input protocol=udp port=67-68 in-interface=bridge1 action=accept comment="Allow DHCP requests from LAN"; \
/ip firewall nat add chain=srcnat out-interface=ether1 action=masquerade
|
然后进入 IP->DNS,把 转发 选中(记忆中是这样) 就可以上网了。
开启IPV6
我的 CHR 版本,默认已经自带了ipv6,不需要从package中开启ipv6。
RouterOS DHCPv6 服务器只能委托 IPv6 前缀,而不是地址。 所以当使用SLAAC能分配并正常使用的时候,就没必要开启DHCPV6 server了。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| # 配置 RouterOS 设备以接受来自上游路由器的 IPv6 路由器广告消息,默认值是:yes if forwarding disabled
# 接受上游路由器广告,目前看没啥用,不启用了
# /ipv6 settings set accept-router-advertisements=yes
# 配置 DHCPv6 客户端,使用从上游 DHCP 服务器获取的 IPv6 地址和前缀
/ipv6 dhcp-client add interface=ether1 pool-name=dhcpv6-pool pool-prefix-length=60 add-default-route=yes use-peer-dns=no request=address,prefix
# 配置 SLAAC 和邻居发现协议,并指定 DNS 服务器地址
/ipv6 nd add interface=bridge1 other-configuration=yes advertise-dns=yes
/ipv6 nd prefix add interface=bridge1 preferred-lifetime=1h valid-lifetime=2h
/ipv6 nd set [find interface=bridge1] dns=2001:db8::240,2001:4860:4860::8844
# 添加ipv6 address 地址并指定地址池
/ipv6 address add address=::1 from-pool=dhcpv6-pool interface=bridge1
# 配置 DHCPv6 服务器(可选)都已经可以获取IP并且正常使用了。
# /ipv6 pool add name=dhcpv6-pool prefix=2408:8210:1803:dbf2::/64
# /ipv6 dhcp-server add name=dhcpv6-server interface=bridge1 address-pool=dhcpv6-pool
|