idrac远程登录服务器

Linux的环境了,windows的不行。 Dell的idrac其实提供了远程的ssh界面,我们通常用idrac来设置bios什么的,当然如果能通过idrac直接登录服务器那就更好了。 首先普及以下几个概念: tty: Video console terminal (abbreviation for “Teletype”) ttyS: Serial console terminal pts: Virtual console terminal (pseudo-tty or pty but stands for Pseudo-Terminal Slave (PTS)) 简单说,tty是带显示器的终端,ttyS是串口终端,pts是虚拟终端。tty接显示器、键盘,ttyS接串口,pst就是远程ssh/telnet过来的虚拟终端。 第一步:修改Dell Bios dell的bios中关于serial的配置如下图: 我们只改前两个就可以了: Serial Communication: “On with serial redirection via com2” Serial Port Address: “Serial Device1 = COM1, Serial Device2=COM2 External Serial Connector: “Serial Device1” Failsafe Baud Rate: “115200” Remote Terminal Type: “VT100/VT220” Redirection After Boot: “Enabled” 解释一下: Serial Communication 缺省是 On without Console Redirection,我们需要把所有console的显示都转发到com2上,所以需要改。 Serial Port Address 缺省是 Serial Device 1=COM2, Serial Device 2=COM1,如果不改,那么接上物理机上的串口就可以看到登录画面了,这样等于串口1废掉了,万一我们要把物理机上的com1口给留出来备用,插个串口的wavecom modem做报警用,那就傻眼了,所以必须改掉留出com1备用。 External Serial Connector 缺省是 Serial Device1,不用改,那么物理机上的com口就是com1了,对应ttyS0。 Failsafe Baud Rate: “115200”,不用改,就用这个高的好了。 Remote Terminal Type: “VT100/VT220”,不用改,黑白的vt100就很好 Redirection After Boot: “Enabled”,也不用改,需要重定向。 当然,用脚本一次搞定更好: ...

2024年01月15日 · 2 分钟 · 252 字 · 八戒

用openssh的tunnel建立vpn

openssh是支持隧道的,所以很简单就可以在ssh中再套个管道,直接用来vpn,场景如下: 如上图,A机能ssh无密码登录B机 A机的IP:172.16.8.106 B机的IP:172.16.8.108 A机拨通vpn tunnel后tun的ip:192.168.244.2 B机拨通vpn tunnel后tun的ip:192.168.244.1 首先编辑A和B的/etc/ssh/sshd_config,允许tunnel,缺省是不允许的,然后service sshd restart ,重启sshd ... PermitTunnel yes ... A和B安装linux下的tunctl软件,并启动一个tunnel设备 yum install tunctl tunctl -t tun5 -u root 在A(172.16.8.106)机器上生成key,并设置能无密码证书直接登录B(172.16.8.108) ssh-keygen ssh-copy-id root@172.16.8.108 在A上执行命令,建立ssh tunnel: ssh -w 5:5 root@172.168.8.108 在A上执行 ifconfig tun5 192.168.244.2 pointopoint 192.168.244.1 netmask 255.255.255.0 在B上执行 ifconfig tun5 192.168.244.1 pointopoint 192.168.244.2 netmask 255.255.255.0 这样分别在A和B上ping 192.168.244.1和192.168.244.2,都能通就表示已经ok了。 优化一下,A和B两边都先把tun5起来以后,直接在A上一句话搞定,这个不会自动退出,所以得ctrl+z,然后bg放后台去: ssh \ -o PermitLocalCommand=yes \ -o LocalCommand="ifconfig tun5 192.168.244.2 pointopoint 192.168.244.1 netmask 255.255.255.0" \ -o ServerAliveInterval=60 \ -w 5:5 root@172.16.8.108 \ 'ifconfig tun5 192.168.244.1 pointopoint 192.168.244.2 netmask 255.255.255.0; echo tun5 ready' 如果要用在翻墙的环境,那就得保持长链接了。假设A机器是在一个防火墙后,且被NAT了,那么就得先这样打通隧道: ...

2024年01月15日 · 1 分钟 · 155 字 · 八戒

多网关、策略路由、负载均衡的实际应用

