作者归档:vibbow

家庭网络布线选型

以下内容均为个人收集/整理/理解的信息,不保证正确性。

一、网线 or 光纤

从设备兼容性以及网络性能上来讲,我选择网线。

虽然光纤已经能达到 100Gbps 的速率了,但是我身边没有一台支持 SFP+/QSFP 的终端设备,可见的未来也没有普及的趋势。同时网线现在也能达到 10Gbps 的速率了,因此一般的家庭选择网线即可。

个人建议:如果你打算部署 1Gbps/10Gbps 网络,仅部署网线即可;如果你有部署 40Gbps 及以上速率网络的需求,再考虑网线/光纤混合网络。

家庭使用千万不要部署纯光纤网络!!!光纤是没有供电能力的!!!
想想你的AP,你的监控,你的IP话机!!!

二、CAT 5E / CAT 6 / CAT 6A

从理论和实际上来讲,CAT 5E 已经完全能满足千兆网络的需求,CAT 6 也能满足短距离万兆网络的需求了。但是既然你来看这篇文章了,说明是考虑了未来网络的发展的,那么我建议一步到位直接上 CAT 6A 网线。

千万不要想着日后抽换网线,很难。

三、非屏蔽线 or 屏蔽线

这一块是争议最大的内容,但是在翻阅了N多英文资料后,我的选择是:上屏蔽线。

在找相关资料的时候,我其实也是纠结的,因为中文内容和英文内容出现了一些完全截然相反的结论。在这里我按照我的理解对一些争议项做一些简单的解释。

首先是为什么要上屏蔽线,通常大家看到的过FLUKE测试,都是在只有一根线的情况下测试的,但是实际情况可能并不是这样的。实际情况更可能是:几十根网线紧紧的捆绑在一起,这时网线之间也会产生相互的干扰。那么如何解决呢?上屏蔽线。

以下是我看到的一些内容,但是我觉得说法是不对的。当然我的理解也并不一定是对的,仅供参考,欢迎探讨。

  1. 屏蔽线必须整个网络都得接地:
    屏蔽线即使不接地也有很好的屏蔽效果,接地的话更好
  2. 屏蔽线不接地的话就会变成大号天线
    只要是金属的都会是天线,非屏蔽线也是,但是屏蔽层的屏蔽效果大于天线效果
  3. 屏蔽线需要双接地(两端都接地)
    屏蔽线只能单接地,双接地的话可能因为接地两端的电势差形成接地回路
  4. “实测同一种规格的网线,带屏蔽的没接地超过50米严重丢包几乎没法用,不带屏蔽的70米还能正常传输”
    只看到了这一例,我怀疑是水晶头/网线的质量问题。

其实我选择屏蔽线最重要的原因是:HDMI也是双屏蔽未接地的,不照样跑40Gb速率的。

当然了,并不是说非屏蔽线就一无是处了,要上肯定就上好的,一次性到位嘛。

四、F/UTP or U/FTP or F/FTP 屏蔽线?

先对这几个名词解释一下,F 表示带屏蔽层, U 表示不带屏蔽层,TP 表示双绞
斜杠前面的表示整体的屏蔽,斜杠后面的表示线对的屏蔽
那么上面三种屏蔽线分别表示:
F/UTP – 外层有屏蔽层,线对没有屏蔽层
U/FTP – 外层没有屏蔽层,线对有屏蔽层
F/FTP – 外层及线对都有屏蔽层 (俗称的双屏蔽网线)

选哪个?个人建议是 U/FTP,当然不差钱的话可以上 F/FTP。

为什么这里把 F/UTP 淘汰了呢?因为从技术参数上讲,U/FTP 全面秒杀 F/UTP。

如果你仔细观察一个合格的 CAT 6 非屏蔽网线,你会发现四对线缆的绞距是不同的,这是为了防止每对线缆总是在同样的位置靠近,从而放大线缆对之间的干扰。

上面提到的岔开线缆对的绞距,其实是会产生额外的问题的:即每一对线缆的长度都有差距,电信号的到达时间也会有轻微差距。如果每对线缆自己都有一层屏蔽层(U/FTP),那么就不需要岔开绞距了。

同时 CAT 6 非屏蔽网线中间还有一个塑料龙骨,干的也是差不多的事情,把线缆对隔离开,降低干扰。如果每对线缆自己都有一层屏蔽层(U/FTP),那么就不需要用龙骨了(没有龙骨意味着线缆更容易弯折)

