Centos 6 配置 NFS 注意事项


Centos6默认已经安装了NFS所需软件包,只是没有启动。

通过修改/etc/exports文件,设置NFS共享文件目录,

/nfsdata 10.32.0.22(rw,root_squash,sync) 10.32.0.23(rw,root_squash,sync)

重新载入exportfs

# exportfs -arv

然后重启nfs服务。

# service nfs start

以上几步虽然可以启动nfs服务,但是却存在一些问题,第一是nfs防火墙配置,nfs有一部分端口默认是动态的,需要设置为固定端口号;其次是nfs server默认通过文件的uid和gid判断当前用户是否具备文件读写权限。如果有多台服务器共享同一个目录,那么需要确保多台服务器访问共享路径的用户uid和gid相同,否则将提示权限错误。

设置固定端口号

# vim /etc/sysconfig/nfs

解开以下行的注释

LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
RQUOTAD_PORT=875
STATD_PORT=662
STATD_OUTGOING_PORT=2020

重新启动nfs服务

# service nfs restart

配置防火墙

# vim /etc/sysconfig/iptables
-A INPUT -s 10.32.0.0/24 -m state --state NEW -p udp --dport 111 -j ACCEPT
-A INPUT -s 10.32.0.0/24 -m state --state NEW -p tcp --dport 111 -j ACCEPT
-A INPUT -s 10.32.0.0/24 -m state --state NEW -p tcp --dport 2049 -j ACCEPT
-A INPUT -s 10.32.0.0/24 -m state --state NEW -p tcp --dport 32803 -j ACCEPT
-A INPUT -s 10.32.0.0/24 -m state --state NEW -p udp --dport 32769 -j ACCEPT
-A INPUT -s 10.32.0.0/24 -m state --state NEW -p tcp --dport 892 -j ACCEPT
-A INPUT -s 10.32.0.0/24 -m state --state NEW -p udp --dport 892 -j ACCEPT
-A INPUT -s 10.32.0.0/24 -m state --state NEW -p tcp --dport 875 -j ACCEPT
-A INPUT -s 10.32.0.0/24 -m state --state NEW -p udp --dport 875 -j ACCEPT
-A INPUT -s 10.32.0.0/24 -m state --state NEW -p tcp --dport 662 -j ACCEPT
-A INPUT -s 10.32.0.0/24 -m state --state NEW -p udp --dport 662 -j ACCEPT

重启防火墙

# service iptables restart

客户端挂载

# mount -t nfs 10.32.0.10:/nfsdata /mnt/nfsdata

确认两台nfs客户端的uid和gid一致,例如:

# id java

如果id不一致可以通过usermod和groupmod命令修改id,id修改之后,用户关联的文件需要重新设定用户和用户组

Advertisements

通过SSH隧道安全连接vncserver


当前大部分Linux发行版中都能够安装vncserver,但是由于免费版的vncserver不支持加密协议连接,所以在internet上通过vnc管理服务器还是存在不安全的因素。

当然,可以购买vncserver企业版,下面的文章是介绍如何通过ssh协议在internet上建立加密通道。

首先需要配置vncserver监听localhost,配置文件如下:

VNCSERVERS="1:oracle"
VNCSERVERARGS[1]="-geometry 1366x768 -alwaysshared -localhost"

根据ssh客户端的不同,建立加密通道的方式也不同。

OpenSSH比较简单,一条命令即可搞定。

ssh -L 5901:127.0.0.1:5901 oracle@internet_ip

Putty客户端配置可以参考:Tunneling Tight-VNC over ssh using PuTTY截图。

最后连接的时候,在VNC Viewer中输入localhost:1即可连接internet_ip对应的5901端口。

需要注意的是,如果需要同时连接两个公网IP的5901地址,可以在创建ssh隧道的时候指定不同的本地端口。例如:

ssh -L 5901:127.0.0.1:5901 oracle@internet_ip1
ssh -L 5903:127.0.0.1:5901 oracle@internet_ip2

VNC Viewer中输入localhost:3将会连接internet_ip2的5901端口。

参考:How to use VNC over SSH tunnelling for secure remote graphical sessions

Ubuntu 10.10 Marverick 使用gogoc替代gw6c连接IPv6


在Marverick以前,如果需要使用IPV6,需要我们安装gw6c软件。