场景: 公司有两条线路,一条是鹏博士的,一条是电信的。 鹏博士是100兆共享线路,电信是10兆独享线路。 鹏博士对端的地址是1.1.1.1,本地服务器地址是1.1.1.2 电信对端的地址是2.2.2.2,本地服务器是2.2.2.3 所以导致有两个网关,大部分公司同事用得是100兆的共享,10兆的被客服独用,但是使用率很低。那能否两边都用呢? 答案是可以的,用策略路由就可以。 策略路由需要用到iproute2,没有的话先安装一下。 定义策略路由表 cd /etc/iproute2/ echo "101 pengboshi" >> rt_tables echo "102 dianxin" >> rt_tables 定义策略路由 ip route add default via 1.1.1.1 table 101 ip route add default via 2.2.2.2 table 102 ok,流量分为两个方向,进来的和出去的,先定义简单的,进来的: ip rule add from 1.1.1.1 table 101 ip rule add from 2.2.2.2 table 102 出就比较麻烦了,100兆和10兆按权重来分,8:2吧 ip route replace default scope global \ nexthop via 1.1.1.1 dev eth0 weight 8 \ nexthop via 2.2.2.2 dev eth0:1 weight 2 注意,因为我们是用了一台路由器来连接上面两个网关的,服务器实际是一个网卡上连到交换机,然后再上连路由器的,如下图: 我们把这一切固定下来,编辑/etc/rc.d/rc.local即可 # cat /etc/rc.local #!/bin/sh touch /var/lock/subsys/local /sbin/ip route replace default scope global nexthop via 1.1.1.1 dev eth0 weight 8 nexthop via 2.2.2.2 dev eth0:1 weight 2

2024年01月11日 · 1 分钟 · 104 字 · 八戒

Keepalived与iptables mark的联动

Iptable可以给进来的包打上标签,比如我们把从1.2.3.4进来的包都打上标签2000(标签可以是任何整数) iptables -t mangle -A PREROUTING -i eth0 \ -p tcp -s 1.2.3.4 --dport http -j MARK --set-mark 2000 或者把访问172.16.8.1的80和443端口的包都打上标签123: iptables -t mangle -A PREROUTING -i eth0 \ -p tcp -d 172.16.8.1/32 -m multiport --dports 80,443 -j MARK --set-mark 123 随后我们就可以在keepalived里来指定virtual_server来处理这些打过标签的流量了: virtual_server fwmark 123 { ... } 具体的一个用法,如果你想禁止从1.2.3.4来的ip访问你服务器,于是乎你就可以先给包打上标签2000,然后配个服务器,上面写联系人和电话,单独给他看,他看到会联系你询问被屏蔽的原因,如下: virtual_server fwmark 2000 { delay_loop 6 lb_algo wlc lb_kind NAT persistence_timeout 0 protocol TCP real_server 10.10.10.1 80 { weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 } } }

2024年01月11日 · 1 分钟 · 77 字 · 八戒

F5利用irule来防止Ddos的方法

公司的服务器遭受了攻击,某些人不停调用公司服务器发送短信的api,真是有够无聊的。 由于我们的架构是前面F5 Bigip,后面接了N个Tomcat,那就直接写个F5的irule来阻止它。 阻止GET请求的频率,30秒只允许单个ip发5次 假设GET的模式是 GET /sendsms.do?mobile=13800000000&msg=aaaaaaaa irule里有个非常神奇的东西,table,是session会话表的超表,基本操作是key-value型,带有生存时间,这点最重要。 详细的大家可以去看: https://clouddocs.f5.com/api/irules/table.html 阻止GET的irule: when RULE_INIT { set static::windowSecs 30 } when HTTP_REQUEST { if { ( [HTTP::method] equals "GET" ) && ( [HTTP::uri] starts_with "/sendsms.do" ) } { set myUserId [IP::client_addr] set myMaxRate 5 if { $myMaxRate ne "" } { set reqnum [table incr "req:$myUserId"] set tbl "countpost:$myUserId" table set -subtable $tbl $reqnum "ignored" indef $static::windowSecs if { [table keys -subtable $tbl -count] > $myMaxRate } { HTTP::respond 403 "Block" return } } } } 来个更加复杂的例子: POST的请求如下: POST /api/sendMessage.htm HTTP/1.1 Content-Length: 203 Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Host: 172.8.2.23 Connection: Keep-Alive User-Agent: Apache-HttpClient/4.5 (Java/1.7.0_51) Accept-Encoding: gzip,deflate action=order.sumit.order&jsonData=%7B%22channelCode%22%3A%22%22%2C%22mobiles%22%3A%5B%2215176989787%22%5D%2C%22source%22%3A%22pop%22%2C%22tempParameters%22%3A%5B%22480827%22%2C%2291%22%5D%2C%22templateId%22%3A2%7D 我们要阻止POST /api/sendMessage.htm且action=sendmsg的话,就比较复杂一些,我们判断uri满足条件后,还要进一步判断content中action=的内容: ...

