2015年10月

无论你以前有没有使用 RAID 阵列的经验,以及是否完成了 此 RAID 系列 的所有教程,一旦你在 Linux 中熟悉了 mdadm --manage 命令的使用,管理软件 RAID 将不是很复杂的任务。

在 Linux 中使用 mdadm 管理 RAID 设备 - 第9部分

在 Linux 中使用 mdadm 管理 RAID 设备 - 第9部分

在本教程中,我们会再介绍此工具提供的功能,这样当你需要它,就可以派上用场。

RAID 测试方案

在本系列的最后一篇文章中,我们将使用一个简单的 RAID 1(镜像)阵列,它由两个 8GB 的磁盘(/dev/sdb 和 /dev/sdc)和一个备用设备(/dev/sdd)来演示,但在此使用的方法也适用于其他类型的配置。也就是说,放心去用吧,把这个页面添加到浏览器的书签,然后让我们开始吧。

了解 mdadm 的选项和使用方法

幸运的是,mdadm 有一个内建的 --help 参数来对每个主要的选项提供说明文档。

因此,让我们开始输入:

# mdadm --manage --help

就会使我们看到 mdadm --manage 能够执行哪些任务:

Manage RAID with mdadm Tool

使用 mdadm 工具来管理 RAID

正如我们在上面的图片看到,管理一个 RAID 阵列可以在任意时间执行以下任务:

  • (重新)将设备添加到阵列中
  • 把设备标记为故障
  • 从阵列中删除故障设备
  • 使用备用设备更换故障设备
  • 先创建部分阵列
  • 停止阵列
  • 标记阵列为 ro(只读)或 rw(读写)

使用 mdadm 工具管理 RAID 设备

需要注意的是,如果用户忽略 --manage 选项,mdadm 默认使用管理模式。请记住这一点,以避免出现最坏的情况。

上图中的高亮文本显示了管理 RAID 的基本语法:

# mdadm --manage RAID options devices

让我们来演示几个例子。

​例1:为 RAID 阵列添加设备

你通常会添加新设备来更换故障的设备,或者使用空闲的分区以便在出现故障时能及时替换:

# mdadm --manage /dev/md0 --add /dev/sdd1

Add Device to Raid Array

添加设备到 Raid 阵列

​例2:把一个 RAID 设备标记为故障并从阵列中移除

在从逻辑阵列中删除该设备前,这是强制性的步骤,然后才能从机器中取出它 - 注意顺序(如果弄错了这些步骤,最终可能会造成实际设备的损害):

# mdadm --manage /dev/md0 --fail /dev/sdb1

请注意在前面的例子中,知道如何添加备用设备来自动更换出现故障的磁盘。在此之后,恢复和重建 raid 数据 就开始了:

Recover and Rebuild Raid Data

恢复和重建 raid 数据

一旦设备已被手动标记为故障,你就可以安全地从阵列中删除它:

# mdadm --manage /dev/md0 --remove /dev/sdb1

例3:重新添加设备,来替代阵列中已经移除的设备

到现在为止,我们有一个工作的 RAID 1 阵列,它包含了2个活动的设备:/dev/sdc1 和 /dev/sdd1。现在让我们试试重新添加 /dev/sdb1 到/dev/md0:

# mdadm --manage /dev/md0 --re-add /dev/sdb1

我们会碰到一个错误:

# mdadm: --re-add for /dev/sdb1 to /dev/md0 is not possible

因为阵列中的磁盘已经达到了最大的数量。因此,我们有两个选择:a)将 /dev/sdb1 添加为备用的,如例1;或 b)从阵列中删除 /dev/sdd1 然后重新添加 /dev/sdb1。

我们选择选项 b),先停止阵列然后重新启动:

# mdadm --stop /dev/md0
# mdadm --assemble /dev/md0 /dev/sdb1 /dev/sdc1

如果上面的命令不能成功添加 /dev/sdb1 到阵列中,使用例1中的命令来完成。

mdadm 能检测到新添加的设备并将其作为备用设备,当添加完成后它会开始重建数据,它也被认为是 RAID 中的活动设备:

Raid Rebuild Status

重建 Raid 的状态

例4:使用特定磁盘更换 RAID 设备

在阵列中使用备用磁盘更换磁盘很简单:

# mdadm --manage /dev/md0 --replace /dev/sdb1 --with /dev/sdd1

