CentOS配置多公网
最终目标是同一台服务器可以多个IP地址共同访问,在这个前提下又有如下两种方式:
- 多个公网IP使用同一个网关
- 多个公网IP使用不同网关
这两种方式区别所在:1.多个公网IP使用同一个网关,我们只需要维护一张路由表,将默认路由设置成网关即可,这样所有的公网地址都会到网关地址进行转发,配置起来也比较方便。2.多个公网IP使用不同网关,因为一张路由表中默认网关只能存在一个,所以这种方式我们就需要维护多张路由表来实现,当然相对而言可能就会稍微麻烦一点,下面我们来分别实现这两种方式:
多个公网地址使用同一个网关
这种需求我们可以用子接口的形式来实现,这种方式有一个好处就是可以节省网卡(节省VLAN),但是根据业务而言都是相对的,比如我们业务量比较大,所有公网转发都在这一块网卡,那么压力就比较大了,并且存在单点这种风险。
查看当前网卡信息
ifconfig
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 1.255.30.10 netmask 255.255.255.252 broadcast 1.255.30.11
inet6 fe80::250:56ff:fea6:388c prefixlen 64 scopeid 0x20<link>
ether 00:50:56:a6:38:8c txqueuelen 1000 (Ethernet)
RX packets 187186 bytes 40500437 (38.6 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 196658 bytes 35343191 (33.7 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
目前我们只有这一块公网网卡,这次就不将公网地址打马赛克了,因为操作完机器就删除了。
在当前网卡基础上配置子接口
vim /etc/sysconfig/network-scripts/ifcfg-ens160:1
NAME=ens160:1 //NAME需要修改
GATEWAY=1.255.30.9 //使用同一个网关地址
DNS1=210.220.163.82
DNS2=168.126.63.1
DEVICE=ens160:1 //DEVICE需要修改
ONBOOT=yes
USERCTL=no
BOOTPROTO=static
NETMASK=255.255.255.252
IPADDR=121.78.159.250 //IP地址需要修改
PEERDNS=no
check_link_down() {
return 1;
}
ifconfig
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 1.255.30.10 netmask 255.255.255.252 broadcast 1.255.30.11
inet6 fe80::250:56ff:fea6:388c prefixlen 64 scopeid 0x20<link>
ether 00:50:56:a6:38:8c txqueuelen 1000 (Ethernet)
RX packets 188768 bytes 40687039 (38.8 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 198348 bytes 35664829 (34.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens160:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 121.78.159.250 netmask 255.255.255.252 broadcast 121.78.159.187
ether 00:50:56:a6:38:8c txqueuelen 1000 (Ethernet)
子接口与主网卡使用同一MAC地址。
测试公网连通性
从服务器内部测试
从本地测试
多个公网地址使用不同网关(方法一)
当前网卡信息
ifconfig
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 121.78.159.250 netmask 255.255.255.252 broadcast 121.78.159.251
inet6 fe80::250:56ff:fea6:388c prefixlen 64 scopeid 0x20<link>
ether 00:50:56:a6:38:8c txqueuelen 1000 (Ethernet)
RX packets 7273 bytes 4208431 (4.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 4450 bytes 541553 (528.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens192: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 1.255.30.10 netmask 255.255.255.252 broadcast 1.255.30.11
inet6 fe80::250:56ff:fea6:20d1 prefixlen 64 scopeid 0x20<link>
ether 00:50:56:a6:20:d1 txqueuelen 1000 (Ethernet)
RX packets 602 bytes 40115 (39.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 149 bytes 22896 (22.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 1.255.30.9 0.0.0.0 UG 100 0 0 ens192
0.0.0.0 121.78.159.249 0.0.0.0 UG 101 0 0 ens160
1.255.30.8 0.0.0.0 255.255.255.252 U 100 0 0 ens192
121.78.159.248 0.0.0.0 255.255.255.252 U 100 0 0 ens160
以上由多个不同优先级的默认路由来实现。
关闭反向路由检查机制
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/ens192/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/ens224/rp_filter
echo "net.ipv4.conf.all.rp_filter = 0" > /etc/sysctl.conf
sysctl -p
为何要关闭反向路由检查机制下文将会详解,同时会给出不关闭此方式的另一种解决办法。
测试网络连通性
- 从服务器内部测试
- 从本地测试
不得不知道的Linux路由信息
Linux中的路由由路由规则和路由表组成。路由规则制定当数据包满足规则时,应转交到具体的路由表;路由表根据数据包信息选择下一跳地址。
- 使用
ip rule
查看当前路由策略:
ip rule
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
Linux内核最多支持32768条路由策略。main表是系统主要的路由表,所有的路由规则都写在这个表中。
- 使用
ip route list table main
查看main
表
ip route list table main
default via 1.255.30.9 dev ens192 proto static metric 100
default via 121.78.159.249 dev ens160 proto static metric 101
1.255.30.8/30 dev ens192 proto kernel scope link src 1.255.30.10 metric 100
121.78.159.248/30 dev ens160 proto kernel scope link src 121.78.159.250 metric 100
从main表中能够看到当前的默认路由为121.78.159.249。Linux中支持256张路由表,编号为0~255,可以直接使用编号来进行操作,也可以使用编号别名操作,编号和别名对应关系在/etc/iproute2/rt_tables
文件当中。
cat /etc/iproute2/rt_tables
#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
默认有local、main、default三个路由表,0、253、254、255三张是已经保留的不能使用。
多个公网地址使用不同网关(方法二)
方法一中我们关闭了Linux反向路由检查机制,如果不关闭将会发生以下的现象,由于我们两块公网网卡配置了不同的默认网关,此时云主机有两个默认网关,不过优先级不同,如果不关闭反向路由检查机制的情况下,只有高优先级的网卡可以与外网互通,低优先级传输数据将会失败,具体原理如下:
原理已经描述清楚了,这就是我们为什么要关闭反向路由检查机制的原因,如果不关闭的话可以按照策略路由的方法进行配置:
策略路由
新增两张路由表
vim /etc/iproute2/rt_tables
100 ens160
101 ens192
配置两张表的策略路由
- 网卡ens160
ip route flush table ens160
ip route add default via 121.78.159.249 dev ens160 src 121.78.159.250 table ens160
ip rule add from 121.78.159.250 table ens160
- 网卡ens192
ip route flush table ens192
ip route add default via 1.255.30.9 dev ens192 src 1.255.30.10 table ens192
ip rule add from 1.255.30.10 table ens192
CentOS配置多公网的更多相关文章
- Linux CentOS 配置Tomcat环境
一.下载Tomcat 下载Tomcat方式也有两种,可以参考我的前一篇博文Linux CentOS配置JDK环境,这边就不再赘述. 二.在Linux处理Tomcat包 1.创建tomcat文件夹 mk ...
- CentOS 配置防火墙操作实例(启、停、开、闭端口):
CentOS 配置防火墙操作实例(启.停.开.闭端口): 注:防火墙的基本操作命令: 查询防火墙状态: [root@localhost ~]# service iptables status< ...
- CentOS配置SSH免密码登录后,仍提示输入密码
CentOS配置SSH无密码登录需要3步: 生成公钥和私钥 导入公钥到认证文件,更改权限 测试 1.生成公钥和私钥 ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 默 ...
- CentOS配置ssh无密码登录
CentOS配置ssh无密码登录的注意点 前提配置:使用root登录修改配置文件:/etc/ssh/sshd_config,将其中三行的注释去掉,如下: 然后重启ssh服务:service s ...
- 在VMware中为CentOS配置静态ip并可访问网络-Windows下的VMware
在VMware中为CentOS配置静态ip并可访问网络-Windows下的VMware 首先确保虚拟网卡(VMware Network Adapter VMnet8)是开启的,然后在windows的命 ...
- CentOS 配置防火墙操作实例(启、停、开、闭端口)CentOS Linux-FTP/对外开放端口(接口)TomCat相关
链接地址:http://blog.csdn.net/jemlee2002/article/details/7042991 CentOS 配置防火墙操作实例(启.停.开.闭端口): 注:防火墙的基本操作 ...
- openstack私有云布署实践【4.2 上层代理haproxy+nginx配置 (办公网测试环境)】
续上一节说明 一开始我也是使用haproxy来做的,但后来方式改了,是因为物理机controller的高配置有些浪费,我需要1组高可用的上层nginx代理服务器来实现其它域名80代理访问,很多办公网测 ...
- Linux工具XFTP、Xshell(centos配置java环境 工具篇 总结一)
♣Xmanager5是什么? ♣安装XFTP ♣安装Xshell 1.Xmanager5(官网:https://www.netsarang.com/download/software.html)是全新 ...
- Linux配置mysql (centos配置java环境 mysql配置篇 总结四)
♣安装的几种方法和比较 ♣配置yum源 ♣安装mysql ♣启动mysql ♣修改密码 ♣导入.sql文件 ♣缓存设置 ♣允许远程登录(navicat) ♣配置编码为utf8 1.关于Linux系统 ...
随机推荐
- json初接触
<html lang="en"> <head> <meta charset="UTF-8"> <meta name=& ...
- unshift() 方法将一个或多个元素添加到数组的开头,并返回新数组的长度
var arr = [1, 2]; arr.unshift(0); //result of call is 3, the new array length //arr is [0, 1, 2] arr ...
- spring okhttp3
准备工作 在pom.xml文件中增加以下依赖 <dependency> <groupId>com.squareup.okhttp3</groupId> <ar ...
- Linux 下监控用户最大进程数参数(nproc)是否到达上限的步骤:
https://www.cnblogs.com/autopenguin/p/6184886.html 1.查看各系统用户的进程(LWP)数: 注意:默认情况下采用 ps 命令并不能显示出所有的进程.因 ...
- IP路由配置之---------dhcp服务器配置
实验设备:一台华三路由器,一台PC 步骤一,在系统视图下打开dhcp功能,禁用IP(网关,域名服务器) [H3C]dhcp enable # [H3C]dhcp server forbidden-ip ...
- Tomcat常用设置及安全管理规范
前言 随着公司内部使用Tomcat作为web应用服务器的规模越来越大,为保证Tomcat的配置安全,防止信息泄露,恶性攻击以及配置的安全规范,特制定此Tomcat安全配置规范.注意: 本文章从htt ...
- 深拷贝 浅拷贝 python
1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象. 2. copy.deepcopy 深拷贝 拷贝对象及其子对象 一个很好的例子: # -*-coding:utf-8 -*- ...
- GCD - Extreme (II) (欧拉函数妙用)
https://cn.vjudge.net/problem/UVA-11426 题意:求 解题思路:我们可以定义一个变量dis[n],dis[n]意为1~(n-1)与n的gcd(最大公约数)的总和,那 ...
- HDU 5977 Garden of Eden(点分治求点对路径颜色数为K)
Problem Description When God made the first man, he put him on a beautiful garden, the Garden of Ede ...
- canvas(二) lineCap demo
var dom = document.getElementById('clock'), ctx = dom.getContext('2d'); ctx.beginPath(); ctx.moveTo( ...