而且很显然的,如果线缆对有自己的屏蔽层,线缆对之间就不会相互干扰,信号质量就会更好。

F/FTP 比 U/FTP 多了一层整体的屏蔽层,效果肯定是有的,想上的可以上,比 U/FTP 一箱贵两三百把,家用环境应该区别不大,看个人选择了。

五、总结

没有总结

RouterOS IPv6 实用脚本

IPv6 地址更新脚本

用于当 RouterOS IPv6 更新时,主动向客户端广播旧地址过期

:local poolname "pool6"
:local ifname "bridge"

:global oldprefix;
:local newprefix;

:set $newprefix [/ipv6 pool used get [find info="bridge"] prefix];

:if ([ :typeof $oldprefix ] = "nothing") do {
  :set $oldprefix $newprefix
}

:if ($newprefix != $oldprefix) do {
  :log info "Kill IPv6 prefix, old prefix: $oldprefix, new prefix: $newprefix";
  :ipv6 nd prefix add prefix=$oldprefix interface=$ifname on-link=yes autonomous=yes preferred-lifetime=0s valid-lifetime=0s;
  :delay 5;
  :ipv6 nd prefix remove [/ipv6 nd prefix find prefix=$oldprefix];
  :set $oldprefix $newprefix;
}

IPv6 DHCP Rebinding 脚本

用于修复当 PPPoE 重新拨号时 IPv6 DHCP 卡在 Rebinding 状态

:local wan "pppoe-telecom"
:if ( [ /ipv6 dhcp-client get [ find interface=$wan ] status ] = "rebinding..." ) do={ 
    /ipv6 dhcp-client release [ find interface=$wan ] 
}

IPv6 自动更新当前 Prefix 到 Prefix Hint

如果提供了 IPv6 prefix hint,那么有可能拿到 hint 里的 prefix

:local interfaceName "pppoe-telecom";

:local oldIP6Prefix [ /ipv6 dhcp-client get [find interface=$interfaceName] prefix-hint ]

:local ip6Prefix [ /ipv6 dhcp-client get [find interface=$interfaceName] prefix ]
:set ip6Prefix [ :pick $ip6Prefix 0 [ :find $ip6Prefix "," ] ] ;

:if ($oldIP6Prefix != $ip6Prefix) \
do={
    /ipv6 dhcp-client set prefix-hint=$ip6Prefix [find interface=$interfaceName] 
    :log info ("Update IPv6 Prefix Hint: " . $ip6Prefix);
}

IPv6 自动修改 MSS

可以极大缓解 IPv6 网页打不开的问题

/ipv6 firewall mangle
add action=change-mss chain=forward new-mss=clamp-to-pmtu passthrough=yes protocol=tcp tcp-flags=syn

将 RouterOS L4 授权转换为 CHR P1 授权方法

1 在 RouterOS -> System -> License 中点击 Renew License,输入自己的 Mikrotik 账号,然后点击 Start。

2 访问 Mikrotik 个人账户页面 https://mikrotik.com/client ,点击左侧的 all CHR keys,列表中会显示上一步 RouterOS 的 System ID,点击 Upgrade。

3 选择要使用的授权等级,点击 Upgrade。

4 点击 Pay using Prepaid Key (1),如果括号里的数字不是1,则说明你没有空闲的 L4/L5 授权

5 升级完成,授权等级信息里已经没有 (Trial) 的字样了

RouterOS 默认防火墙规则

Mikrotik 的 RouterBoard 硬件产品默认都有带有配置良好的防火墙规则,x86/CHR 设备默认不带防火墙规则。 如果你不小心删掉了防火墙规则,或者需要还原默认防火墙规则,可以导入以下配置:。

/interface list
add comment=defconf name=WAN
add comment=defconf name=LAN

/interface list member
add comment=defconf interface=bridge list=LAN
add comment=defconf interface=ether1 list=WAN