Replace Raid Device

更换 Raid 设备

这会导致 --replace 指定的设备被标记为故障,而 --with指定的设备添加到 RAID 中来替代它:

Check Raid Rebuild Status

检查 Raid 重建状态

​例5:标记 RAID 阵列为 ro 或 rw

创建阵列后,你必须在它上面创建一个文件系统并将其挂载到一个目录下才能使用它。你可能不知道,RAID 也可以被设置为 ro,使其只读;或者设置为 rw,就可以同时写入了。

要标记该设备为 ro,首先需要将其卸载:

# umount /mnt/raid1
# mdadm --manage /dev/md0 --readonly
# mount /mnt/raid1
# touch /mnt/raid1/test1

Set Permissions on Raid Array

在 RAID 阵列上设置权限

要配置阵列允许写入操作需要使用 --readwrite 选项。请注意,在设置 rw 标志前,你需要先卸载设备并停止它:

# umount /mnt/raid1
# mdadm --manage /dev/md0 --stop
# mdadm --assemble /dev/md0 /dev/sdc1 /dev/sdd1
# mdadm --manage /dev/md0 --readwrite
# touch /mnt/raid1/test2

Allow Read Write Permission on Raid

配置 Raid 允许读写操作

总结

在本系列中,我们已经解释了如何建立一个在企业环境中使用的软件 RAID 阵列。如果你按照这些文章所提供的例子进行配置,在 Linux 中你会充分领会到软件 RAID 的价值。

如果你碰巧任何问题或有建议,请随时使用下面的方式与我们联系。


via: http://www.tecmint.com/manage-software-raid-devices-in-linux-with-mdadm/

作者:GABRIEL CÁNEPA 译者:strugglingyouth 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Terminator,它可以在一个窗口内打开多个终端。该项目的目标之一是为摆放终端提供一个有用的工具。它的灵感来自于类似 gnome-multi-term,quankonsole 等程序,这些程序关注于按网格摆放终端。 Terminator 0.98 带来了更完美的标签功能,更好的布局保存/恢复,改进了偏好用户界面和多处 bug 修复。

TERMINATOR 0.98 的更改和新特性

  • 添加了一个布局启动器,允许在不用布局之间简单切换(用 Alt + L 打开一个新的布局切换器);
  • 添加了一个新的手册(使用 F1 打开);
  • 保存的时候,布局现在会记住:

    • 最大化和全屏状态
    • 窗口标题
    • 激活的标签
    • 激活的终端
    • 每个终端的工作目录
  • 添加选项用于启用/停用 非同类 non-homogenous 标签和滚动箭头;
  • 添加快捷键用于按行/半页/一页向上/下滚动;
  • 添加使用 Ctrl+鼠标滚轮来放大/缩小,Shift+鼠标滚轮向上/下滚动页面;
  • 为下一个/上一个 配置文件 profile 添加快捷键
  • 改进自定义命令菜单的一致性
  • 新增快捷方式/代码来切换所有/标签分组;
  • 改进监视插件
  • 增加搜索栏切换;
  • 清理和重新组织 偏好 preferences 窗口,包括一个完整的全局便签更新
  • 添加选项用于设置 ActivityWatcher 插件静默时间
  • 其它一些改进和 bug 修复
  • 点击此处查看完整更新日志

安装 Terminator 0.98:

Terminator 0.98 有可用的 PPA,首先我们需要在 Ubuntu/Linux Mint 上添加库。在终端里运行下面的命令来安装 Terminator 0.98。

$ sudo add-apt-repository ppa:gnome-terminator/nightly
$ sudo apt-get update
$ sudo apt-get install terminator

如果你想要移除 Terminator,只需要在终端中运行下面的命令(可选)

$ sudo apt-get remove terminator

via: http://www.ewikitech.com/articles/linux/terminator-install-ubuntu-linux-mint/

作者:admin 译者:ictlyh 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

正如第一部分(“设置静态网络路由”)提到的,在这篇文章(RHCE 系列第二部分),我们首先介绍红帽企业版 Linux 7(RHEL)中包过滤和网络地址转换(NAT)的原理,然后再介绍在某些条件发生变化或者需要变动时设置运行时内核参数以改变运行时内核行为。

RHEL 中的网络包过滤

RHCE 第二部分:网络包过滤

RHEL 7 中的网络包过滤

