学习
实践
活动
工具
TVP
写文章

Linux系统加了弹性网卡却不能从外部访问?

  • 回答 (11)
  • 关注 (5)
  • 查看 (1012)

绑定弹性网卡后,不能从外部访问了怎么办?

athletesssathletesss提问于
火狐回答于
推荐

回答来自于问答智囊团成员:Htroy

专栏:https://cloud.tencent.com/developer/column/89781

为了给云服务器增加一个外网IP,实现单主机多 IP 部署,或者在一个CVM上接入到多个私有网络中,我们可以通过绑定弹性网卡的方式实现。但是绑定弹性网卡后,要从外部进行访问时,就需要正确的配置弹性IP及策略路由。

如果没有正确配置时,流量会根据子机内部的路由表的default路由对外发送,导致流出时的“路径”与入流量的“路径”不一致,导致被拒绝。

兄弟,你从哪来,你是来捣乱的吧

来,我们一起开始核对下是否有漏掉策略路由配置时的某些关键步骤!

1.首先需要检查我们的弹性网卡是否已经正确绑定到子机

我们可以在云服务器控制台中确认是否有绑定弹性网卡,从服务器列表点击服务器的实例ID,进入实例详情页

点击弹性网卡面板查看是否有“弹性网卡”,以及是否绑定了公网IP(EIP)

查看是否有绑定的弹性网卡

或者进入到系统内部,通过 ip address 命令查看是否有新的网卡

查看是否有新增的网卡

2.检查是否正确配置内网IP到弹性网卡中

打开您的弹性网卡控制台,确认您弹性网卡的MAC地址,并点击IPv4地址管理,确认内网IP的地址

查看弹性网卡-基本信息 确认MAC地址

查看弹性网卡-IPv4地址管理 确认内网IP地址

并且到云服务器CVM中对比是否正确配置内网IP到该MAC地址的网卡中,同样的可以通过 ip address 命令查看网卡上的ip,注意确定MAC地址是否一致

ip address 命令查看网卡信息

如果不一致,可以对比一下网卡的配置文件,是否有不正确的地方

Centos7系统一般存放在"/etc/sysconfig/network-scripts"目录,保存在 ifcfg-网卡名称 文件。

DEVICE='eth1' # 此处填写ip address中查看到的需配置的弹性网卡名称,请根据实际填写
NM_CONTROLLED='yes'
ONBOOT='yes'
IPADDR='192.168.1.62'  # 此处填写弹性网卡上的内网IP地址,请根据实际填写
NETMASK='255.255.255.0'  # 此处填写子网掩码,请根据实际填写
#GATEWAY='192.168.1.1'  # 默认以eth0作为默认网关,如果需要使用弹性网卡作为主网关,可以在取消此处注释

修正配置文件后可以通过命令 systemctl restart network (Centos 7) 重启网络服务

3.检查是否有设置策略路由表文件

为了使我们的流量从哪个网卡进入,就需要使用iproute2组件的策略路由,配置文件一般为 "/etc/iproute2/rt_tables"。

我们需要在该文件中新增两个表,格式为"表的代号 表名",其中表的代号需要在255以下,但是0/253-255已经作为预留表,我们可用的为1-252。此处我以"10 eth0"/"20 eth1"作为例子。

#
# reserved values
#
255     local
254     main
253     default
0       unspec
#
# local
#
#1      inr.ruhep
10      eth0
20      eth1

确认此处已配置好后,我们保存文件即可。

4.检查是否有将每个网卡的默认网关增加到策略路由表

配置好策略路由表后,我们需要针对每个网卡确认是否配置好该网卡的默认路由到策略路由表中

首先检查默认路由表,通过命令 ip route show

ip route show的输出

然后需要检查table 10的路由表是否有配置,通过命令 ip route show table 10

没有配置好的情况

额哦,这里没有输出,可没有配置好,我们通过命令行配置下。

ip route add default dev [网关名 如eth0] via [该网卡的网关 如172.16.0.1] table [策略路由表的代号 如10]

设置正确的效果如下:

正确设置的效果

可以看到策略路由表10,已经有eth0网卡的默认路由

同样的我们要检查表20,也就是eth1网卡,弹性网卡的默认路由

正确设置的效果

此处的配置只能临时保存,如果我们需要保证重启服务器或重启网络服务后,无需繁琐地再人工配置一次,我们可以利用网卡配置文件把策略保存下来

如果在使用Centos7系统,我们来到"/etc/sysconfig/network-scripts"目录,编辑一个文件 route-网卡名 (如route-eth0)

vim /etc/sysconfig/network-scripts/route-eth0
default dev [网卡名 如eth0] via [该网卡的网关 如172.16.0.1] table [策略路由表的代号 如10]

