一、搭建一个nfs服务器,客户端可以从服务器的/share目录上传并下载文件
在 NFS 服务器上,首先需要安装 NFS 服务。以 Ubuntu 为例,可以使用以下命令:
sudo apt update sudo apt install nfs-kernel-server
创建一个共享目录,例如 /share
:
sudo mkdir -p /share
然后设置适当的权限:
sudo chown nobody:nogroup /share sudo chmod 777 /share
编辑 NFS 配置文件 /etc/exports
,添加共享目录的配置。打开文件:
sudo nano /etc/exports
在文件末尾添加以下内容:
/share 192.168.1.100(rw,sync,no_subtree_check)
保存并关闭文件后,运行以下命令以导出共享目录:
sudo exportfs -a
确保 NFS 服务正在运行:
sudo systemctl restart nfs-kernel-server sudo systemctl enable nfs-kernel-server
如果服务器上启用了防火墙,需要允许 NFS 服务的相关端口。以 UFW 为例:
sudo ufw allow from 192.168.1.100 to any port nfs
在客户端上,首先安装 NFS 客户端:
sudo apt update sudo apt install nfs-common
然后创建一个挂载点,例如 /mnt/nfs_share
:
sudo mkdir -p /mnt/nfs_share
使用以下命令挂载 NFS 共享:
sudo mount 192.168.1.10:/share /mnt/nfs_share
现在可以在 /mnt/nfs_share
目录中上传和下载文件了。可以使用以下命令进行测试:
# 上传文件 echo "Hello NFS" > /mnt/nfs_share/testfile.txt # 下载文件 cat /mnt/nfs_share/testfile.txt
如果希望在客户端重启后自动挂载 NFS 共享,可以编辑 /etc/fstab
文件,添加以下行:
192.168.1.10:/share /mnt/nfs_share nfs defaults 0 0
二、搭建一个web服务器,客户端通过www.haha.com访问该网站时能够看到内容是this is haha
首先,更新软件包列表并安装 Nginx:
sudo apt update sudo apt install nginx
安装完成后,启动 Nginx 服务并设置为开机自启:
sudo systemctl start nginx sudo systemctl enable nginx
创建一个新的配置文件以设置 www.haha.com
的虚拟主机。首先,进入 Nginx 的配置目录:
cd /etc/nginx/sites-available/
然后创建一个新的配置文件:
sudo nano haha.com
在文件中添加以下内容:
server { listen 80; server_name www.haha.com; location / { root /var/www/haha; index index.html; } }
创建 Nginx 配置中指定的根目录 /var/www/haha
:
sudo mkdir -p /var/www/haha
在新创建的目录中创建一个 index.html
文件,内容为 "this is haha":
echo "this is haha" | sudo tee /var/www/haha/index.html
启用刚才创建的虚拟主机配置:
sudo ln -s /etc/nginx/sites-available/haha.com /etc/nginx/sites-enabled/
在重新加载 Nginx 之前,测试配置文件是否正确:
sudo nginx -t
如果没有错误消息,继续执行下一步。
重新加载 Nginx 使配置生效:
sudo systemctl reload nginx
确保 www.haha.com
的 DNS 记录指向服务器 IP 地址。
在浏览器中访问 http://www.haha.com
,应该能够看到页面内容为 "this is haha"。
三、搭建一个dns服务器,客户端可以使用该服务器解析域名www.haha.com为web服务器的ip
首先,更新软件包列表并安装 BIND:
sudo apt update sudo apt install bind9 bind9utils
打开 BIND 的主配置文件 /etc/bind/named.conf.options
:
sudo nano /etc/bind/named.conf.options
在 options
块中,确保以下内容存在:
options { directory "/var/cache/bind"; // 允许来自任何 IP 的查询 allow-query { any; }; recursion no; // 关闭递归查询 };
打开区域配置文件 /etc/bind/named.conf.local
:
sudo nano /etc/bind/named.conf.local
在文件末尾添加以下内容,配置 www.haha.com
的域名解析:
zone "haha.com" { type master; file "/etc/bind/db.haha.com"; };
创建区域数据文件 /etc/bind/db.haha.com
:
sudo cp /etc/bind/db.local /etc/bind/db.haha.com
然后编辑该文件:
sudo nano /etc/bind/db.haha.com
将文件内容修改为以下内容:
$TTL 604800 @ IN SOA ns.haha.com. admin.haha.com. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns.haha.com. ns IN A 你的_DNS_服务器_IP @ IN A 你的_Web_服务器_IP www IN A 你的_Web_服务器_IP
检查 BIND 配置文件是否有错误:
sudo named-checkconf sudo named-checkzone haha.com /etc/bind/db.haha.com
启动 BIND 服务并设置为开机自启:
sudo systemctl start bind9 sudo systemctl enable bind9
如果服务器上启用了防火墙,需要允许 DNS 查询(UDP 53 端口):
sudo ufw allow 53/udp
在客户端上,需要将 DNS 服务器的 IP 地址添加到网络配置中。可以通过编辑 /etc/resolv.conf
文件来设置:
sudo nano /etc/resolv.conf
添加以下内容:
nameserver 你的_DNS_服务器_IP
在客户端上,使用以下命令测试 DNS 解析是否正常:
nslookup www.haha.com
如果配置正确,应该会看到 www.haha.com
被解析为 Web 服务器 IP 地址。
四、将客户端的ip地址中的域名解析服务器地址修改为第3题的dns服务器,使用ping命令ping www.haha.com看能否ping通,用curl命令访问curl www.haha.com看能否看到web页面内容
在客户端上,需要将 DNS 服务器的地址设置为搭建的 DNS 服务器的 IP 地址。
编辑 /etc/resolv.conf
文件:
sudo nano /etc/resolv.conf
添加 DNS 服务器的 IP 地址:
将以下行添加到文件中:
nameserver 你的_DNS_服务器_IP
保存并退出。
在客户端上,使用 ping
命令测试 www.haha.com
是否能被解析:
ping www.haha.com
如果 DNS 配置正确,应该会看到类似以下的输出,显示 www.haha.com
的 IP 地址:
PING www.haha.com (你的_Web_服务器_IP) 56(84) bytes of data. 64 bytes from 你的_Web_服务器_IP: icmp_seq=1 ttl=64 time=0.123 ms
curl
命令访问 Web 页面接下来,使用 curl
命令访问 www.haha.com
,以查看是否能够获取到网页内容:
curl http://www.haha.com
如果一切配置正确,您应该会看到输出为:
this is haha
下一篇:Socket编程学习大纲