环境说明
公司托管2台服务器在机房,其中一台机器有3个公网IP,另外一台新上的在内网,没有公网IP,现在想把公网IP分配一个给内网,如果直接分过去,带宽也得跟着拆分,为了两个机器共享公网带宽,需要把带公网IP的做成路由转发,把其中一个公网IP给新上的那台用。
一方面做个笔记,另一方面如果有相同需求的可以参考下。
下面的数据实在VirtualBox下模拟出来的,真实环境下可以一一对照操作就可以。
server1(做路由的)
内网IP:192.168.56.102
外网IP:172.19.2.209,172.19.2.210
server2
内网IP:192.168.56.101
系统版本CentOS7,防火墙管理工具用的iptables。
开启内核转发功能(server1上操作)
vi /etc/sysctl.conf
# 增加或修改参数如下
net.ipv4.ip_forward = 1
# 保存后,执行下面命令启用参数
sysctl -p
设置防火墙规则(server1上操作)
iptables -F
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
如果想要持久化生效,可以直接编辑iptables规则配置文件:
vi /etc/sysconfig/iptables
# 将 -A FORWARD -j REJECT --reject-with icmp-host-prohibited 修改为下面这样允许转发
-A FORWARD -j ACCEPT
路由规则:
# enp0s8 为外网网卡,这个参数可以省略
iptables -t nat -A POSTROUTING -s 192.168.56.101 -o enp0s8 -j SNAT --to-source 172.19.2.209
iptables -t nat -A PREROUTING -i enp0s8 -d 172.19.2.209 -j DNAT --to-destination 192.168.56.101
将客户端内网IP的网关设置为做路由的那台服务器的内网IP(server2上操作)
# 网卡配置文件大概是这样的,GATEWAY=192.168.56.102
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s3
UUID=7ae9db8d-cd14-43f2-9c16-4dac767e7c11
DEVICE=enp0s3
ONBOOT=yes
IPADDR=192.168.56.101
NETMASK=255.255.255.0
GATEWAY=192.168.56.102 # 关键是这行
DNS1=114.114.114.114