2024年01月11日 · 2 分钟 · 226 字 · 八戒

用openssh的tunnel建立隧道翻墙

openssh是支持隧道的,所以可以在ssh中再套个隧道,直接用来翻墙,做法如下: 如上图,A机能ssh—->B机 A机的IP:172.16.8.106 B机的IP:172.16.8.108 A机建立tunnel后tun的ip:192.168.244.1 B机建立tunnel后tun的ip:192.168.244.2 首先编辑A和B的/etc/ssh/sshd_config,允许tunnel,缺省是不允许的,然后service sshd restart ,重启sshd PermitTunnel yes A和B安装linux下的tun软件,并启动一个tunnel设备 yum install tunctl tunctl -t tun5 -u root 在A(172.16.8.106)机器上生成key,并设置能无密码直接用证书登录B(172.16.8.108) ssh-keygen ssh-copy-id root@172.16.8.108 在A上执行命令,建立ssh tunnel: ssh -w 5:5 root@172.168.8.108 在A上执行 ifconfig tun5 192.168.244.1 pointopoint 192.168.244.2 netmask 255.255.255.0 在B上执行 ifconfig tun5 192.168.244.2 pointopoint 192.168.244.1 netmask 255.255.255.0 这样分别在A和B上ping 192.168.244.1和192.168.244.2,都能通就表示已经ok了。 优化一下,A和B两边都先把tun5启动以后,直接在A上一句话搞定,这个不会自动退出,所以得ctrl+z,然后bg放后台去;或者直接用screen挂住: ssh \ -o PermitLocalCommand=yes \ -o LocalCommand="ifconfig tun5 192.168.244.1 pointopoint 192.168.244.2 netmask 255.255.255.0" \ -o ServerAliveInterval=60 \ -w 5:5 root@172.16.8.108 \ 'ifconfig tun5 192.168.244.2 pointopoint 192.168.244.1 netmask 255.255.255.0; echo tun5 ready' 如果要用在翻墙的环境,那就得保持长链接了。假设A机器是在一个防火墙后,且被NAT了,那么就得先这样打通隧道: ...

2024年01月11日 · 1 分钟 · 151 字 · 八戒

Docker急速搭建运行ikev2 vpn来让iphone翻墙

这篇文章只适用于在自己的vps上运行: 步骤如下: 1、拉回来镜像,ikev2-vpn-server,话说这么多年过去了,依然适用,2016年到现在 docker pull gaomd/ikev2-vpn-server 2、启动服务端,注意–privileged参数,这个是必须的 docker run --privileged -d --name ikev2-vpn-server --restart=always -p 500:500/udp -p 4500:4500/udp gaomd/ikev2-vpn-server:0.3.0 搞定,只需要2步即可完成相对比较难搞的ikev2的安装. 3、生成iphone客户端配置文件 docker run -i -t --rm --volumes-from ikev2-vpn-server -e "HOST=vpn.rendoumi.com" gaomd/ikev2-vpn-server:0.3.0 generate-mobileconfig > ikev2-vpn-ihone6s.mobileconfig 注意:vpn.rendoumi.com替换成你自己对应的ip或者域名 然后你把这个配置文件下载,安装到MacOS或者iOS中,就可以愉快的玩耍了。

2024年01月11日 · 1 分钟 · 36 字 · 八戒

Linux下的策略路由

