分类 技术 下的文章

青云主机安装routeros,附一键安装routeros脚本

20201111更新:routeros chr版本,mount命令offset。

在阿里云安装过routeros,用相同脚本在青云就遇到了坑。
阿里云ecs没有cpu选项,而青云有,创建主机的时候cup高级选项,CPU 体系架构,默认值启动routeros后会cpu100%,选择haswell架构就没有问题,broadwell也不行,再往下的架构没有测试。
附一键安装routeros脚本

wget https://download.mikrotik.com/routeros/6.47.7/chr-6.47.7.img.zip -O chr.img.zip && \
gunzip -c chr.img.zip > chr.img && \
mount -o loop,offset=512 chr.img /mnt && \
ADDRESS0=`ip addr show eth0 | grep global | cut -d' ' -f 6 | head -n 1` && \
GATEWAY0=`ip route list | grep default | cut -d' ' -f 3` && \
echo "/ip address add address=$ADDRESS0 interface=[/interface ethernet find where name=ether1]
/ip route add gateway=$GATEWAY0
" > /mnt/rw/autorun.scr && \
umount /mnt && \
echo u > /proc/sysrq-trigger && \
dd if=chr.img bs=1024 of=/dev/vda && \
reboot

ikev2配合radius和ldap认证vpn服务器搭建,适合iphone,macos

ikev2的vpn是苹果系统默认推荐的方式,不需要下载客户端,企业用户配合ldap账号管理很方便。
以下方法基于ubuntu16.04系统,使用脚本https://quericy.me/blog/699/

20180823提醒一下,strongswan不支持野卡(通配符域名证书),需要使用具体的域名证书。
参考https://tools.ietf.org/html/rfc6125#section-7.2

20180524添加我改写的一键安装脚本https://github.com/trepwq/ikev2-radius-ldap/raw/master/install-ikev2-radius-ldap.sh
以下为原作者脚本安装步骤

首先申请域名证书,可以用阿里云免费的单域名证书,申请下来后证书里第一部分是域名证书,写入server.cert.pem;第二部分是ca证书,写入ca.cert.pem ,另一个key文件修改为server.pem,把这三个文件放到quericy脚本的相同目录里。
然后按照提示一步一步来,需要注意的是我开启了snat,其他为默认。如果网卡ip地址是内网ip,就输入内网ip,然后在路由器端把500和4500端口的udp转发给这个内网ip就可以了。
脚本安装完之后修改配置文件/usr/local/etc/ipsec.conf, 把里面的rightauth=eap-mschapv2修改为rightauth=eap-radius,然后在/usr/local/etc/strongswan.d/charon/eap-radius.conf 的servers段添加服务器地址和密码

servers {
        server_synology {
                        address = 192.168.1.1
                        secret = secret
                        }
}

我这里使用了群晖的radius-server。
最后重启ipsec restart。ps,ipsec reload对很多修改不起作用。
最最后添加ipsec开机启动

root@ubuntu:~# cat /etc/rc.local 
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

/usr/local/sbin/ipsec start


exit 0

由于使用了域名证书,根证书在苹果系统里是已经存在的,所以不需要导入证书,直接输入用户名密码即可。

esxi修改https证书,不再提示不可信

ESXi 安装后会默认自动生成证书,浏览器报不可信,网页提供的证书上传的功能不可用。

通过SSH手动替换证书是个相对可靠方便的方法。

注:连接了vCenter的主机需要跟vCenter走,本例为独立主机。

首先在面板或DCUI中启用SSH。

登录后,

cd /etc/vmware/ssl
ls
里面的 rui.crt 和 rui.key 就是需要改的证书了。

有需要的可以先备份一下,然后,

vi rui.crt
修改,贴入签名过的证书。

vi rui.key
修改,贴入证书密钥。

注意 .key 是只读文件,保存时可以用 :wq! 强制保存。

证书替换后不是即时生效,需要重启。

esxi 6.5自定义打包添加驱动

弄了个无风扇的7200u软路由,板载82583v网卡,使用esxi6.5发现找不到网卡,搜索发现是6.5驱动问题,6.0可以识别。
下载最新esxi6.5的最新patch,替换驱动,生成iso安装。
步骤如下:
1,下载patch包,地址https://my.vmware.com/group/vmware/patch,ESXi650-201803001.zip 和 ESXi600-201803001.zip,因为要用6.0里面的网卡驱动。
2,安装vmwarecli的powershell工具,以管理员身份打开powershell,

Install-Module -Name VMware.PowerCLI

输入两个yes,然后打开脚本执行权限,

set-ExecutionPolicy RemoteSigned

3,切换到zip包所在目录,输入

