CA证书与DHCP服务
1、创建私有CA并进行证书申请。
1 :创建 CA 私钥
$ openssl genrsa -des3 -out cakey 4096
2 :生成 CA 的自签名证书,其实 CA 证书就是一个自签名证书
$ openssl req -new -x509 -days 365 -key cakey -outcacrt
3 :生成需要颁发证书的私钥
$ openssl genrsa -des3 -out serverkey 4096
4 :生成要颁发证书的证书签名请求
Ps:证书签名请求当中的 Common Name 必须区别于 CA 的证书里面的 Common
Name
$ openssl req -new -key serverkey -out servercsr
5 :创建一个ext文件,内容如下
keyUsage = nonRepudiation, digitalSignature,keyEncipherment
extendedKeyUsage = serverAuth, clientAuth
subjectAltName=@SubjectAlternativeName
[ SubjectAlternativeName ]
DNS1=abccom
DNS2=abccom
6 :用 2 创建的 CA 证书给 4 生成的 签名请求 进行签名
$ openssl x509 -req -days 365 -extfile httpext -inservercsr -CA cacrt -CAkey cakey -set_serial 01 -out servercrt
7 :最终会得到一下几个文件
cacrt: 这个是ca证书,客户端信任该证书意味着会信任该证书颁发出去的所有证书
cakey: ca证书的密钥
serverkey: 服务器密钥,需要配置的
servercsr: 证书签名请求,通常是交给CA机构,这里我们就自己解决了
servercrt: 服务器证书,需要配置的
2、总结ssh常用参数、用法
ssh命令是ssh客户端,允许实现对远程系统经验证地加密安全访问。ssh客户端配置文件是:/etc/ssh/ssh_config
ssh
命令配合的常见选项:
-p port
:远程服务器监听的端口
ssh 19216818 -p 2222
-b
指定连接的源IP
ssh 19216818 -p 2222 -b 192168188
-v
调试模式
ssh 19216818 -p 2222 -v
-C
压缩方式
-X
支持x11转发支持将远程linux主机上的图形工具在当前设备使用
-t
强制伪tty分配,如:ssh -t remoteserver1 ssh -t remoteserver2 ssh
remoteserver3
-o option
如:-oStrictHostKeyChecking=no
-i
指定私钥文件路径,实现基于key验证,默认使用文件:~/ssh/id_dsa,
~/ssh/id_ecdsa,/ssh/id_ed25519
,/ssh/id_rsa等
3、总结sshd服务常用参数。服务器端的配置文件: /etc/ssh/sshd_config
常用参数:
Port #
端口号
ListenAddress ipLoginGraceTime 2m #
宽限期
PermitRootLogin yes #
默认ubuntu不允许root远程ssh登录
StrictModes yes #
检查ssh/文件的所有者,权限等
MaxAuthTries 6
MaxSessions 10 #
同一个连接最大会话
PubkeyAuthentication yes #
基于key验证
PermitEmptyPasswords no #
空密码连接
PasswordAuthentication yes #
基于用户名和密码连接
GatewayPorts no
ClientAliveInterval 10 #
单位:秒
ClientAliveCountMax 3 #
默认3
UseDNS yes #
提高速度可改为no
GSSAPIAuthentication yes #
提高速度可改为no
MaxStartups #
未认证连接最大值,默认值10
Banner /path/file
以下可以限制可登录用户的办法:
AllowUsers user1 user2 user3
DenyUsers
AllowGroups
ssh
服务的最佳实践建议使用非默认端口禁止使用protocol version 1
限制可登录用户设定空闲会话超时时长利用防火墙设置ssh访问策略仅监听特定的IP地址基于口令认证时,使用强密码策略,比如:tr -dc A-Za-z0-9_ < /dev/urandom| head -c 12|
xargs
使用基于密钥的认证禁止使用空密码禁止root用户直接登录限制ssh的访问频度和并发在线数经常分析日志
4、搭建dhcp服务,实现ip地址申请分发
一、配置DHCP服务器
1、安装DHCP服务器软件
[root@centos01 ~]# mount /dev/cdrom /mnt/<!--挂载操作系统光盘-->
mount: /dev/sr0 写保护,将以只读方式挂载
[root@centos01 ~]# rm -rf /etc/yumreposd/CentOS-<!--删除系统自动yum源-->
[root@centos01 ~]# yum -y install dhcp<!--安装DHCP服务 -->
2、建立主配置文件dhcpdconf
[root@centos01 ~]# vim /etc/dhcp/dhcpdconf<!--编辑主配置文件-->
:r /usr/share/doc/dhcp-425/dhcpdconfexample<!--读取默认配置文件-->
ddns-update-style none;<!--禁用DNS动态更新-->
option domain-name "benetcom";<!--指定默认搜索域-->
option domain-name-servers 202106010, 202106020;
<!--指定DNS服务器地址-->
default-lease-time 600;<!--默认租约时间-->
max-lease-time 7200;<!--最大租约时间-->
1)/etc/dhcp/dhcpdconf文件的配置构成
在主配置文件dhcpdconf中,可以使用声明、参数、选项这三种类型的配置,各自的作用和表现形式如下所述:
声明:用来描述dhcpd服务器中对网络布局的划分,是网络设置的逻辑范围。常见的声明是subnet、host,其中subnet声明用来约束一个网段。host声明用来约束一台特定主机。
参数:由配置关键字和对应的值组成,总是以“;”(分号)结束,一般位于指定的声明范围之内,用来设置所在范围的运行特性(如默认租约时间、最大租约时间等)。
选项:由“option”引导,后面跟具体的配置关键字和对应的值,也是以“;”结束,用于指定分配给客户机的各种地址参数(如默认网关地址、子网掩码、DNS服务器地址等)。
2)确定dhcpd服务的全局配置
为了使配置文件的结构更加清晰、全局配置通常会放在配置文件dhcodconf的开头部分,可以是配置参数,也可以是配置选项。常用的全局配置参数和选项如下所述:
ddns-update-style:动态DNS更新模式。用来设置与DHCP服务相关联的DNS数据动态更新模式。在实际的DHCP应用中很少用到该参数。将值设为“none”即可。
default-lease-time:默认租约时间。单位为秒,表示客户端可以从DHCP服务器租用某个IP地址的默认时间。
max-lease-time:最大租约时间。单位为秒,表示允许DHCP客户端请求的最大租约时间,当客户端未请求明确的租约时间时,服务器将采用默认租约时间。
option domain-name:默认搜索区域。未客户机指定解析主机名时的默认搜索域,该配置选项将体现在客户机的/etc/resolvconf配置文件中,如“search benetcom”。
option domain-name-servers:DNS服务器地址。为客户端指定解析域名时使用的DNS服务器地址,该配置选项同样将体现在客户机的/etc/resolvconf配置文件中,如“nameserver 202106020”。需要设置多个DNS服务器地址时,以逗号进行分隔。
3)确定subnet网段声明
一台DHCP服务器可以为多个网段提供服务,因此subnet网段声明必须有而且可以有多个。例如,若要DHCP服务器为1921681000/24网段提供服务,用于自动分配的IP地址范围为192168100。100~192168100200,为客户机指定默认网关地址为192168100254,则ke可以修改dhcpdconf配置文件,参考以下内容调整subnet网段声明:
[root@centos01 ~]# vim /etc/dhcp/dhcpdconf<!--编辑主配置文件-->
subnet 1921681000 netmask 2552552550 {<!--声明网段地址-->
range 192168100100 192168100200;<!--设置地址池,可以有多个-->
option routers 192168100254;<!--指定默认网关地址-->
}
4)确定host主机声明
host声明用于设置单个主机的网络属性,通常用于为网络打印机或个别服务器分配固定的IP地址(保留地址),这些主机的共同特点是要求每次获取的IP地址相同,以确保服务的稳定性。
host声明通过host关键字指定需要使用保留地址的客户机名称,并使用“hardware ethernet”参数指定该主机的MAC地址,使用“fixed-address”参数指定保留给该主机的IP地址。例如,若要为打印机prtsvr(MAC地址为00:0C:29:0D:BA:6B)分配固定的IP地址192168100101,可以修改dhcpdconf配置文件,参考以下内容在网段声明内添加host主机声明。
C:\Users\Administrator>getmac
物理地址 传输名称
=================== =======================================================
00-0C-29-0D-BA-6B \Device\Tcpip_{92E3F48B-40F0-4A0D-9604-6386AAAE3233}<!--客户端获取MAC地址-->
[root@centos01 ~]# vim /etc/dhcp/dhcpdconf
host win7 {
hardware ethernet 00:0C:29:0D:BA:6B;<!--客户机的MAC地址-->
fixed-address 192168100101;<!--分配给客户机的IP地址-->
}
3、启动dhcpd服务
在启动dhcpd服务之前,应确认提供DHCP服务器的网络接口具有静态指定的固定IP地址,并且至少有一个网络接口的IP地址与DHCP服务器中的一个subnet网段相对应,否则将无法正常启动dhcpd服务。例如,DHCP服务器的IP地址为19216810010,用于为网段192。1681000/24内的其他客户机提供自动分配地址服务。
安装dhcp软件包以后,对应的系统服务脚本位于/usr/lib/systemd/system/dhcpdservice,可以使用systemd服务进行控制。例如,执行以下操作可以启动dhcpd服务,并检查UDP的67端口是否在监听,以确认DHCP服务器是否正常。
[root@centos01 ~]# systemctl start dhcpd<!--启动dhcp服务-->
[root@centos01 ~]# systemctl enable dhcpd<!--设置服务开机自动启动-->
[root@centos01 ~]# netstat -anptu | grep 67<!--监听DHCP服务端口号-->
udp 0 0 0000:67 0000: 2102/dhcpd
udp 0 0 0000:67 0000: 1064/dnsmasq
注意:需要关闭、重启dhcpd服务时,只要将上述操作命令中的“start”改为“stop”或“restart”即可。
二、使用DHCP客户端
1、windows客户端
ipconfig /renew<!--可以为主机重新获取新的IP地址-->
ipconfig /release<!--释放IP地址-->
tracert IP地址<!--可以测试从当前主机到目的主机经过的网络节点-->
route print<!--查看路由表-->
2、Linux客户端
在Linux客户机中可以设置使用DHCP的方式获取地址。只需要编辑对应网卡的配置文件,修改或添加“BOOTPROTO=dhcp”配置行,并重新加载配置文件或者重新启动network服务即可。例如,执行以下操作可修改网卡配置文件,并重新加载配置以通过DHCP方式自动获取地址:
[root@centos02 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
NAME=ens32
DEVICE=ens32
ONBOOT=yes
[root@centos02 ~]# ifdown ens32 ; ifup ens32
[root@centos02 ~]# systemctl restart network
在Linux客户机中,还可以使用dhclient工具来测试DHCP服务器。若直接执行“dhclient”命令,则dhclient将尝试为除回环接口lo以外的所有网络接口通过DHCP方式申请新的地址,然后自动转入后台继续运行。当然,测试时可以指定一个具体的网络接口,并结合“-d”选项使其在前台运行,测试完毕后按Ctrl+C组合键终止。例如,执行“dhclient -d ens32”命令后,可以为网卡ens32自动获取新的IP地址,并显示获取过程。
[root@centos02 ~]# dhclient -d ens32
Internet Systems Consortium DHCP Client 425
Copyright 2004-2013 Internet Systems Consortium
All rights reserved
For info, please visit https://wwwiscorg/software/dhcp/
Listening on LPF/ens32/00:0c:29:97:5c:9f
Sending on LPF/ens32/00:0c:29:97:5c:9f
Sending on Socket/fallback
DHCPDISCOVER on ens32 to 255255255255 port 67 interval 4 (xid=0x5364e17f)
DHCPDISCOVER on ens32 to 255255255255 port 67 interval 6 (xid=0x5364e17f)
DHCPDISCOVER on ens32 to 255255255255 port 67 interval 14 (xid=0x5364e17f)<!--DHCP发现-->
DHCPREQUEST on ens32 to 255255255255 port 67 (xid=0x5364e17f)<!--DHCP请求-->
DHCPOFFER from 19216810010<!--DHCP提供-->
DHCPACK from 19216810010 (xid=0x5364e17f)<!--DHCP确认-->
bound to 192168100102 -- renewal in 229 seconds
<!--按Ctrl+C组合键终止-->
客户端需要通过dhclient命令释放获取的IP租约时,可以结合“-r”选项。例如,执行以下的“dhclient -r ens32”将会释放之前为网卡ens32获取的IP租约。此时再通过执行“ifconfig ens32”命令就看不到分配的IP地址了。
[root@centos02 ~]# dhclient -r ens32
1、使用的镜像
sudo docker pull networkboot/dhcpd
2、测试的局域网拓扑结构如下:h为 DHCP服务器,ovs交换机s1、s2、s3各连着一台等待分配ip地址的主机。
3、h DHCP服务器通过一对暴露于root namespace 的veth pair相连,具体操作如下
31、生成交换机s1、s2、s3
sudo ovs-vsctl add-br s1sudo ovs-vsctl add-br s2sudo ovs-vsctl add-br s3
32、创建veth pair 即 v1-v2
sudo ip link add v1 type veth peer name v2
33、up
sudo ip link set dev v1 upsudo ip link set dev v2 up
34、给v1配置ip及子网掩码
sudo ifconfig v1 1921681254 netmask 2552552550
35、生成DHCP服务器,监听v1 ,挂载本地data文件夹,data里面中只有dhcpdconf文件
sudo docker run -it \--rm --net host \--init \--name=dhcpServer1 \-v ~/emxbook/docker-dhcpd/data:/data \networkboot/dhcpd v1
dhcpdconf
subnet 19216810 netmask 2552552550 {option routers 19216811;option subnet-mask 2552552550;option domain-name "emxlocal";option domain-name-servers 8888;range 19216812 1921681100;}
35、将v2连接到交换机上
sudo ovs-vsctl add-port s1 v2
36、交换机s1、s2、s3彼此相连
sudo ovs-vsctl add-port s1 s1p1sudo ovs-vsctl set Interface s1p1 type=patchsudo ovs-vsctl set Interface s1p1 options:peer=s2p1sudo ovs-vsctl add-port s2 s2p1sudo ovs-vsctl set Interface s2p1 type=patchsudo ovs-vsctl set Interface s2p1 options:peer=s1p1sudo ovs-vsctl add-port s1 s1p2sudo ovs-vsctl set Interface s1p2 type=patchsudo ovs-vsctl set Interface s1p2 options:peer=s3p1sudo ovs-vsctl add-port s3 s3p1sudo ovs-vsctl set Interface s3p1 type=patchsudo ovs-vsctl set Interface s3p1 options:peer=s1p2
37、创建主机h1、h2、h3,并将其连接到交换机上,其中ubunut:5是添加了基本net-tools、isc-dhcp-client,创建的时候记得使用 --cap-add=NET_ADMIN
sudo docker run -itd --network=none --name=h1 --cap-add=NET_ADMIN ubuntu:5sudo docker run -itd --network=none --name=h2 --cap-add=NET_ADMIN ubuntu:5sudo docker run -itd --network=none --name=h3 --cap-add=NET_ADMIN ubuntu:5sudo ovs-docker add-port s1 eth1 h1sudo ovs-docker add-port s2 eth1 h2sudo ovs-docker add-port s3 eth1 h3
38、可以使用floot-light控制交换机s1、s2、s3交换机(选择)
sudo ovs-vsctl set-controller s1 tcp:127001:6653sudo ovs-vsctl set-controller s2 tcp:127001:6653sudo ovs-vsctl set-controller s3 tcp:127001:6653
4、使用dhclient eht1 向DHCP服务器申请
41、申请ip之前
42、申请ip(服务器端界面)
43申请ip之后,h1(192168138):
同理,h2(192168139):
h3(192168140):
5、测试
51、h1 ping h2(192168139):
52、h2 ping h3(192168140):
6、最后拓扑结构图,ip分配之后的拓扑结构:DHCP服务器(19216816)、h1(192168138)、h2(192168139)、h3(192168140)
7、代码汇总参考
sudo ovs-vsctl add-br s1sudo ovs-vsctl add-br s2sudo ovs-vsctl add-br s3sudo ip link add v1 type veth peer name v2sudo ip link set dev v1 upsudo ip link set dev v2 upsudo ifconfig v1 19216816 netmask 2552552550sudo docker run -it \--rm --net host \--init \--name=dhcpServer \-v ~/emxbook/docker-dhcpd/data:/data \networkboot/dhcpd v1sudo ovs-vsctl add-port s1 v2sudo ovs-vsctl add-port s1 s1p1sudo ovs-vsctl set Interface s1p1 type=patchsudo ovs-vsctl set Interface s1p1 options:peer=s2p1sudo ovs-vsctl add-port s2 s2p1sudo ovs-vsctl set Interface s2p1 type=patchsudo ovs-vsctl set Interface s2p1 options:peer=s1p1sudo ovs-vsctl add-port s1 s1p2sudo ovs-vsctl set Interface s1p2 type=patchsudo ovs-vsctl set Interface s1p2 options:peer=s3p1sudo ovs-vsctl add-port s3 s3p1sudo ovs-vsctl set Interface s3p1 type=patchsudo ovs-vsctl set Interface s3p1 options:peer=s1p2sudo docker run -itd --network=none --name=h1 --cap-add=NET_ADMIN ubuntu:5sudo docker run -itd --network=none --name=h2 --cap-add=NET_ADMIN ubuntu:5sudo docker run -itd --network=none --name=h3 --cap-add=NET_ADMIN ubuntu:5sudo ovs-docker add-port s1 eth1 h1sudo ovs-docker add-port s2 eth1 h2sudo ovs-docker add-port s3 eth1 h3sudo ovs-vsctl set-controller s1 tcp:127001:6653sudo ovs-vsctl set-controller s2 tcp:127001:6653sudo ovs-vsctl set-controller s3 tcp:127001:6653
一共有五步,具体如下:
1、具体安装环境:VMware 1004 build-2249910和Ubuntu 1604 x86_64;
2、在VMware中,配置网络环境:VMware在默认安装完成之后,会创建三个虚拟的网络环境:VMnet0、VMnet1和VMnet8。其类型分别为:桥接网络,Host-only和NAT。其中,NAT表示VMWware内安装的Ubuntu将会在一个子网中,VMware通过网络地址转换,通过物理机的IP上网。这里,我们选择NAT方式,来实现Ubuntu的静态IP地址配置。打开VMware,在顶部依次选择:编辑 > 虚拟网路编辑器,打开虚拟网路编辑器;
3、首先,去掉VMnet0和VMnet1,只保留VMnet8。然后,去掉如下图中的“使用本地DHCP服务奖IP地址分配给虚拟机”;
4、选择“NAT设置”,打开NAT设置面板;
5、最后,在VMWare的虚拟机管理界面,选择Ubuntu的“编辑虚拟机设置”,打开Ubuntu这个虚拟的设置界面。选择网络适配器,然后确定网络连接选中的是“自定义”中的VMnet8(NAT模式);
图解步骤如下:
1、
2、
3、
4、
ubuntu 虚拟机上网方式及相关配置
一 Nat方式(虚拟机和主机不在同一网段)
NAT:Network address translate,是一种将内部私有地址转化成公网地址的技术,NAT技术应用在internet网关和路由器上,比如1921680123这个地址要访问internet,它的数据包就要通过一个网关或者路由器,而网关或者路由器拥有一个能访问internet的ip地址,这样的网关和路由器就要在收发数据包时,对数据包的IP协议层数据进行更改(即 NAT),以使私有网段的主机能够顺利访问internet。此技术解决了IP地址稀缺的问题。
VMWare的NAT上网也是同样的道理,它在主机和虚拟机之间用软件伪造出一块网卡,这块网卡和虚拟机的ip处于一个地址段。同时,在这块网卡和主机的网络接口之间进行NAT。虚拟机发出的每一块数据包都会经过虚拟网卡,然后NAT,然后由主机的接口发出。
Nat方式的虚拟网卡为VMnet8
宿主机上设置
主机IP GW DNS
VMnet8
IP(设置网段后自动获取)
GW必须和ip 属于同一网段
DNS:和主机DNS 相同
虚拟机
IP:虚拟机ip和虚拟网卡ip同一网段
GW:和虚拟网卡gw 相同
DNS:相同的DNS
二 桥接 Bridge(虚拟机和主机ip同一网段)
Bridge 桥”就是一个主机,这个机器拥有两块网卡,分别处于两个局域网中,同时在”桥”上,运行着程序,让局域网A中的所有数据包原封不动的流入B,反之亦然。这样,局域网A和B就无缝的在链路层连接起来了,在桥接时,VMWare网卡和物理网卡应该处于同一IP网段 当然要保证两个局域网没有冲突的IP
VMWare 的桥也是同样的道理,只不过,本来作为硬件的一块网卡,现在由VMWare软件虚拟了!当采用桥接时,VMWare会虚拟一块网卡和真正的物理网卡就行桥接,这样,发到物理网卡的所有数据包就到了VMWare虚拟机,而由VMWare发出的数据包也会通过桥从物理网卡的那端发出。
所以,如果物理网卡可以上网,那么桥接的软网卡也没有问题了,这就是桥接上网的原理了,相当于把虚拟机看做局域网里面的一台物理机即可。
三 主机方式
主机模式下,真实环境和虚拟环境是隔离开的;在这种模式下,所有的虚拟系统是可以相互通信的,但虚拟系统和真实的网络是被隔离开。(虚拟系统和宿主机器系统是可以相互通信的,相当于这两台机器通过双绞线互连。),但此种方式下,没有地址转换服务,所以,虚拟机只能到主机访问,安全系数很高。
网络连接的知识补充
1NAT Network Address Translation 网络地址转换
a静态地址:将私有地址与公网地址一对一明确转化。(1对1)
b动态地址转换:NAT转换器拥有一个公网地址池,可以动态的分配一个未使用的公网地址给内部地址进行通信,形成一个暂时的映射关系。(多对多)
c端口地址转换:将多个私有地址转换成对应的一个公网地址。(多对1)
2DHCP
DHCP Dynamic Host Configuration Protocol,动态主机配置协议
是一个局域网的网络协议,给内部网络或网络供应商自动分配IP地址,DHCP有三个端口UDP67,68作为Server 和Client 的服务端口。546用于DHCPv6,是做双击热备份使用。
只保留VMnet8,网络又是可行的,由此考虑到可能是网卡优先级的配置问题。
需求
首先来说一下我们的需求:
1、一台装有Ubuntu2004 server系统的电脑
2、一台Ubuntu server系统的电脑(该电脑上Ubuntu系统版本任意)
3、装有Ubuntu2004 server系统的电脑上有一个无线网卡,一个有限网卡,我们想让该电脑的无线网卡连接外网,使用网线连接到另一台电脑,使得另一台电脑可以上网。
Ubuntu2004 server系统的配置
1、配置网络信息
从网上搜集了很长时间,很多都是修改/etc/network/interfaces文件,这种方式在Ubuntu17之后就不适用了,之后的系统都使用netplan来管理网络,因此我们要修改的是/etc/netplan目录下以yaml为后缀的文件,以下内容为我系统中的配置
network: renderer: networkd # ethernets: # 有线配置 enx00e04c00f946: #指定需配置网络接口的名称 dhcp4: true #是否打开 IPv4 的 dhcp。 addresses: [192168101/24] #定义网络接口的静态 IP 地址 wifis: #无线配置 wlan0: #无线网络接口名称 dhcp4: true #是否打开IPV4的dhcp access-points: "TP-LINK": #连接的无线的名称 password: "123123123" #连接的无线的密码 version: 2
我们在配置网络之前可以使用ifconfig命令来查看一下网卡名称
配置完成后,我们可以使用以下命令来进行启动
netplan apply
2、开启路由转发功能
Linux系统本身就有IP数据包转发的功能,但是默认情况下是关闭的,你需要通过修改配置文件来启动这个功能,修改/etc/sysctlconf文件,将netipv4ip_forward=1前面的注释去掉。
3、添加路由表使得两个网卡之间可以通信
依次在命令行中执行以下命令
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE iptables -A FORWARD -i wlan0 -o enx00e04c00f946 -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -i wlan0 -o enx00e04c00f946 -j ACCEPT
接下来就是要保存这些规则
iptables-save > /etc/iptablesrules
另一台电脑网络配置
相比较而言,这一台电脑的网络配置就简单多了,把有线网卡也设置成和上一台电脑有限网卡处于同一网络的静态ip就可以,如何设置静态ip在第二部分已经讲了,这里就不多做介绍了。
结果
这样我们就可以进行访问了哟!
我们ping一下无线所在的网关,可以看到,已经通了
我又尝试ping了一下wwwbaiducom
但是没有任何反应,这种情况一般是未配置dns,使用8888或114114114114或其他。
我们只需要在/etc/resolveconf文件中加入下面这句话即可,加入dns
nameserver 8888
优化
这样配置Ubuntu2004网络信息后,路由表规则虽然保存下来,但是每次开机后需要自己手动重启,我想让它开机时自动启动,就进行了如下操作
1、创建rclocal文件
由于Ubuntu2004的/etc路径下并没有rclocal文件,我们需要自己新建该文件,并把想要启动的命令放入该文件中。
2、建立 rc-localservice 文件
Ubuntu2004 不能像1604 那样可以直接使用 /etc/rclocal 文件,需要设置service
nano /etc/systemd/system/rc-localservice
以下为我的rc-localservice文件中的内容
[Unit] Description=/etc/rclocal Compatibility ConditionFileIsExecutable=/etc/rclocal After=networktarget [Service] Type=forking ExecStart=/etc/rclocal start TimeoutSec=0 RemainAfterExit=yes GuessMainPID=no [Install] WantedBy=multi-usertarget
3、给rclocal加权限
chmod +x /etc/rclocal
4、启用服务
systemctl enable rc-local
5、启用服务并查询服务状态
systemctl start rc-localservice systemctl status rc-localservice
在启用服务的时候出现以下错误:
● rc-localservice - /etc/rclocal Compatibility Loaded: loaded (/etc/systemd/system/rc-localservice; enabled; vendor preset: enabled) Drop-In: /usr/lib/systemd/system/rc-localserviced └─debianconf Active: failed (Result: exit-code) since Sun 2020-05-24 09:36:11 UTC; 14s ago Process: 2611 ExecStart=/etc/rclocal start (code=exited, status=203/EXEC) May 24 09:36:11 scope systemd[1]: Starting /etc/rclocal Compatibility May 24 09:36:11 scope systemd[2611]: rc-localservice: Failed to execute command: Permission denied May 24 09:36:11 scope systemd[2611]: rc-localservice: Failed at step EXEC spawning /etc/rclocal: Permission denied May 24 09:36:11 scope systemd[1]: rc-localservice: Control process exited, code=exited, status=203/EXEC May 24 09:36:11 scope systemd[1]: rc-localservice: Failed with result 'exit-code' May 24 09:36:11 scope systemd[1]: Failed to start /etc/rclocal Compatibility
经过查资料而知,是有shell的问题造成的。有些命令需要在bash shell中运行,而不能在dash中运行。
从Ubuntu 610开始,默认使用dash(theDebian Almquist Shell)而不是bash(the GNUBourne-Again Shell) 但Login Shell还是bash。
因此,在rclocal文件开头加上下面这句话即可
#!/bin/bash
但是如果你的机子有特殊用处,比如作为服务器,需要IP地址信息,亦或者像我一样,作为一个云计算的节点,其IP都是在配置文件里配置好的,如果每次重启系统都要跑过去修改下配置文件里的IP,那简直是不可取的做法,因此为虚拟机设置固定IP上网非常的有必要!
设置固定IP的方法很多,大家都知道虚拟机上网有三种模式:bridged、host-only和NAT,其中NAT模式对应VMnet8虚拟网络,host-only模式对应VMnet1虚拟网络,bridged模式对应 VMnet0虚拟网络,都是由VMware虚拟机自动配置而生成的,不需要用户自行设置。VMnet8和VMnet1提供DHCP服务,VMnet0虚拟 网络则不提供。
由于NAT的方式最简单,因此下面是NAT设置的具体方法。
测试环境:
虚拟机版本:VMware Workstation 10
Ubuntu版本:Ubuntu 1210/1304
1 设置虚拟机上网方式为NAT
2 配置VMnet8虚拟网络(Virtual Network Editor)
因为NAT对应的是VMnet8虚拟网络,打开Vmware自带的虚拟网络编辑工具Virtual Network Editor,配置如下:
其中子网IP根据自己情况设置,比如我想设置固定IP地址为1921681151,那么这里的子网IP就填19216810,另外记得取消DHCP选项服务。
3 进入到Ubuntu系统中配置网络
主要配置下面三个方面的内容:
(1)修改文件/etc/network/interfaces,这里是IP、网关、掩码等的一些配置;
(2)修改文件/etc/resolvconf,这个文件保存DNS的有关信息;
(3)解决resolvconf被重写问题;
(4)重启虚拟机网络
下面是具体配置方法:
(1)修改文件/etc/network/interfaces
命令:
复制代码
代码如下:
sudo vi /etc/network/interfaces
或
sudo gedit /etc/network/interfaces
我的配置如下:
复制代码
代码如下:
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
auto eth0/ppiface eth0 inet static
address 1921681151
netmask 2552552550
gateway 19216812
其中网关gateway要与Virtual Network Editor中“NAT Settings”中的一致,一般好像都为192168xx2。
(2)修改文件/etc/resolvconf
命令:
复制代码
代码如下:
sudo vi /etc/resolvconf
或
sudo gedit /etc/resolvconf[code]
我的配置如下:
[code]nameserver 20238641
当然这里是因人而异了,加上你自己的DNS服务器即可,我的是校内DNS。
(3)解决resolvconf被重写问题
第二步中你虽然配置了DNS,但是每次重启虚拟机或重启网络后/etc/resolvconf文件就会被重写,也就是又恢复原样了,你以前的配置就不存在了,每次都要手动配置是极不可取的,所以这步是必须的,首先我们要搞清楚resolvconf被重写的原因和机制,这在不同Ubuntu版本下有所差异。那怎么知道呢?一般resolvconf文件一开头就告诉你了。
解决该问题其实有两种办法,不怕麻烦的想理解原理的请参照方法一(与版本有关),怕麻烦的不想折腾的自觉转到方法二(与版本无关)。
方法一:与版本有关
a)Ubuntu 1210
打开/etc/resolvconf后可看到开头的一句话:
复制代码
代码如下:
# Generated by NetworkManager
说明resolvconf这个文件是由NetworkManager这个程序生成的(对应的是network-manager服务),那么解决办法也就来了:我们关掉network-manager即可,命令如下:
复制代码
代码如下:
sudo service network-manager stop
或者
sudo /etc/initd/network-manager stop
但是这种方法不是一劳永逸的,因为每次重启系统后还是会自动启动这个服务,因此我们需要完全禁止network-manager启动即可。
编辑network manager的配置文件/etc/init/network-managerconf:
复制代码
代码如下:
sudo vi /etc/init/network-managerconf
注释掉其中的start on部分即可:
复制代码
代码如下:
# network-manager - network connection manager
#
# The Network Manager daemon manages the system's network connections,
# automatically switching between the best available/ppdescription "network connection manager"/pp#start on (local-filesystems
# and started dbus
# and static-network-up)
stop on stopping dbus/ppexpect fork
respawn/ppscript
# set $LANG so that messages appearing on the GUI will be translated See LP: 875017
if [ -r /etc/default/locale ]; then
/etc/default/locale
export LANG LANGUAGE LC_MESSAGES LC_ALL
fi
b)Ubuntu 1304
不知道Ubuntu从哪个版本开始不是由NetworkManager生成resolvconf的了,至少在1304下是这样的,因为resolvconf开头写着这样一句话:
复制代码
代码如下:
# Dynamic resolvconf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
说是由resolvconf生成,NetworkManager仍然存在,因为它是DHCP上网不可缺少的,但此时禁止NetworkManager启动已经不管用了,因为resolvconf已经不归它管了,我们试着看看resolvconf与resolvconf有啥关系,查看:
复制代码
代码如下:
hadoop@Master:~$ ll /etc/resolvconf
lrwxrwxrwx 1 root root 29 9月 11 2013 /etc/resolvconf - /run/resolvconf/resolvconf
说明/etc/resolvconf 其实只是一个link,它实际上指向的是 /run/resolvconf/resolvconf,这也就解释了为什么每次重启都会被重写的原因,你改的只是个link,对原文件没有影响,而每次重启这个link还得加载原文件的内容,所以对link的修改无效。
解决方法就是:修改真实的原文件,如下:
复制代码
代码如下:
sudo vi /etc/resolvconf/resolvconfd/head
发现这个文件与/etc/resolvconf文件一模一样,这就对了,在里面加入你自己的nameserver即可,这样每次重启就不会被重写了。
PS:网上也有人说修改/etc/resolvconf/resolvconfd/base这个文件也行,我没有亲自测试,感兴趣的可用自己测试。
说了这么多,各版本的差异看来挺麻烦的,不知道最新的版本或以后的版本会不会又变样了,其实这里有个更简单的与版本无关的方式能够防止resolvconf文件被重写,那就是方法二。
方法二:与版本无关
前面提到固定IP的上网方式主要是修改/etc/network/interfaces这个文件,配置IP、网关什么的,其实这里面还有个参数可以配置,那就是DNS了,对应的参数名为dns-nameservers,这里设置的优先级比resolvconf高,也就是网络会从这里读取DNS配置,如果没配置才去看resolvconf里面的设置,因此在这里面配置DNS更简单。
复制代码
代码如下:
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
auto eth0/ppiface eth0 inet static
address 1921681151
netmask 2552552550
gateway 19216812
dns-nameservers 20238641
(4)重启虚拟机网络
配置完成后,重启网络即可,也有好几种方法:
复制代码
代码如下:
sudo service networking restart
或者
sudo /etc/initd/networking restart
也可以重启网卡:
复制代码
代码如下:
sudo ifconfig eth0 down
sudo ifconfig eth0 up
重启网卡对别的网卡无影响,更推荐一些。
赶紧ping下wwwbaiducom吧,应该可以上网了。
PS:当然也可以通过图形界面network manager进行配置,但个人感觉这种方式最好,因此推荐!
开启config配置
etc/initd/odhcpd会启动服务器进程
odhcpd进程里面回去读/etc/config/dhcp uci的值
uci的全部设置值在网址: https://openwrtorg/docs/techref/odhcpd
下可以看到全部的,这边介绍一部分用到的。
odhcpd的参数基本不会变,如下:
dhcp的参数如下:
host的参数如下:
dhcpv6在server模式支持全部的模式:stateless, stateful and PD-server mode
win电脑连接路由器后,电脑会向路由器的odhcpd服务器申请地址,路由器的地址为 2001:db8:0:1::254/128 ,分配给win的地址为 2001:db8:0:f00::3c3/128
在win上面可以通过ipconfig/all查看
win电脑后面就会定期的发送Renew,服务器返回Relay
这时候,odhcp6c可以获取到两个地址,一个dhcpv6分配的地址,一个通过RA协议自己算出的地址。
路由器上面ra为server,dhcpv6为disabled
ubuntu上面只开启isc-dhcp服务器,关闭radvd服务器
对于路由器的中继模式,按照教程的设置一直没有成功,不知道是不是理解有问题。
https://wwwv2excom/t/176040
https://devarchiveopenwrtorg/ticket/16923
也可以用ubus命令获取
https://openwrtorg/zh/docs/guide-user/base-system/dhcp_configuration
http://wwwtest-ipv6com/
https://githubcom/openwrt/odhcpd
https://openwrtorg/docs/guide-user/network/ipv6/start
0条评论