mac os x 修改hostname
默认情况下,在终端中显示的hostname看起来不爽,这个可以修改的,修改方法为:
系统偏好设置 –> 共享 –> 电脑名称,在后面的输入框输入想要的名称即可。
默认情况下,在终端中显示的hostname看起来不爽,这个可以修改的,修改方法为:
系统偏好设置 –> 共享 –> 电脑名称,在后面的输入框输入想要的名称即可。
公司的产品一直运行在云服务器上,从而有幸接触过aws的ec2,盛大的云服务器,最近准备有使用阿里云的弹性计算(云服务器)。前两种云服务器在安全策略这块做的比较好,提供简单明了的配置界面,而且给了默认的安全策略,反观阿里云服务器,安全策略需要自己去配置,甚至centos机器上都没有预装iptables(起码我们申请两台上都没有),算好可以使用yum来安装,安装命令如下:
yum install -y iptables
iptables安装好后就可以来配置规则了。由于作为web服务器来使用,所以对外要开放 80 端口,另外肯定要通过ssh进行服务器管理,22 端口也要对外开放,当然最好是把ssh服务的默认端口改掉,在公网上会有很多人试图破解密码的,如果修改端口,记得要把该端口对外开发,否则连不上就悲剧了。下面提供配置规则的详细说明:
第一步:清空所有规则 当Chain INPUT (policy DROP)时执行/sbin/iptables -F后,你将和服务器断开连接 所有在清空所有规则前把policy DROP该为INPUT,防止悲剧发生,小心小心再小心 /sbin/iptables -P INPUT ACCEPT 清空所有规则 /sbin/iptables -F /sbin/iptables -X 计数器置0 /sbin/iptables -Z 第二步:设置规则 允许来自于lo接口的数据包,如果没有此规则,你将不能通过127.0.0.1访问本地服务,例如ping 127.0.0.1 /sbin/iptables -A INPUT -i lo -j ACCEPT 开放TCP协议22端口,以便能ssh,如果你是在有固定ip的场所,可以使用 -s 来限定客户端的ip /sbin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT 开放TCP协议80端口供web服务 /sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT 10.241.121.15是另外一台服务器的内网ip,由于之间有通信,接受所有来自10.241.121.15的TCP请求 /sbin/iptables -A INPUT -p tcp -s 10.241.121.15 -j ACCEPT 接受ping /sbin/iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT 这条规则参看:http://www.netingcn.com/iptables-localhost-not-access-internet.html /sbin/iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT 屏蔽上述规则以为的所有请求,不可缺少,否则防火墙没有任何过滤的功能 /sbin/iptables -P INPUT DROP 可以使用 iptables -L -n 查看规则是否生效
至此防火墙就算配置好,但是这是临时的,当重启iptables或重启机器,上述配置就会被清空,要想永久生效,还需要如下操作:
/etc/init.d/iptables save 或 service iptables save 执行上述命令可以在文件 /etc/sysconfig/iptables 中看到配置
以下提供一个干净的配置脚本:
/sbin/iptables -P INPUT ACCEPT /sbin/iptables -F /sbin/iptables -X /sbin/iptables -Z /sbin/iptables -A INPUT -i lo -j ACCEPT /sbin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT /sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT /sbin/iptables -A INPUT -p tcp -s 10.241.121.15 -j ACCEPT /sbin/iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT /sbin/iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT /sbin/iptables -P INPUT DROP
最后执行 service iptables save ,先确保ssh连接没有问题,防止规则错误,导致无法连上服务器,因为没有save,重启服务器规则都失效,否则就只有去机房才能修改规则了。也可以参考:ubuntu iptables 配置脚本来写一个脚本。
最后再次提醒,在清空规则之前一定要小心,确保Chain INPUT (policy ACCEPT)。
在一台centos和ubuntu的主机上使用配置了防火墙,就是添加几条简单规则。规则确实是生效了,因为很好的屏蔽掉外部的非法请求,但是本机却无法和外部通信,包括同一个局域网的其他机器和外部互联网上的机器,连最基本的ping都无法成功。在防火墙规则里面只是对INPUT做了限制,OUTPUT和FORWORD没有任何限制,这有点想不通,只好google一把,发现有人也是遇到这样的问题,解决的办法是添加如下规则:
/sbin/iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
果然添加后就能正常和外部通信了。
为何在没有添加上述规则就不能通信?因为建立一个通信连接需要服务器端和客户端交互才能完成。举例来说,从本机使用ssh客户端去登陆外部的ssh服务器,假设使用端口为12345,那么本就使用tcp端口号12345向服务器22端口发送一个请求,这个属于OUTPUT,由于OUTPUT规则没有任何限制,所以可以顺利到达服务器,服务器收到请求后,服务器会回应本机的tcp 12345端口,此时回应属于INPUT,如果INPUT中配置放行此规则,那么连接就无法完成,也即是本机无法和外部通信。外部的网络那么多,总不能逐条去配置INPUT规则,所以为了能访问外部网络,必须要配置上述规则。
关于state的更多解释可以参考:iptables中state模块的连接状态
centos中可以通过命令:
hostname 或 uname -n
来查看当前的主机名,如果没有设置的话会默认设置成localhost,具体原因可以看启动脚本:/etc/rc.d/rc.sysinit。
如果要修改主机名,可以把文件:/etc/sysconfig/network 中的HOSTNAME修改成自己希望的名字即可。
阿里云提供云服务器的硬盘由两块组成,一块是系统盘,一块是数据盘,默认数据盘是没有挂载的,如果要用到数据盘就需要自己手动挂载。通过命令fdisk -l,可以看到设备名为/dev/xvdb。另外在挂载前要对硬盘(/dev/xvdb)分区和格式化。分区使用命令fdisk,格式化命令为mkfs.ext3。
fdisk /dev/xvdb (输入n) Command (m for help): n Command action e extended p primary partition (1-4) (输入p) p (输入1) Partition number (1-4): 1 (输入p) Command (m for help): p (输入w) Command (m for help): w 此时在使用fdisk -l查看应该可以看到类似下面的结果 Disk /dev/xvdb: 246.9 GB, 246960619520 bytes 255 heads, 63 sectors/track, 30024 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/xvdb1 1 30024 241167748+ 83 Linux
上述执行完分区了,最好在执行格式化前重启一下机器。
格式化分区 mkfs.ext3 /dev/xvdb1 格式化根据硬盘的大小不同时间也不同,就等待吧。 假设把此硬盘挂在在 /data目录下,先创建data mkdir -pv /data 挂载硬盘 mount /dev/xvdb1 /data 写入分区表 echo "/dev/xvdb1 /data ext3 defaults 1 1" > /etc/fstab 也可以直接写入分区表后使用 mount -a 来使之生效。
以前使用的aws和盛大的云主机,直接用yum来安装gcc,一条命令就搞定,命令为:
yum -y install gcc gcc-c++
今天准备开始用阿里云,申请了一台centos 64位机器,使用上述命令安装gcc时出错,听说是阿里云处于安全考虑,生产环境不提供编译工具。想要安装不是不可能的,很简单,只有修改一下/etc/yum.conf文件即可,把文件中的
exclude=kernel*
行注释即可,注释符号为#。也可以使用如下命令来安装:
sed -i 's/^exclude/#exclude/' /etc/yum.conf && yum -y install gcc gcc-c++ && sed -i 's/^#exclude/exclude/' /etc/yum.conf