当我们讨论数据包过滤的时候,我们指防火墙读取每个试图通过它的数据包的包头所进行的处理。然后,根据系统管理员之前定义的规则,通过采取所要求的动作过滤数据包。

正如你可能知道的,从 RHEL 7 开始,管理防火墙的默认服务是 firewalld。类似 iptables,它和 Linux 内核的 netfilter 模块交互以便检查和操作网络数据包。但不像 iptables,Firewalld 的更新可以立即生效,而不用中断活跃的连接 - 你甚至不需要重启服务。

Firewalld 的另一个优势是它允许我们定义基于预配置服务名称的规则(之后会详细介绍)。

在第一部分,我们用了下面的场景:

静态路由网络示意图

静态路由网络示意图

然而,你应该记得,由于还没有介绍包过滤,为了简化例子,我们停用了2号路由器的防火墙。现在让我们来看看如何使接收的数据包发送到目的地的特定服务或端口。

首先,让我们添加一条永久规则允许从 enp0s3 (192.168.0.19) 到 enp0s8 (10.0.0.18) 的入站流量:

# firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i enp0s3 -o enp0s8 -j ACCEPT

上面的命令会把规则保存到 /etc/firewalld/direct.xml 中:

# cat /etc/firewalld/direct.xml

在 CentOS 7 中检查 Firewalld 保存的规则

检查 Firewalld 保存的规则

然后启用规则使其立即生效:

# firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i enp0s3 -o enp0s8 -j ACCEPT

现在你可以从 RHEL 7 中通过 telnet 到 web 服务器并再次运行 tcpdump 监视两台机器之间的 TCP 流量,这次2号路由器已经启用了防火墙。

# telnet 10.0.0.20 80
# tcpdump -qnnvvv -i enp0s3 host 10.0.0.20

如果你想只允许从 192.168.0.18 到 web 服务器(80 号端口)的连接而阻塞 192.168.0.0/24 网络中的其它来源呢?

在 web 服务器的防火墙中添加以下规则:

# firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.18/24" service name="http" accept'
# firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.18/24" service name="http" accept' --permanent
# firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" drop'
# firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" drop' --permanent

现在你可以从 192.168.0.18 和 192.168.0.0/24 中的其它机器发送到 web 服务器的 HTTP 请求。第一种情况连接会成功完成,但第二种情况最终会超时。

任何下面的命令可以验证这个结果:

# telnet 10.0.0.20 80
# wget 10.0.0.20

我强烈建议你看看 Fedora Project Wiki 中的 Firewalld Rich Language 文档更详细地了解关于富规则的内容。

RHEL 7 中的网络地址转换(NAT)

网络地址转换(NAT)是为专用网络中的一组计算机(也可能是其中的一台)分配一个独立的公共 IP 地址的过程。这样,在内部网络中仍然可以用它们自己的私有 IP 地址来区别,但外部“看来”它们是一样的。

另外,网络地址转换使得内部网络中的计算机发送请求到外部资源(例如因特网),然后只有源系统能接收到对应的响应成为可能。

现在让我们考虑下面的场景:

RHEL 中的网络地址转换

网络地址转换

在2号路由器中,我们会把 enp0s3 接口移动到外部区域(external),enp0s8 到内部区域(external),伪装(masquerading)或者说 NAT 默认是启用的:

# firewall-cmd --list-all --zone=external
# firewall-cmd --change-interface=enp0s3 --zone=external
# firewall-cmd --change-interface=enp0s3 --zone=external --permanent
# firewall-cmd --change-interface=enp0s8 --zone=internal
# firewall-cmd --change-interface=enp0s8 --zone=internal --permanent

对于我们当前的设置,内部区域(internal) - 以及和它一起启用的任何东西都是默认区域:

# firewall-cmd --set-default-zone=internal

下一步,让我们重载防火墙规则并保持状态信息:

# firewall-cmd --reload

最后,在 web 服务器中添加2号路由器为默认网关:

# ip route add default via 10.0.0.18

现在你会发现在 web 服务器中你可以 ping 1号路由器和外部网站(例如 tecmint.com):

# ping -c 2 192.168.0.1
# ping -c 2 tecmint.com

验证网络路由

验证网络路由

在 RHEL 7 中设置内核运行时参数

