Linux 网络配置
腾讯云改网卡名
以centos为例,分两步
- 禁用云初始化:添加如下内容到 /etc/cloud/cloud.cfg
network:
config:
disabled: true
- 修改改名文件:/etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="52:54:00:7e:a8:6c", NAME="eth0"
把其中的 NAME 值改为需要的值。
改名后网络地址需要手动配置
ifconfig eth0 172.16.16.14 netmask 255.255.240.0
route add default gw 172.16.16.1
NetworkConfiguration
online doc
Red Hat 11. Network Interfaces
debian wiki NetworkConfiguration
modify net interface
system type: /etc/os-release
网卡信息路径
You can list interfaces with: ls /sys/class/net
contos NetworkInterfaceNames
生成改名规则的脚本文件: usr/sbin/nic_init.sh
调用改名规则的脚本文件:/usr/lib/systemd/system/nic.service
call /usr/hardwares/bin/nic_init.sh
网口配置
配置文件位置
在一个计算机系统中,可以有多个网络接口,分别对应多个网络接口配置文件,
- centos 在/etc/sysconfig/network-scripts/目录下,
- 旧版ubuntu是 /etc/network/interfaces 下面,新版在 /etc/netplan/
依次编号的文件是ifcfg-eth0,ifcfg-eth1,...,ifcfg-eth。
HWADDR
“HWADDR=, 其中 以AA:BB:CC:DD:EE:FF形式的以太网设备du的硬件地址.在有多个网卡设备的机器上,这个字段是非常有用的,它保证设备接口被分配了正确的设备名,
而不考虑每个网卡模块被配置的加载顺序.这个字段不能和MACADDR一起使用.”
“就能知道HWADDR和MACADDR的不同之处了,前者是用来根据HWADDR绑定ethX名称的,后者才是真正用来修改MAC地址的”
netstat
netstat -nr命令会显示路由表的内容
网关为0.0.0.0的网络通常是直连到网络设备上的。因为到自己的直连设备上是不需要网关的,所以0.0.0.0的网关地址是正常的。目的地址是0.0.0.0的路由是你的缺省网关。
route
route -n
查看路由表
以下面的分析为例:
默认网关为:172.16.200.1
所在子网为:172.16.200.0
[root@VM-200-100-centos ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.16.200.1 0.0.0.0 UG 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
172.16.200.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
netstat -nr 的Flags:代表的意义如下:
o U (route is up):该路由是启动的;
o H (target is a host):目标是一部主机 (IP) 而非网域;
o G (use gateway):需要透过外部的主机 (gateway) 来转递封包;
o R (reinstate route for dynamic routing):使用动态路由时,恢复路由资讯的旗标;
o D (dynamically installed by daemon or redirect):已经由服务或转 port 功能设定为动态路由
o M (modified from routing daemon or redirect):路由已经被修改了;
o ! (reject route):这个路由将不会被接受(用来抵挡不安全的网域!)
保存网卡ip信息
#!/bin/bash
net_interface="ge0"
for i in $(seq 5 -1 1)
do
var=`ifconfig $net_interface|grep "inet\>"|awk '{print $2}'`
if [ -n $var ]; then
echo "get ip:$var";break
fi
echo -en "$i";sleep 1
done
ip_pattern="[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}"
ip_cfg=/etc/sinfor/cloud_ip.ini
cat /dev/null >$ip_cfg
set -x
net_arr=`ls /sys/class/net`
net_arr=(${net_arr[@]/lo})
net_arr=(${net_arr[@]/vpntun})
for net in ${net_arr[@]}
do
ether=`ifconfig $net|grep "ether\>"|awk '{ print $2 }'`
rwini -f $ip_cfg -s $net -k mac -v $ether -w
ip=`ifconfig $net|grep "inet\>"|awk '{ print $2 }'`
rwini -f $ip_cfg -s $net -k ip -v $ip -w
net_mask=`ifconfig $net|grep "inet\>"|awk '{ print $4 }'`
rwini -f $ip_cfg -s $net -k net_mask -v $net_mask -w
gateway=`curl -s http://metadata.tencentyun.com/2017-09-19/meta-data/network/interfaces/macs/$ether/local-ipv4s/$ip/gateway |grep $ip_pattern`
rwini -f $ip_cfg -s $net -k gateway -v $gateway -w
done
udev_dhcp
#!/bin/bash
#rename net interface
net_arr=`ls /sys/class/net`
net_arr=(${net_arr[@]/lo})
net_arr=(${net_arr[@]/vpntun})
for net in ${net_arr[@]}
do
ifconfig $net down
udevadm test -a add /sys/class/net/$net 2>/var/udeverr.log 1>/var/udevstd.log
done
# obtain ip by dhcp
dhclient -v
ifconfig ge0
ifconfig ge1
bash /usr/sbin/saveipinfo.sh
route add default gw 172.17.2.1