2022-01-27 · 7

服务器搭建 2

serverlinux

这篇文章发布已超过两年,内容可能已过时。

需要了解的内容:

查看更多

**[技能班学习/网络] - [网络] 关于 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 与 Nginx 的根目录

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/。之后重启就能看到正常工作。

应用后

IPTABLES 用法

表(Table)

  • filter、nat、mangle、raw
  • 不指定时默认是 filter。

动作(Action)

  • -A(--append):添加策略,若有其他策略则加到最下面。
  • -I(--insert):插入,若有其他策略则加到最上面。
  • -D(--delete):删除策略
  • -R(--replace):替换策略
  • -F(--flush):删除所有策略
  • -P(--policy):设置默认策略
  • -L(--list):列出策略

链(Chain)

  • INPUT
  • OUTPUT
  • FORWARD
  • PREROUTING
  • POSTROUTING

匹配(Match)

  • -s(--source, --src):源匹配,用域名、IP 地址、网络掩码值表示
  • -d(--destination, --dst):目的匹配,用域名、IP 地址、网络掩码值表示
  • -p:协议匹配,用 TCP、UDP、ICMP 之类的名字,不区分大小写
  • -i(--in-interface):输入接口匹配
  • -o(--out-interface):输出接口匹配
  • -j(--jump):指定如何处理匹配的数据包

目标(target)

  • ACCEPT:允许数据包。
  • DROP:丢弃数据包(就像数据包从未被发送过一样)
  • REJECT:丢弃数据包,同时发送适当的响应包(ICMP-PORT-UNREACHABLE)
  • LOG:把数据包记录到 syslog。
  • SNAT --to [地址]:转换源 IP(NAT)。
  • DNAT --to [地址]:转换目的 IP(NAT)。
  • RETURN:在调用链内继续处理数据包。

善用上面这些,大部分策略你都能配置。这是个简单的问题。在路由器上拦截来自 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 协助完成。

评论

删除这条评论?

相关文章

服务器搭建 2 · 나봄하랑