在 Linux 中,允许你更改、启用以及停用内核运行时参数,RHEL 也不例外。当操作条件发生变化时,/proc/sys 接口(sysctl)允许你实时设置运行时参数改变系统行为,而不需太多麻烦。

为了实现这个目的,会用 shell 内建的 echo 写 /proc/sys/<category> 中的文件,其中 <category> 一般是以下目录中的一个:

  • dev: 连接到机器中的特定设备的参数。
  • fs: 文件系统配置(例如 quotas 和 inodes)。
  • kernel: 内核配置。
  • net: 网络配置。
  • vm: 内核的虚拟内存的使用。

要显示所有当前可用值的列表,运行

# sysctl -a | less

在第一部分中,我们通过以下命令改变了 net.ipv4.ip_forward 参数的值以允许 Linux 机器作为一个路由器。

# echo 1 > /proc/sys/net/ipv4/ip_forward

另一个你可能想要设置的运行时参数是 kernel.sysrq,它会启用你键盘上的 Sysrq 键,以使系统更好的运行一些底层功能,例如如果由于某些原因冻结了后重启系统:

# echo 1 > /proc/sys/kernel/sysrq

要显示特定参数的值,可以按照下面方式使用 sysctl

# sysctl <parameter.name>

例如,

# sysctl net.ipv4.ip_forward
# sysctl kernel.sysrq

有些参数,例如上面提到的某个,只需要一个值,而其它一些(例如 fs.inode-state)要求多个值:

在 Linux 中查看内核参数

查看内核参数

不管什么情况下,做任何更改之前你都需要阅读内核文档。

请注意系统重启后这些设置会丢失。要使这些更改永久生效,我们需要添加内容到 /etc/sysctl.d 目录的 .conf 文件,像下面这样:

# echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/10-forward.conf

(其中数字 10 表示相对同一个目录中其它文件的处理顺序)。

并用下面命令启用更改:

# sysctl -p /etc/sysctl.d/10-forward.conf

总结

在这篇指南中我们解释了基本的包过滤、网络地址变换和在运行的系统中设置内核运行时参数并使重启后能持久化。我希望这些信息能对你有用,如往常一样,我们期望收到你的回复!

别犹豫,在下面的表单中和我们分享你的疑问、评论和建议吧。


via: http://www.tecmint.com/perform-packet-filtering-network-address-translation-and-set-kernel-runtime-parameters-in-rhel/

作者:Gabriel Cánepa 译者:ictlyh 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

通常我关注的软件都是那些不用折腾并且易用的(对图形界面而言)。这就是我把 Go For It 待办事项程序归到 Linux 产能工具 列表的原因。今天,我要向你们展示另一款待办事项列表应用,和其它的待办事项软件有点不一样。

Mytodo 是个开源的待办事项列表程序,让你能够掌管一切。与其它类似的程序不同的是,Mytodo 更加面向 DIY 爱好者,因为它允许你配置服务器(如果你想在多台电脑上使用的话),除了主要的功能外还提供一个命令行界面。

它是用 Python 编写的,因此可以在所有 Linux 发行版以及其它操作系统,比如 Windows 上使用。

Mytodo 的一些主要特性:

  • 同时拥有图形界面和命令行界面
  • 配置你自己的服务器
  • 添加用户/密码
  • Python 编写
  • 可根据标签搜索
  • 待办事项可以在 Conky 显示

图形界面

命令行

Conky 显示着待办事项

你可以在下面的 Github 链接里找到源码和配置介绍:

尽管有些人可能不大喜欢命令行和配置部分的内容,但它自然有它的乐趣所在。我建议你自己尝试一下,看看 Mytodo 是否符合我们的需求和口味。

图片致谢: https://pixabay.com/en/to-do-list-task-list-notes-written-734587


via: http://itsfoss.com/mytodo-list-manager/

作者:Abhishek 译者:alim0x 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

RHCE(Red Hat Certified Engineer,红帽认证工程师)是红帽公司的一个认证,红帽向企业社区贡献开源操作系统和软件,同时它还给公司提供训练、支持和咨询服务。

RHCE 考试准备指南

RHCE 考试准备指南

这个 RHCE 是一个绩效考试(代号 EX300),面向那些拥有更多的技能、知识和能力的红帽企业版 Linux(RHEL)系统高级系统管理员。

重要: 获得RHCE 认证前需要先有 红帽认证系统管理员认证 Red Hat Certified System Administrator,RHCSA

