[内容] Linux 路由转发的设置

注意:

openSUSE & SLE 搭配容器环境或者虚拟机环境可能只能使用永久路由转发才会实现路由转发

正文:

内容一:临时路由转发的设置

1.1 临时开启路由转发

# echo 1 > /proc/sys/net/ipv4/ip_forward
# echo 1 > /proc/sys/net/ipv6/conf/all/forwarding

或者:

# sysctl -w net.ipv4.ip_forward=1
# sysctl -w net.ipv6.conf.all.forwarding=1
# sysctl -w net.ipv4.route.flush=1
# sysctl -w net.ipv6.route.flush=1

(注意:此方法对 openSUSE & SLE 无效)

1.2 临时停止路由转发

# echo 0 > /proc/sys/net/ipv4/ip_forward
# echo 0 > /proc/sys/net/ipv6/conf/all/forwarding

或者:

# sysctl -w net.ipv4.ip_forward=0
# sysctl -w net.ipv6.conf.all.forwarding=0
# sysctl -w net.ipv4.route.flush=1
# sysctl -w net.ipv6.route.flush=1

(注意:此方法对 openSUSE & SLE 无效)

内容二:永久路由转发的设置

2.1 方法一:修改 /etc/sysctl.conf 配置文件或者 /etc/sysctl.d/*.conf 配置文件

2.1.1 永久开启路由转发
2.1.1.1 修改 /etc/sysctl.conf 配置文件或者 /etc/sysctl.d/*.conf 配置文件
# vim /etc/sysctl.conf

或者:

# vim /etc/sysctl.d/*.conf

添加以下内容:

......
net.ipv4.ip_forward = 1
net.ipv4.conf.all.forwarding = 1
net.ipv6.conf.all.forwarding = 1
2.1.1.2 让路由转发的永久设置立刻生效
# sysctl -p /etc/sysctl.conf

或者:

# reboot

(注意:openSUSE & SLE 只会在 reboot 重启后生效)

2.1.2 永久关闭路由转发
2.1.2.1 修改 /etc/sysctl.conf 配置文件或者 /etc/sysctl.d/*.conf 配置文件
# vim /etc/sysctl.conf

或者:

# vim /etc/sysctl.d/*.conf

添加以下内容:

......
net.ipv4.ip_forward = 0
net.ipv6.conf.all.forwarding = 0
2.1.2.2 让路由转发的永久设置立刻生效
# sysctl -p /etc/sysctl.conf

或者:

# reboot

(注意:openSUSE & SLE 只会在 reboot 重启后生效)

2.2 方法二:yast

2.2.1 永久开启路由转发
# yast

System –> Network Settings –> Routing –> 开启 Enable IPv4 Forwarding –> 开启 Enable Ipv6 Forwarding –> OK

(注意:此方法只对 openSUSE & SLE 有效)

2.2.2 永久关闭路由转发
# yast

System –> Network Settings –> Routing –> 关闭 Enable IPv4 Forwarding –> 关闭 Enable Ipv6 Forwarding –> OK

(注意:此方法只对 openSUSE & SLE 有效)

内容三:显示当前路由转发的状态

# cat /proc/sys/net/ipv4/ip_forward


补充:
1) 如果返回的结果是 1 则代表已经生效
2) 如果返回的结果是 0 则代表没有生效

# cat /proc/sys/net/ipv6/conf/all/forwarding


补充:
1) 如果返回的结果是 1 则代表已经生效
2) 如果返回的结果是 0 则代表没有生效

(注意:此方法对 openSUSE & SLE 无效)

或者:

# sysctl net.ipv4.ip_forward


补充:
1) 如果返回的结果是 net.ipv4.ip_forward = 1 则代表已经生效
2) 如果返回的结果是 net.ipv4.ip_forward = 0 则代表没有生效

# sysctl net.ipv6.conf.all.forwarding


补充:
1) 如果返回的结果是 net.ipv6.conf.all.forwarding = 1 则代表已经生效
2) 如果返回的结果是 net.ipv6.conf.all.forwarding = 0 则代表没有生效

[内容] CentOS Linux & RHEL YUM 的设置 (网络代理)

内容一:设置所有 YUM 软件源网络代理的方法

# vim /etc/yum.conf

添加以下内容:

......
proxy=http://<user>:<password>@<IP address>:<port>/


注意:
1) 如果没有用户和密码就写成 proxy=http://<IP address>:<port>/
2) 如果密码中也有一个 “@” 符号,则需要把 “@” 符号转义一下,转义成 %40

或者:

# vim /etc/yum.conf

添加以下内容:

......
proxy=http://<IP address>:<port>
proxy_username=<user>
proxy_password=<password>

(注意:如果没有用户和密码就不写后面两行)

或者:

# vim /etc/rhsm/rhsm.conf

添加以下内容:

......
proxy=<IP address>
proxy_port=<port>
proxy_username=<user>
proxy_password=<password>

(注意:如果没有用户和密码就不写后面两行)

内容二:单独设置某个 YUM 软件源网络代理

# vim /etc/yum.repos.d/<yum source file name prefix>.repo

添加以下内容:

......
proxy=http://<user>:<password>@<IP address>:<port>/
......


注意:
1) 如果没有用户和密码就写成 proxy=http://<IP address>:<port>/
2) 如果密码中也有一个 “@” 符号,则需要把 “@” 符号转义一下,转义成 %40

或者:

# vim /etc/yum.repos.d/<yum source file name prefix>.repo

添加以下内容:

......
proxy=http://<IP address>:<port>
proxy_username=<user>
proxy_password=<password>

(注意:如果没有用户和密码就不写后面两行)

[工具] Shell 批量检测服务器 TCP 端口的联通状态 (telnet 版)

介绍

基本信息

作者:朱明宇
名称:批量检测服务器 TCP 端口的联通状态
作用:批量检测服务器 TCP 端口的联通状态,并将此服务器无法联通的端口存储到 $checklist 文件里

使用方法

1. 将此脚本和端口清单 $portlist 文件放在同一目录下
2. 端口清单 $portlist 每一个端口占用一行,格式为:<IP address corresponding to the port number to be connected>:<port number to connect>:<port functions>,并和此脚本放在同一目录下
3. 在此脚本的分割线内写入相应的内容
4. 给此脚本添加执行权限
5. 执行此脚本,并将要测试的服务器 IP 地址跟在脚本的后面,例:. <script> <server IP address 1> <server IP address 2> ……

脚本分割线里的变量

1. portlist=tcp_ports.txt #存放要测试的 TCP 端口的文件
2. checklist=tcp_ports_checklist.txt #存放测试结果的文件

注意

1. 此脚本执行前必须要先保证执行本脚本的用户能无密码 ssh 远程这些远程服务器
2. 此脚本会清空 $checklist
3. 执行此脚本前确保 telnet 命令已经安装
4. 执行此脚本可能有些慢

脚本

#!/bin/bash

####################### Separator ########################

portlist=tcp_ports.txt
checklist=tcp_ports_checklist.txt

####################### Separator ########################

echo  > $checklist
maxnum=`cat $portlist | wc -l`

for hosts in $*
do

        echo $hosts >> $checklist

        for i in `seq 1 $maxnum`
        do

                ips=`sed -n $[i]p $portlist | awk -F':' '{print $1}'`
                ports=`sed -n $[i]p $portlist | awk -F':' '{print $2}'`
                remarks=`sed -n $[i]p $portlist | awk -F':' '{print $3}'`

                ssh $hosts "(sleep 1;) | telnet $ips $ports 2>&1" | grep 'timed out' >> $checklist

                if [ $? == 0 ];then
                        echo "`sed -n $[i]p $portlist`" >> $checklist
                        echo >> $checklist
                fi

        done

        echo >> $checklist

done