Add-EsxSoftwareDepot .\ESXi650-201803001.zip,.\ESXi600-201803001.zip
Get-EsxSoftwarePackage -Name net-e1000e
New-EsxImageProfile -CloneProfile "ESXi-6.5.0-20180304001-standard" -name "ESXi-6.5.0-20180304001-standard-82583v" -Vendor vGhetto
Remove-EsxSoftwarePackage -ImageProfile "ESXi-6.5.0-20180304001-standard-82583v" -SoftwarePackage "net-e1000e"
Remove-EsxSoftwarePackage -ImageProfile “ESXi-6.5.0-20180304001-standard-82583v” -SoftwarePackage “ne1000”
Add-EsxSoftwarePackage -ImageProfile "ESXi-6.5.0-20180304001-standard-82583v" -SoftwarePackage "net-e1000e 3.2.2.1-2vmw.600.3.57.5050593"
Export-ESXImageProfile -ImageProfile "ESXi-6.5.0-20180304001-standard-82583v" -ExportToISO -filepath ESXi-6.5.0-20180304001-standard-82583v.iso

生成ESXi-6.5.0-20180304001-standard-82583v.iso
4,用ultraiso写入u盘,安装esxi6.5

使用ping测试路径里设备的mtu

使用ping测试路径里设备的mtu,mac ping -s 1472 -D 192.168.1.1,linux ping -s 1472 -M do 192.168.1.1,windows ping -f -l 1472 192.168.1.1,如果不通则mtu小于1500
1472是ping数据大小,要加上icmp控制8字节和20字节的ip包头,等于1500字节。

MTU 到底是怎么来的
MTU, 是 Maximum Transmission Unit 的缩写, 根据 Wikipedia 的定义, MTU 指的是在 Network Layer (因处 OSI 第三层, 后以 L3 代替)上传输的最大数据报单元, 而 MTU 的大小一般由 Link Layer (因处 OSI 第二层, 后以 L2 代替) 设备决定. 比如生活中使用最广泛的以太网(Ethernet, IEEE 802.3)的帧大小是 1518 字节, 根据 Ethernet Frame 的定义, L2 Frame 由 14 字节 Header 和 4 字节 Trailer 组成, 所以 L3 层(也就是 IP 层)最多只能填充 1500 字节大小, 这就是 MTU 的由来.

802.3 Ethernet MTU
Dest MAC(6)Src MAC(6)Eth Type/Len(2)PayloadCRC Trailer(4)

所以说, 当使用 Ethernet 介质时确定只能传最大 1518 字节的帧后, 减去 18 字节的 L2 头和尾, 留给 IP 层的就只有 1500 字节了.

PS: 标准文档中中所说的 LLC 层因为在实际应用中基本不存在, 所以 802.3 标准 MTU 是 1492, 但是实际使用中的 MTU 是 1500.

L2, L3 示意图
IP Layer(1500)
Link Layer(1518)

PPPoE MTU
另一个典型的 MTU 是拨号上网( PPPoE )的 1492 字节, 通过以太网接入的 PPPoE 的封包结构上会在 L2 和 L3 之间插入两层, 一层 PPP 协议和一层 PPPoE 协议. 但是因为传输的底层仍然使用的是以太网, 所以上层包大小仍然受 L2 大小限制. MTU 这样算, Link Layer 长 1518 字节, 所以 PPPoE Layer 最长 1500 字节, 然后 PPPoE 头占用 6 字节, PPP 头占用 2 字节, 所以留给 IP 层的最大空间就剩下了 1492 字节:

IP Layer(1492)
PPP Layer(1494)
PPPoE Layer(1500)
Link Layer(1518)

VLAN(802.1Q) MTU
VLAN (IEEE 802.1Q) 的实现是在 L2 头部扩展了一个 4 字节大小的字段, 分别是 2 字节协议识别码(TPID)和 2 字节的控制信息(TCI), 这导致了 L2 的头和尾加起来的长度变成了 22 字节, 所以 L3 的 MTU 就被压缩到了 1496 字节:

IP Layer(1496)
Link Layer(1518)

然而在 802.3ac 标准之后的以太网帧大小则扩展到了 1522 字节, 也就是说在这个标准下的 Ethernet, MTU 也可以设定成 1500 字节了.

IP Layer(1500)
Link Layer(1522)

TCP MSS
MSS (Maximum Segment Size)是 TCP Layer (L4) 的属性, MSS 指的是 TCP payload 的长度. 当在 MTU 1500 的网络上传输时, MSS 为 1460 (即 1500 减去 20 字节 IP 头, 20 字节 TCP 头).

为什么 L3 有 MTU 后 L4 还要 MSS 呢?
MTU 和 MSS 的功能其实基本一致, 都可以根据对应的包大小进行分片, 但实现的效果却不太一样.

L3 (IP) 提供的是一个不可靠的传输方式, 如果任何一个包在传输的过程中丢失了, L3 是无法发现的, 需要靠上层应用来保证. 就是说如果一个大 IP 包分片后传输, 丢了任何一个部分都无法组合出完整的 IP 包, 即是上层应用发现了传输失败, 也无法做到仅重传丢失的分片, 只能把 IP 包整个重传. 那 IP 包越大的话重传的代价也就越高.

L4 (TCP) 提供的是一个可靠的传输方式, 与 L3 不同的是, TCP 自身实现了重传机制, 丢了任何一片数据报都能单独重传, 所以 TCP 为了高效传输, 是需要极力避免被 L3 分片的, 所以就有了 MSS 标志, 并且 MSS 的值就是根据 MTU 计算得出, 既避免了 L3 上的分片, 又保证的最大的传输效率.