以下是基于红帽企业版 Linux 7 考试的考试目标,我们会在该 RHCE 系列中分别介绍:

  • 第一部分:如何在 RHEL 7 中设置和测试静态路由
  • 第二部分:如何进行包过滤、网络地址转换和设置内核运行时参数
  • 第三部分:如何使用 Linux 工具集产生和发送系统活动报告
  • 第四部分:使用 Shell 脚本进行自动化系统维护
  • 第五部分:如何在 RHEL 7 中管理系统日志(配置、轮换和导入到数据库)
  • 第六部分:设置 Samba 服务器并配置 FirewallD 和 SELinux 支持客户端文件共享
  • 第七部分:设置 NFS 服务器及基于 Kerberos 认证的客户端
  • 第八部分:在 Apache 上使用网络安全服务(NSS)通过 TLS 提供 HTTPS 服务
  • 第九部分:如何使用无客户端配置来设置 Postfix 邮件服务器(SMTP)
  • 第十部分:在 RHEL/CentOS 7 中设置网络时间协议(NTP)服务器
  • 第十一部分:如何配置一个只缓存的 DNS 服务器

在你的国家查看考试费用和注册考试,可以到 RHCE 认证 网页。

在 RHCE 的第一和第二部分,我们会介绍一些基本的但典型的情形,也就是静态路由原理、包过滤和网络地址转换。

在 RHEL 中设置静态网络路由

RHCE 系列第一部分:设置和测试网络静态路由

请注意我们不会作深入的介绍,但以这种方式组织内容能帮助你开始第一步并继续后面的内容。

红帽企业版 Linux 7 中的静态路由

现代网络的一个奇迹就是有很多可用设备能将一组计算机连接起来,不管是在一个房间里少量的机器还是在一栋建筑物、城市、国家或者大洲之间的多台机器。

然而,为了能在任意情形下有效的实现这些,需要对网络包进行路由,或者换句话说,它们从源到目的地的路径需要按照某种规则。

静态路由是为网络包指定一个路由的过程,而不是使用网络设备提供的默认网关。除非另有指定静态路由,网络包会被导向默认网关;而静态路由则基于预定义标准所定义的其它路径,例如数据包目的地。

我们在该篇指南中会考虑以下场景。我们有一台 RHEL 7,连接到 1号路由器 [192.168.0.1] 以访问因特网以及 192.168.0.0/24 中的其它机器。

第二个路由器(2号路由器)有两个网卡:enp0s3 同样连接到路由器1号以访问互联网,及与 RHEL 7 和同一网络中的其它机器通讯,另外一个网卡(enp0s8)用于授权访问内部服务所在的 10.0.0.0/24 网络,例如 web 或数据库服务器。

该场景可以用下面的示意图表示:

静态路由网络示意图

静态路由网络示意图

在这篇文章中我们会集中介绍在 RHEL 7 中设置路由表,确保它能通过1号路由器访问因特网以及通过2号路由器访问内部网络。

在 RHEL 7 中,你可以通过命令行用 ip 命令 配置和显示设备和路由。这些更改能在运行的系统中及时生效,但由于重启后不会保存,我们会使用 /etc/sysconfig/network-scripts 目录下的 ifcfg-enp0sXroute-enp0sX 文件永久保存我们的配置。

首先,让我们打印出当前的路由表:

# ip route show

在 Linux 中检查路由表

检查当前路由表

从上面的输出中,我们可以得出以下结论:

  • 默认网关的 IP 是 192.168.0.1,可以通过网卡 enp0s3 访问。
  • 系统启动的时候,它启用了到 169.254.0.0/16 的 zeroconf 路由(只是在本例中)。也就是说,如果机器设置通过 DHCP 获取 IP 地址,但是由于某些原因失败了,它就会在上述网段中自动分配到一个地址。这一行的意思是,该路由会允许我们通过 enp0s3 和其它没有从 DHCP 服务器中成功获得 IP 地址的机器机器相连接。
  • 最后,但同样重要的是,我们也可以通过 IP 地址是 192.168.0.18 的 enp0s3 与 192.168.0.0/24 网络中的其它机器连接。

下面是这样的配置中你需要做的一些典型任务。除非另有说明,下面的任务都在2号路由器上进行。

确保正确安装了所有网卡:

# ip link show