/ip firewall filter
add action=accept chain=input comment="defconf: accept established,related,untracked" connection-state=established,related,untracked
add action=drop chain=input comment="defconf: drop invalid" connection-state=invalid
add action=accept chain=input comment="defconf: accept ICMP" protocol=icmp
add action=accept chain=input comment="defconf: accept to local loopback (for CAPsMAN)" dst-address=127.0.0.1
add action=drop chain=input comment="defconf: drop all not coming from LAN" in-interface-list=!LAN
add action=accept chain=forward comment="defconf: accept in ipsec policy" ipsec-policy=in,ipsec
add action=accept chain=forward comment="defconf: accept out ipsec policy" ipsec-policy=out,ipsec
add action=fasttrack-connection chain=forward comment="defconf: fasttrack" connection-state=established,related hw-offload=yes
add action=accept chain=forward comment="defconf: accept established,related, untracked" connection-state=established,related,untracked
add action=drop chain=forward comment="defconf: drop invalid" connection-state=invalid
add action=drop chain=forward comment="defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat connection-state=new in-interface-list=WAN

/ipv6 firewall address-list
add address=::/128 comment="defconf: unspecified address" list=bad_ipv6
add address=::1/128 comment="defconf: lo" list=bad_ipv6
add address=fec0::/10 comment="defconf: site-local" list=bad_ipv6
add address=::ffff:0.0.0.0/96 comment="defconf: ipv4-mapped" list=bad_ipv6
add address=::/96 comment="defconf: ipv4 compat" list=bad_ipv6
add address=100::/64 comment="defconf: discard only " list=bad_ipv6
add address=2001:db8::/32 comment="defconf: documentation" list=bad_ipv6
add address=2001:10::/28 comment="defconf: ORCHID" list=bad_ipv6
add address=3ffe::/16 comment="defconf: 6bone" list=bad_ipv6

/ipv6 firewall filter
add action=accept chain=input comment="defconf: accept established,related,untracked" connection-state=established,related,untracked
add action=drop chain=input comment="defconf: drop invalid" connection-state=invalid
add action=accept chain=input comment="defconf: accept ICMPv6" protocol=icmpv6
add action=accept chain=input comment="defconf: accept UDP traceroute" port=33434-33534 protocol=udp
add action=accept chain=input comment="defconf: accept DHCPv6-Client prefix delegation." dst-port=546 protocol=udp src-address=fe80::/10
add action=accept chain=input comment="defconf: accept IKE" dst-port=500,4500 protocol=udp
add action=accept chain=input comment="defconf: accept ipsec AH" protocol=ipsec-ah
add action=accept chain=input comment="defconf: accept ipsec ESP" protocol=ipsec-esp
add action=accept chain=input comment="defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec
add action=drop chain=input comment="defconf: drop everything else not coming from LAN" in-interface-list=!LAN
add action=accept chain=forward comment="defconf: accept established,related,untracked" connection-state=established,related,untracked
add action=drop chain=forward comment="defconf: drop invalid" connection-state=invalid
add action=drop chain=forward comment="defconf: drop packets with bad src ipv6" src-address-list=bad_ipv6
add action=drop chain=forward comment="defconf: drop packets with bad dst ipv6" dst-address-list=bad_ipv6
add action=drop chain=forward comment="defconf: rfc4890 drop hop-limit=1" hop-limit=equal:1 protocol=icmpv6
add action=accept chain=forward comment="defconf: accept ICMPv6" protocol=icmpv6
add action=accept chain=forward comment="defconf: accept HIP" protocol=139
add action=accept chain=forward comment="defconf: accept IKE" dst-port=500,4500 protocol=udp
add action=accept chain=forward comment="defconf: accept ipsec AH" protocol=ipsec-ah
add action=accept chain=forward comment="defconf: accept ipsec ESP" protocol=ipsec-esp
add action=accept chain=forward comment="defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec
add action=drop chain=forward comment="defconf: drop everything else not coming from LAN" in-interface-list=!LAN

规则提取自 RouterOS 7.1.1,更新于 2021年12月31日。

RouterOS 定时重连 PPPoE 脚本

因为中国电信会不定时的强行中断 PPPoE 连接,为了避免白天被中断的情况,可以在半夜不用的时候自己主动重连一次 PPPoE,以避免白天被强行中断。

/system scheduler
add name="restart pppoe" on-event="/interface pppoe-client enable pppoe-telecom" \
start-time=06:00:00 interval=1d 

只需将上述代码中的 pppoe-telecom 更换为你 PPPoE 连接的名称,start-time 修改为你想重连的时间即可。