2022-02-03 · 2분
服务器搭建 4
在前一拓扑基础上扩展的 VMware 实操——新增 router2、Vmnet2 和 client-server(克隆现有 VM)、重做 Vmnet/IP 和 netplan 设置、区域间静态路由,以及 sunrin.com / skills.com / cs.com 的 DNS 区域。
2022-01-27 · 7분
这篇文章发布已超过两年,内容可能已过时。
需要了解的内容:
查看更多
**[技能班学习/网络] - [网络] 关于 NAT**](https://nabomhalang.tistory.com/entry/네트워크-NAT에-대해서) [[网络] 关于 NAT — NAT 在从内部网络往外走时,把内部 ip 地址转换成另一个 ip 再出去。① NAT Static:预先把源和目的的 ip 映射固定的 NAT ② NAT Dynamic:源或目的 — nabomhalang.tistory.com
我们将配置成 Client 能与外部服务器 main_srv、slave_srv 通信,而外部服务器不能与 client 通信——为此使用 NAT。将使用名为 masquerade 的功能。

vim /etc/sysctl.conf
第 28 行 net.ipv4.ip_forward=1 应该被注释了,删掉 # 取消注释,用 :wq 退出。
echo 1 > /proc/sys/net/ipv4/ip_forward
sysctl -w net.ip4.ip_forward = 1
上面 2 条命令中用能通的那条来做。
iptables -A FORWARD -o ens33 -j ACCEPT
iptables -A FORWARD -o ens37 -j ACCEPT
iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE
为让 ens33(内部)ens37(外部)能连接,全部 ACCEPT。然后依次输入上面的 3 条命令。这样一来就能从 Windows Client 向 main_server 发 ping 了。

windows Client → main-server
接下来配置成能从 Windows Client 用 ssh 连接。在 main-server 上进行。
apt install openssh-server
sudo systemctl status ssh
用 install openssh-server 安装 ssh。
※ 如果 openssh 装不上,敲 ifconfig 看看,确认 ens33 是否关着、ens37 是否开着。 ens33 是虚拟网络,下载软件包时必须关着,而要收软件包 ens37 必须开着。
安装后输入第二条命令确认是否在运行。

可以确认在运行。这样一来就能从 windows client 用 ssh 连接了。因为是在 main 上创建的,我这里 main-server 的 hostname 是 main,所以可以用 ssh [email protected] 连接。

从 windows terminal 连接到 main-server 的情况
接下来做成能一次以 root 连接。如果你以为 ssh [email protected] 能行,就试一次。大概不行。那就配置成 root 能连接吧。
※ 如果从 Windows Client 用 ssh 连不上,可能是 main-server 上 22 端口没开。这种情况在 main-server 上输入 ufw allow ssh 或 ufw allow 22 再把端口打开吧。

vim /etc/ssh/sshd_config
用 vim 进入上面的路径改一下即可。
Port 22
- 指定 ssh 使用的默认端口。
AllowUsers user1 root
- 记录允许登录的账户。
LoginGraceTime 600
- 当用户登录未成功完成时,服务器在此时间之后断开连接的时间。
- 默认值是 600 秒。
PermitRootLogin no
- 决定是否允许 root 登录。 可以用 yes、no、without-password。
PasswordAuthentication yes
- 允许密码认证。 此选项对协议版本 1 和 2 都适用。
它决定认证时是否使用基于密码的认证方式。
为了强安全,此选项应始终设为 no。
这里要允许 root 登录,把 PermitRootLogin 改为 yes,就能用 ssh [email protected] 连接。若也想改端口号,把 Port 22 里的 22 改成想要的端口即可。那种情况用 ssh [email protected] -p [端口] 连接。

配置
上面的例子在 22000 端口开启并允许了 RootLogin。

ssh [email protected] -p 22000
如上可以看到以 root 正常连接。接下来用 apache 做 Web 服务。
apt install apache2
输入上面的命令就会安装 apache2。
※ 从现在起,开关 ens33 和 ens37 之类的事要自己做。
apache 成功安装后,去 windows client 打开浏览器窗口,输入 main-server 的 IP。就会出现 apache2 的默认站点画面。现在我们删掉默认模板,输入 "Hello World"。然后会出现下面这样的画面。

22.1.24.10
可以确认正常显示。接下来在 slave-server 上安装 nginx,像配置 apache 那样配置。
apt install nginx
vim /var/www/html/index.nginx-debian.html
这个安装完成后,也和 apache 一样能用 IP 连接。

vim /var/www/html/index.nginx-debian.html
按上面改好后,再回到 windows client,这次把 slave-server 的 IP 放进浏览器窗口,就能确认像 apache 配置那样显示在画面上。

apache2
apache2 一共要改 2 个文件。首先 /var/www/html/ 是默认目录,我们把它改成 /home/main/server/。
vim /etc/apache2/apache2.conf
vim /etc/apache2/sites-available/000-default.conf
要在上面 2 个文件里修改。

vim /etc/apache2/apache2.conf
把第 164 行写着 /var/www/html/ 的地方改成 /home/main/server/。

vim /etc/apache2/sites-available/000-default.conf
把 DocumentRoot 里写的 /var/www/html/ 改成 /home/main/server/。然后在 /home/main/server 目录里写 index.html,做一个基本的 html 文件。之后重启 apache2。
systemctl restart apache2
service apache2 restart
两个里只要有一个生效即可。

应用后
应用后可以看到改得非常好。
nginx
nginx 非常简单。只需改一个文件。
vim /etc/nginx/sites-enabled/default

vim /etc/nginx/sites-enabled/default
在 server 中把 root 里的 /var/www/html/ 改成 /home/slave-server/server/。之后重启就能看到正常工作。

应用后
表(Table)
动作(Action)
链(Chain)
匹配(Match)
目标(target)
善用上面这些,大部分策略你都能配置。这是个简单的问题。在路由器上拦截来自 main-server 的 80port 吧。拦截成功的话,从 windows client 就进不去你以 22.1.24.10 apache 服务器开启的东西了对吧?
都做完了吗…… 公布答案。
iptables -I FORWARD -d 22.1.24.10 -p tcp --dport 80 -j DROP
把上面的代码输入到路由器后,从 windows client 连接 22.1.24.10 试试,

现在再输入一次 iptables -F,再连接一次吧。

可以确认又能正常连接。如果想在路由器之外、在 main-server 自身上封 80 端口,
iptables -I INPUT -p tcp --dport 80 -j DROP
按上面那样写,同样地 windows client 也连不上。
今天就到这里。
原文(韩语): tistory — 发布于 2022-01-27,已迁移至本博客。本翻译由 AI 协助完成。
…