如果有某块网卡停用了,启动它:

# ip link set dev enp0s8 up

分配 10.0.0.0/24 网络中的一个 IP 地址给它:

# ip addr add 10.0.0.17 dev enp0s8

噢!我们分配了一个错误的 IP 地址。我们需要删除之前分配的那个并添加正确的地址(10.0.0.18):

# ip addr del 10.0.0.17 dev enp0s8
# ip addr add 10.0.0.18 dev enp0s8

现在,请注意你只能添加一个通过网关到目标网络的路由,网关需要可以访问到。因为这个原因,我们需要在 192.168.0.0/24 范围中给 enp0s3 分配一个 IP 地址,这样我们的 RHEL 7 才能连接到它:

# ip addr add 192.168.0.19 dev enp0s3

最后,我们需要启用包转发:

# echo "1" > /proc/sys/net/ipv4/ip_forward

并停用/取消防火墙(从现在开始,直到下一篇文章中我们介绍了包过滤):

# systemctl stop firewalld
# systemctl disable firewalld

回到我们的 RHEL 7(192.168.0.18),让我们配置一个通过 192.168.0.19(2号路由器的 enp0s3)到 10.0.0.0/24 的路由:

# ip route add 10.0.0.0/24 via 192.168.0.19

之后,路由表看起来像下面这样:

# ip route show

显示网络路由表

确认网络路由表

同样,在你尝试连接的 10.0.0.0/24 网络的机器中添加对应的路由:

# ip route add 192.168.0.0/24 via 10.0.0.18

你可以使用 ping 测试基本连接:

在 RHEL 7 中运行:

# ping -c 4 10.0.0.20

10.0.0.20 是 10.0.0.0/24 网络中一个 web 服务器的 IP 地址。

在 web 服务器(10.0.0.20)中运行

# ping -c 192.168.0.18

192.168.0.18 也就是我们的 RHEL 7 机器的 IP 地址。

另外,我们还可以使用 tcpdump(需要通过 yum install tcpdump 安装)来检查我们 RHEL 7 和 10.0.0.20 中 web 服务器之间的 TCP 双向通信。

首先在第一台机器中启用日志:

# tcpdump -qnnvvv -i enp0s3 host 10.0.0.20

在同一个系统上的另一个终端,让我们通过 telnet 连接到 web 服务器的 80 号端口(假设 Apache 正在监听该端口;否则应在下面命令中使用正确的监听端口):

# telnet 10.0.0.20 80

tcpdump 日志看起来像下面这样:

检查服务器之间的网络连接

检查服务器之间的网络连接

通过查看我们 RHEL 7(192.168.0.18)和 web 服务器(10.0.0.20)之间的双向通信,可以看出已经正确地初始化了连接。

请注意你重启系统后会丢失这些更改。如果你想把它们永久保存下来,你需要在我们运行上面的命令的相同系统中编辑(如果不存在的话就创建)以下的文件。

尽管对于我们的测试例子不是严格要求,你需要知道 /etc/sysconfig/network 包含了一些系统范围的网络参数。一个典型的 /etc/sysconfig/network 看起来类似下面这样:

# Enable networking on this system?
NETWORKING=yes
# Hostname. Should match the value in /etc/hostname
HOSTNAME=yourhostnamehere
# Default gateway
GATEWAY=XXX.XXX.XXX.XXX
# Device used to connect to default gateway. Replace X with the appropriate number.
GATEWAYDEV=enp0sX

当需要为每个网卡设置特定的变量和值时(正如我们在2号路由器上面做的),你需要编辑 /etc/sysconfig/network-scripts/ifcfg-enp0s3/etc/sysconfig/network-scripts/ifcfg-enp0s8 文件。

下面是我们的例子,

TYPE=Ethernet
BOOTPROTO=static
IPADDR=192.168.0.19
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
NAME=enp0s3
ONBOOT=yes

以及

TYPE=Ethernet
BOOTPROTO=static
IPADDR=10.0.0.18
NETMASK=255.255.255.0
GATEWAY=10.0.0.1
NAME=enp0s8
ONBOOT=yes

其分别对应 enp0s3 和 enp0s8。

由于要为我们的客户端机器(192.168.0.18)进行路由,我们需要编辑 /etc/sysconfig/network-scripts/route-enp0s3

10.0.0.0/24 via 192.168.0.19 dev enp0s3