对的,很简单,只需要写一行即可,"目标(default) dev 网卡 via 网关 table 路由表代号"

写好后 systemctl restart network 重启网络测试下

重启后策略路由自动添加

Great!

在此处,特别需要注意的点是:

1.每个table都需要检查,因为不同的table设置了不同网卡的默认路由

2.一定要确认网关与网卡名,是否一致的,很容易敲错命令,将eth0的网关配置到eth1上。

5.检查是否配置策略路由规则

在配置好上面这些步骤,我们的系统就已经能知道哪个路由表该走哪个网关出去了,但是还不知道某个网卡来的流量,要到哪个路由表上,下面我们就一起来检查下。

首先我们查看下现有的规则

# ip rule list
0:	from all lookup local 
32766:	from all lookup main 
32767:	from all lookup default

很明显的,这里仅有我们一些默认的路由表,接下来一起进行配置

ip rule add from [主网卡的ip] table [主网卡的策略路由表代号]
ip rule add from [弹性网卡的ip] table [弹性网卡的策略路由表代号]

设置好的效果

可以看到 ip rule list 命令已经有对应规则了,到此策略路由配置完成,可以尝试ping一下两个外网ip

ping测试

成功了,我们可以在另一个主机上,成功的ping通两个外网ip!

同样的,ip rule add命令,仅能临时生效,我们还是需要写入到配置文件中。

我们来到"/etc/sysconfig/network-scripts"目录,编辑一个文件 rule-网卡名 (如route-eth0)

vim /etc/sysconfig/network-scripts/rule-eth0
from [网卡的ip] table [网卡的策略路由表代号]

配置好后我们测试下重启网络服务

能自动的完成路由和规则添加!

在此处,特别需要注意的点是:

一定要确认该处是需要指定我们的网卡ip,而不是网关ip,以及是否加到了对应的table中。

w9回答于

前面的回答已经很详细了,这里补充五个最常出现的Linux故障处理方法:

1、如何判断端口是否放通?

除了检查本机防火墙和云控制台安全组之外,可以通过 telnet 去连接

2、磁盘满了如何查询哪些文件比较大?

# 查看当前目录下各文件、文件夹的大小
du -h –max-depth=1 *
​
# 查询当前目录总大小
du -sh
​
# 显示直接子目录文件及文件夹大小统计值
du -h –max-depth=0 *

3、如何查询服务器日志?

运行命令tailf /var/log/messages

4、服务启动失败怎么办?

当linux服务启动失败的时候,系统会提示我们使用 journalctl -xe 命令来查询详细信息,定位服务不能启动的原因。

5、同一IP反复刷新页面导致服务器403错误处理

mod_evasive是Apache防御攻击的模块,有助于防止DoS、DDoS以及对Apache服务器的暴力攻击。它可以在攻击期间提供规避行动,并通过电子邮件和系统日志工具报告滥用行为。该模块的工作原理是创建一个IP地址和URI的内部动态表,并拒绝以下任何一个IP地址:

  • 每秒请求同一页多次
  • 每秒对同一个孩子发出50多个并发请求
  • 暂时列入黑名单时提出任何要求

如果满足上述任何条件,则发送403响应并记录IP地址。

查看Apache模块清单
apachectl -M
修改配置项

在conf.d目录下找到mod_evasive.conf文件,进行配置(根据网站安全实际需求来)

可以对照自己的问题参考这个知识库里对Linux部分的内容,知识库比较全面:

https://support.websoft9.com/docs/linux/zh/

如果需要人工支持,这个值得一试: https://market.cloud.tencent.com/stores/1252192180?key=linux&pageName=all

用户8840046回答于
ruochen

若尘科技有限公司 · 开发 (已认证)

一个默默无闻的技术分享者回答于
用户8527335回答于
如有乐享

腾云先锋 · 腾云先锋(TDP)成员 (已认证)

分享一切不能分享的内容回答于
抬头向阳..00回答于
用户5091435回答于
1391728688回答于
用户8976349回答于
用户8974520回答于

可能回答问题的人

  • 腾讯云计算产品团队

    腾讯云 · 产品团队 (已认证)

    226 粉丝0 提问0 回答
  • 腾讯云计算产品

    38 粉丝0 提问9 回答
  • 小仙女和科学家

    10 粉丝0 提问0 回答
  • 溪歪歪

    430 粉丝1 提问1 回答
  • DRRR

    腾讯云 · 产品经理 (已认证)

    8 粉丝0 提问4 回答
  • candyxiao

    腾讯 · 高级产品经理 (已认证)

    17 粉丝0 提问7 回答

扫码关注腾讯云开发者

领取腾讯云代金券