在Marverick中,这个软件的名称改变了,变成了gogoc,并且解决了之前不能在开机时作为服务正常启动的问题。

测试发现,gogoc启动,获得了IPv6的地址后,并不能正常打开http://ipv6.google.com,后来通过注册freenet6帐号使用验证登录的方式解决了这个问题。注册地址http://gogonet.gogo6.com/page/freenet6-registration 注册freenet6帐号之前需要先注册gogonet的账号。注册成功之后我们可以修改gogoc的配置了。

  1. 打开gogoc.conf文件sudo vim /etc/gogoc/gogoc.conf
  2. 使用freenet6帐号的userid和password设置userid,password属性
  3. 修改server,按照gogoc.conf配置文件README内容应该是修改成server=broker.freenet6.net。但是这个配置在启动的时候会提示“* Not starting gogoc – no server key”,正确的设置应该是server=anon-montreal.freenet6.net。
    通过阅读/etc/init.d/gogoc文件的内容可以发现,在启动gogoc的时候会读取/var/lib/gogoc/gogockeys.pub文件的内容,而这个文件是保存访问服务器的公钥的,由于不存在broker.freenet6.net服务器的公钥,所以会提示“* Not starting gogoc – no server key”
  4. 最后修改验证方式为auth_method=any
  5. sudo service gogoc start

现在可以看到http://ipv6.google.com的内容了。

PUTTY使用密钥认证方式登录Redhat服务器


工作中用到了Redhat服务器,每次使用PUTTY登录服务器的时候都需要输入一长串的用户名和密码,很麻烦。

所以决定配置使用密钥登录的方式。

  1. 首先在需要用PUTTY远程登录的账户下用Redhat生成公钥和私钥
    ssh-keygen -t rsa
    询问保存地点的时候,都默认即可
  2. 然后将生成好的公钥导入authorized_keys文件,默认情况下Redhat不会存在这个文件
    cat id_rsa.pub >> authorized_keys
    chmod 600 authorized_keys #修改文件权限为600
  3. 服务器配置好了之后,把私钥COPY到客户端,然后启动PUTTGEN,执行Conversions/Import key, Save private key,这样我们就能得到一个PUTTY能够识别的私钥了。
  4. 配置PUTTY加载该私钥。PUTTY Configuration/ Connection / SSH / Auth / Private key file for authentication 指定我们刚刚生成的.ppk文件即可。

解决服务器更换主机后,SSH RSA密钥校验失败的问题


最近有一台服务器出现内存校验问题,于是物理更换了服务器主机。在更换完成后,远程管理服务的一些脚本不能正常执行了,出现下面的错误信息。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
39:XX:XX:XX:2c:1b:8d:73:a6:26:01:25:c7:17:c6.
Please contact your system administrator.
Add correct host key in /home/leo/.ssh/known_hosts to get rid of this message.
Offending key in /home/leo/.ssh/known_hosts:4
RSA host key for 10.XX.XX.XX has changed and you have requested strict checking.
Host key verification failed.
lost connection

出现这个错误的原因是服务器更换了,SSH的RSA密钥也变更了,需要更新密钥信息。
按照提示信息,修改远程管理服务脚本所在服务器的known_hosts文件,即解决问题。
找到更换服务器IP地址对应的RSA信息,删除即可。

[leo@espc01 ~]$ vim .ssh/known_hosts

重新连接服务器,获取新的RSA密钥

[leo@espc01 ~]$ ssh leo@10.XX.XX.XX
The authenticity of host ’10.XX.XX.XX (10.XX.XX.XX)’ can’t be established.
RSA key fingerprint is 39:XX:XX:XX:78:2c:1b:8d:73:a6:26:01:25:c7:17:c6.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ’10.XX.XX.XX’ (RSA) to the list of known hosts.
leo@10.XX.XX.XX’s password:

连接成功后,新的RSA密钥信息会再次保存到~/.ssh/known_hosts文件中。今后脚本程序需要连接服务器的时候,不再出现错误信息。

Ubuntu安装vpnc连接Cisco VPN 3000


我的系统环境
ubuntu 10.04 64bit

安装vpnc,我也安装了network-manager-vpnc-gnome和network-manager-vpnc,但是在图形界面始终不能正确连接vpn,所以最终采用了命令行的方式。
leo@leo-laptop:~$ sudo apt-get install vpnc