现在reboot你的系统,就可以在路由表中看到该路由规则。

总结

在这篇文章中我们介绍了红帽企业版 Linux 7 的静态路由。尽管场景可能不同,这里介绍的例子说明了所需的原理以及进行该任务的步骤。结束之前,我还建议你看一下 Linux 文档项目 The Linux Documentation Project 网站上的《 安全加固和优化 Linux Securing and Optimizing Linux 》的第四章,以了解这里介绍主题的更详细内容。

在下篇文章中我们会介绍数据包过滤和网络地址转换,结束 RHCE 验证需要的网络基本技巧。

如往常一样,我们期望听到你的回复,用下面的表格留下你的疑问、评论和建议吧。


via: http://www.tecmint.com/how-to-setup-and-configure-static-network-routing-in-rhel/

作者:Gabriel Cánepa 译者:ictlyh 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

IonCube Loaders是一个PHP中用于加解密的工具,并带有加速页面运行的功能。它也可以保护你的PHP代码不会查看和运行在未授权的计算机上。要使用ionCube编码、加密的PHP文件,需要在web服务器上安装一个叫ionCube Loader的文件,并需要让 PHP 可以访问到,很多 PHP 应用都在用它。它可以在运行时读取并执行编码过后的代码。PHP只需在‘php.ini’中添加一行就可以使用这个loader。

前提条件

在这篇文章中,我们将在Ubuntu14.04/15.04安装Ioncube Loaders ,以便它可以在所有PHP模式中使用。本教程的唯一要求就是你系统安装了LEMP,并有“php.ini”文件。

下载 IonCube Loader

根据你系统的架构是32位或者64位来下载最新的IonCube loader包。你可以用超级用户权限或者root用户运行下面的命令。

# wget http://downloads3.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz

download ioncube

下载完成后用下面的命令解压到“/usr/local/src/"。

# tar -zxvf ioncube_loaders_lin_x86-64.tar.gz -C /usr/local/src/

extracting archive

解压完成后我们就可以看到所有提供的模块。但是我们只需要我们所安装的PHP版本的对应模块。

要检查PHP版本,你可以运行下面的命令来找出相应的模块。

# php -v

ioncube modules

根据上面的命令我们知道我们安装的是PHP 5.6.4,因此我们需要拷贝合适的模块到PHP模块目录下。

首先我们在“/usr/local/”创建一个叫“ioncube”的目录并复制所需的ioncube loader到这里。

root@ubuntu-15:/usr/local/src/ioncube# mkdir /usr/local/ioncube
root@ubuntu-15:/usr/local/src/ioncube# cp ioncube_loader_lin_5.6.so ioncube_loader_lin_5.6_ts.so /usr/local/ioncube/

PHP 配置

我们要在位于"/etc/php5/cli/"文件夹下的"php.ini"中加入如下的配置行并重启web服务和php模块。

# vim /etc/php5/cli/php.ini

ioncube zend extension

此时我们安装的是nginx,因此我们用下面的命令来重启服务。

# service php5-fpm restart
# service nginx restart

web services

测试 IonCube Loader

要为我们的网站测试ioncube loader。用下面的内容创建一个"info.php"文件并放在网站的web目录下。

# vim /usr/share/nginx/html/info.php

加入phpinfo的脚本后重启web服务后用域名或者ip地址访问“info.php”。

你会在最下面的php模块信息里看到下面这段。

php info

在终端中运行下面的命令来验证php版本并显示PHP Loader已经启用了。

# php -v

php ioncube loader

上面的php版本输出明显地显示了IonCube loader已经成功与PHP集成了。

总结

教程的最后你已经了解了如何在安装有nginx的Ubuntu中安装和配置ionCube Loader,如果你正在使用其他的web服务,这与其他服务没有明显的差别。因此安装Loader是很简单的,并且在大多数服务器上的安装都不会有问题。然而并没有一个所谓的“标准PHP安装”,服务可以通过许多方式安装,并启用或者禁用功能。

如果你是在共享服务器上,那么确保运行了ioncube-loader-helper.php脚本,并点击链接来测试运行时安装。如果安装时你仍然遇到了问题,欢迎联系我们及给我们留下评论。


via: http://linoxide.com/ubuntu-how-to/setup-ioncube-loaders-ubuntu-14-04-15-04/

作者:Kashif Siddique 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出