Linux常用命令持续更新

这里写目录标题

      • Linux yum
        • 修改yum源
      • 下载ifconfig命令
        • 配置静态IP
      • 查看网关命令
      • 修改主机名
      • 配置Java环境变量
      • 安装Maven
      • Linux基础知识
        • Linux虚拟网络技术
        • 开放指定端口

Linux yum

修改yum源

cd /etc/yum.repos.d/
# 备份
mv CentOS-Base.repo CentOS-Base.repo.bak

wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

yum makecache # 执行此命令出现如下错误时需跟换一下DNS

正在尝试其它镜像。
base/7/x86_64/filelists_db     FAILED                                          
http://mirrors.aliyuncs.com/centos/7/os/x86_64/repodata/d6d94c7d406fe7ad4902a97104b39a0d8299451832a97f31d71653ba982c955b-filelists.sqlite.bz2: [Errno 12] Timeout on http://mirrors.aliyuncs.com/centos/7/os/x86_64/repodata/d6d94c7d406fe7ad4902a97104b39a0d8299451832a97f31d71653ba982c955b-filelists.sqlite.bz2: (28, 'Connection timed out after 30001 milliseconds')
正在尝试其它镜像。

# 跟换换DNS方法
vi /etc/resolv.conf
nameserver 8.8.8.8
nameserver 223.5.5.5
nameserver 223.6.6.6

vi /etc/resolv.conf 
DNS1="8.8.8.8"
DNS2="223.5.5.5"
DNS3="223.6.6.6"
# 重启network
systemctl restart network

下载ifconfig命令

yum search ifconfig
# 搜到与ifconfig相关的包net-tools.x86_64
yum install net-tools.x86_64 -y

配置静态IP

cd /etc/sysconfig/network-scripts
vim ifcfg-ens33
# 修改
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static" # 配置IP静态
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="59c8f94a-fc40-45fe-b39b-a4faa358e99d"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="172.16.77.2" # 指定IP
NETMASK="255.255.255.0" #配置子网掩码
GATEWAY="172.16.77.1" #配置网关
DNS=8.8.8.8 # 域名解析系统
# 使配置生效
systemctl restart network

查看网关命令

# 有如下三种方式都可以查看网关
more /etc/sysconfig/network-scripts/ifcfg-eth0
ip route show
route -n

修改主机名

# 查看主机名
hostnamectl
# 设置新主机名
hostnamectl set-hostname 新名字

配置Java环境变量

# 修改 profile
vi /etc/profile
#JAVA_HOME
export JAVA_HOME=/app/middleware/jdk1.8.0_152 # 自己的Java安装路径
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

source /etc/profile # 使上述配置生效

安装Maven

mavan下载

# 打开/app/middleware/apache-maven-3.6.3/conf/settings.xml
# 配置本地仓库,以及maven远程仓库地址
<!--阿里云maven仓库-->
         <mirror>
                <id>nexus-aliyun</id>
                <mirrorOf>central</mirrorOf>
                <name>Nexus aliyun</name>
                <url>http://maven.aliyun.com/nexus/content/groups/public</url>
         </mirror>
         
 <!--本地仓库路径-->        
<localRepository>/app/data/repository-maven</localRepository>

# 配置环境变量
vi /etc/profile
#MAVEN_HOME
export MAVEN_HOME=/app/middleware/apache-maven-3.6.3
export PATH=$MAVEN_HOME/bin:$PATH

source /etc/profile # 使上述配置生效

Linux基础知识

Linux虚拟网络技术

  • Network Namespace介绍

对于每个Network Namespace来说,它会有自己独立的网卡、路由表、ARP表、iptables等和网络相关的资源,Network Namespace是Linux内核提供的功能,是实现网络虚拟化的重要功能,它能创建多个隔离的网络空间,它们有独自的网络栈信息,不管的虚拟机还是容器,运行的时候都仿佛运行在独立的网络中。

  • Network Namespace实战
# 查看所有Network Namespace
ip netns list

# 创建一个Network Namespace 名为ns2
ip netns add ns2

# 删除一个Network Namespace 名为ns2
ip netns del ns2

# 查看名为ns1 Network Namespace 的网卡信息 
ip netns exec ns2 ip addr
# 新创建的Network Namespace默认有一块回环网卡,默认是没有启动的
####################################################################
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
####################################################################

# 尝试去ping ns2 没有启动的lo网络会失败
ip netns exec ns2 ping 127.0.0.1
####################################################################
connect: 网络不可达
####################################################################

# 将新创建的Network Namespace的回环网卡lo启动
ip netns exec ns2 ip link set lo up
# 回环网卡lo启动后成功ping通
ip netns exec ns2 ping 127.0.0.1

    
  • veth pair

veth pair 全称是 Virtual Ethernet Pair,是一个成对的端口,所有从这对端口一 端进入的数据包都将从另一端出来,反之也是一样。 引入veth pair是为了在不同的 Network Namespace 直接进行通信,利用它可以直接将两个 Network Namespace 连接起来。

# 创建 veth pair
sudo ip link add type veth
# 给veth pair重命名
ip link add vethfoo type veth peer name vethbar
ip link add v2 type veth peer name v3
  • 实现Network Namespace之间的通信
# veth0加入到Network Namespace ns0
ip link set veth0 netns ns0
# veth1加入到Network Namespace ns1
ip link set veth1 netns ns1
# 启动veth0
ip netns exec ns0 ip link set veth0 up
# 给veth0设置ip
ip netns exec ns0 ip addr add 10.0.1.1/24 dev veth0
# 启动veth1
ip netns exec ns1 ip link set veth1 up
# 给veth1设置ip
ip netns exec ns1 ip addr add 10.0.1.2/24 dev veth1
# 至此veth pair成功实现了两个不同Network Namespace之间的网络通信
  • 网桥

veth pair 打破了Network Namespace的通信限制,实现了不同Network Namespace之间的通信,但是veth pair只能实现两个Network Namespace的通信,因为一个一个设备只能属于一个Network Namespace。

如果我们想实现多个网络接口之间的通信,就可以使用网桥(Bridge)技术。

简单来说,网桥就是把一台机器上的若干个网络接口“连接”起来。其结果是,其中一个网口收到的报文会被复制给其他网口并发送出去。以使得网口之间的报文能够互相转发。

补充:veth设备属于可转移设备,而很多其它设备(如lo、vxlan、ppp、bridge等)是不可以转移的

  • 网桥实战
# 创建网桥
brctl addbr br0 
# 删除网桥
brctl delbr br0
# 让eth0 成为br0 的一个端口 eth0为一块网卡 
brctl addif br0 eth0  
# 让eth1 成为br0 的一个端口 eth1为一块网卡
brctl addif br0 eth1
# 让eth2 成为br0 的一个端口  eth2为一块网卡
brctl addif br0 eth2

# 补充虚拟网卡可以通过 veth pair 方式生成

开放指定端口

firewall-cmd --permanent --zone=public --add-port=9876/tcp
firewall-cmd --permanent --zone=public --add-port=10911/tcp
# 立即生效
firewall-cmd --reload

你可能感兴趣的:(Linux,linux,网关,yum)