安装完了之后,可以编写一个配置文件(myvpn),配置一些常用的选项,避免重复输入

root@leo-laptop:~# cat /etc/vpnc/myvpn
IPSec gateway <VPN服务器IP地址>
IPSec ID <CiscoVPN组名称>
IPSec secret <CiscoVPN组密码>
NAT Traversal Mode cisco-udp #这个选项一定要有,否则会出现no reponse from target错误
Xauth username <CiscoVPN用户名称>
DNSUpdate no #不更新DNS。我不需要使用域名访问公司服务器,并且公司VPN设置的DNS在我家里的网络不能访问,导致我连接VPN之后,不能正确访问Internet

启动VPN连接,通常情况下,需要启用–enable-1des选项,否则无法连接VPN服务器
leo@leo-laptop:~$ sudo vpnc –enable-1des myvpn
Enter password for CiscoVPN用户名称@VPN服务器IP地址:
VPNC started in background (pid: 6762)…

至此VPN连接成功。

Ubuntu中安装gw6c使用IPV6


gw6c全称Client to connect to IPv6 tunnel brokers,通过这个软件我们可以在IPv4的网络上创建一个tunnel来访问IPV6网络。
首先安装gw6c

sudo apt-get install gw6c

安装完成之后,把/usr/share/doc/gw6c/examples目录下的gw6c.conf.sample.gz文件解压缩出来,修改gw6c.conf.sample为gw6c.conf并移动到/etc/gw6c目录下。

最新的Ubuntu 10.04已经能够自动生成这个文件,并且符合下面的修改规则。所以不用再修改,直接使用sudo /etc/init.d/gw6c start启动即可。

然后修改文件中以下的内容即可。

if_tunnel_v6v4=sit1
if_tunnel_v6udpv4=tun0
if_tunnel_v4v6=sit0
template=linux

接下来通过sudo /etc/init.d/gw6c start来启动IPv6。如果可以在ifconfig的结果中看到tun0,证明IPV6已经连接成功。访问http://ipv6.google.com也能够看见网页了。
虽然已经有了启动脚本,但是很奇怪是,开机的时候并没有启动IPv6,没办法,现在/etc/rc.local中添加了/etc/init.d/gw6c start来启动IPv6,回头再调查这个问题了。
问题解决,gw6c服务启动顺序的问题,在我的机器上,经过测试,只有在设置启动顺序为99的时候才能正常启动,不知gw6依赖哪些服务。安装之后默认启动顺序是20。
修改启动顺序的方法为update-rc.d,首先删除,然后重新创建。命令如下:

leo@leo-laptop:~$ sudo update-rc.d -f gw6c remove
[sudo] password for leo:
Removing any system startup links for /etc/init.d/gw6c …
/etc/rc0.d/K20gw6c
/etc/rc1.d/K20gw6c
/etc/rc2.d/S20gw6c
/etc/rc3.d/S20gw6c
/etc/rc4.d/S20gw6c
/etc/rc5.d/S20gw6c
/etc/rc6.d/K20gw6c
leo@leo-laptop:~$ sudo update-rc.d gw6c defaults 99 20
Adding system startup for /etc/init.d/gw6c …
/etc/rc0.d/K20gw6c -> ../init.d/gw6c
/etc/rc1.d/K20gw6c -> ../init.d/gw6c
/etc/rc6.d/K20gw6c -> ../init.d/gw6c
/etc/rc2.d/S99gw6c -> ../init.d/gw6c
/etc/rc3.d/S99gw6c -> ../init.d/gw6c
/etc/rc4.d/S99gw6c -> ../init.d/gw6c
/etc/rc5.d/S99gw6c -> ../init.d/gw6c

默认情况下,我们访问的网址还是会使用IPV4,怎么才能够让网页优先使用IPV6呢?
第一种方法是通过修改/etc/hosts文件即可做到。IPv6hosts文件请参考:http://docs.google.com/View?docID=0ARhAbsvps1PlZGZrZG14bnRfNjFkOWNrOWZmcQ&revision=_latest&hgd=1

第二种方法:所有的IPv4网站,都可以以http://(URL).sixxs.org的形式进行访问。这种方式访问网页的时候,部分网站会识别访问者来自荷兰。