如果我们有两条上网线路可以使用,那么策略路由就是个好的选择了。 基本概念: 策略路由表(Policy routing tables): Linux 缺省有3个表, local (不能改也不能删), main, 和 default。添加路由的时候如果不指定,缺省是添加到main路由表里的。 策略路由规则(Policy routing rules): Linux 缺省也有三套路由规则,对应三个缺省路由表。 查看一下就可以看到三个表: # ip rule list 0: from all lookup local 32766: from all lookup main 32767: from all lookup default 查local表的路由规则: # ip route list table local local 10.10.0.1 dev tun0 proto kernel scope host src 10.10.0.1 broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1 local 192.168.122.1 dev virbr0 proto kernel scope host src 192.168.122.1 local 172.16.8.1 dev br0 proto kernel scope host src 172.16.8.1 broadcast 192.168.122.0 dev virbr0 proto kernel scope link src 192.168.122.1 broadcast 172.16.8.0 dev br0 proto kernel scope link src 172.16.8.1 broadcast 172.16.9.255 dev br0 proto kernel scope link src 172.16.8.1 broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1 broadcast 192.168.122.255 dev virbr0 proto kernel scope link src 192.168.122.1 local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1 local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1 使用策略路由的方法也很简单,1、定义一个路由表,2、定义路由规则,3、应用路由规则。 ...

2024年01月10日 · 2 分钟 · 227 字 · 八戒

服务器R920的一次急速故障处理

记录一下,2016年的5月5日这天的中午。 正在跟老刘、大亮、Good宁一起吃午饭,突然手机接到短信报警,说是主数据库Down了。出大事了!!! 这个是很常见的场景吧,如何在这种情况下处理服务器故障呢?基本吃饭的时候是不会携带笔记本的,所有的操作只能在手机上完成了。 如果是iphone手机,装上Termius;如果是android手机,装上Juicessh。这两个都是远程ssh软件(我们的服务器都是Linux,没有Windows)。另外公司是有openvpn的,必须通过vpn才能连接到IDC的服务器,所以也需要手机装上openvpn软件。 拨通vpn,用ssh连上服务器,然后快速运行实现编写好的ping脚本: cat 1.ping.sh #!/bin/sh ping 172.8.$1 这个脚本很奇怪吧,名字叫做1.ping.sh,是因为在手机上操作,一切都要迅速,Termius和Juicessh都是支持命令补全的{tab}键的,所以只要输入./1{tab} 1.1 就等于执行了ping 172.8.1.1,上面只输入了6个字符,而完整的ping命令则需要输入14个字符,这就是原因了。 ping一下不通,那就赶紧执行脚本,抓一下服务器idrac前面板的信息: cat 2.idrac.sh #!/bin/sh sshpass -p "xxxxxx" ssh -oStrictHostKeyChecking=no root@10.8.$1 racadm get System.LCD.CurrentDisplay 上面脚本用dell的radadm来抓取服务器idrac的前面板信息,idrac和网卡的网段只是前面第一段不同,网卡是172,idrac是10,这样很方便记忆。 得到结果: CPU1 has internal error. (IERR) 彻底完蛋!CPU出错了,想都不用想,硬件重启: cat 3.reboot.sh #!/bin/sh sshpass -p "xxxxxx" ssh -oStrictHostKeyChecking=no root@10.8.$1 racadm serveraction powercycle 从powercycle到Centos完全启动,系统开始记录/var/log/messages,所有时间共花费了7分钟。 注意:有可能在重启的过程中需要按一下F1的按钮继续,这样就需要打开vnc,按那一下子,或者提前在idrac里设置ErrPrompt disabled,不需要按F1就重启。 sshpass -p "xxxxxx" ssh -oStrictHostKeyChecking=no root@10.8.$1 racadm set BIOS.MiscSettings.ErrPrompt Disabled 总结:这起故障从接到报警到检查完毕只花费了3分钟,然后重启,7分钟机器系统启动,2分钟oracle备库恢复,3+7+2=12分钟。这真是个极限时间了。 运维能做到的也就这么快了吧。

2024年01月10日 · 1 分钟 · 62 字 · 八戒

KVM中网卡地址随机生成方法

用bash随机生成网卡地址: echo 52:54:$(dd if=/dev/urandom count=1 2>/dev/null | md5sum | sed 's/^\(..\)\(..\)\(..\)\(..\).*$/\1:\2:\3:\4/') 52:54:f6:65:52:39 另一种做法: openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/.$//'

2024年01月09日 · 1 分钟 · 21 字 · 八戒