实践环境
虚拟机系统:CentOS 7.8 Minimal
网卡eth0(公网ipv4):42.51.9.135
网卡eth1(公网ipv6):240e:93d:1000:9::10
安装 iptables
由于CentOS 7 默认自带 Firewalld 防火墙,我们先关闭它
禁用 firewalld 服务
systemctl disable firewalld
systemctl stop firewalld
安装 & 启动 iptables
yum install -y iptables iptables-services
systemctl start iptables ip6tables #启动服务
systemctl enable iptables ip6tables #开机启动
开启IPv4 & IPv6 路由转发
修改 /etc/sysctl.conf
文件参数值为如下,不存在则添加
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
执行以下命令生效修改
sysctl -p
创建虚拟网关IP地址
创建 IPv4 虚拟网卡 /etc/sysconfig/network-scripts/ifcfg-eth0:1
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0:1
DEVICE=eth0:1
ONBOOT=yes
IPADDR=172.20.10.1
NETMASK=255.255.255.0
创建 IPv6 虚拟网卡 /etc/sysconfig/network-scripts/ifcfg-eth1:1
BOOTPROTO=none
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth1:1
DEVICE=eth1:1
ONBOOT=yes
IPV6ADDR=1000:2000:3::1/64
注意:ifcfg-eth0:1 和 ifcfg-eth1:1 是根据真实网卡名称追加 :1
而来,如果你是双栈网络,则只需创建一个虚拟网卡即可
重启网卡
systemctl restart network
使用 ifconfig
命令查看虚拟网卡是否生效
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 42.51.9.135 netmask 255.255.255.0 broadcast 42.51.9.255
ether fa:d8:c6:d5:36:00 txqueuelen 1000 (Ethernet)
RX packets 2737180 bytes 1381900847 (1.2 GiB)
RX errors 0 dropped 131721 overruns 0 frame 0
TX packets 2336822 bytes 1584694107 (1.4 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.20.10.1 netmask 255.255.255.0 broadcast 172.20.10.255 # 虚拟网卡地址 172.20.10.1 正常
ether fa:d8:c6:d5:36:00 txqueuelen 1000 (Ethernet)
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 240e:93d:1000:9::10 prefixlen 64 scopeid 0x0<global>
inet6 1000:2000:3::1 prefixlen 64 scopeid 0x0<global> # 虚拟网卡地址 1000:2000:3::1 正常
inet6 fe80::2e60:784b:cb24:db8e prefixlen 64 scopeid 0x20<link>
inet6 fe80::f85e:e8ff:fe69:4901 prefixlen 64 scopeid 0x20<link>
ether fa:5e:e8:69:49:01 txqueuelen 1000 (Ethernet)
RX packets 3956859 bytes 661939743 (631.2 MiB)
RX errors 0 dropped 131668 overruns 0 frame 0
TX packets 279555 bytes 207357925 (197.7 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
建立 iptables SNAT 转发规则
为了保证没有其它规则影响,可以先把 iptables 现有NAT 规则清空
iptables -F && iptables -t nat -F
ip6tables -F && ip6tables -t nat -F
建立转发规则
iptables -t nat -A POSTROUTING -s 172.20.10.0/24 -j MASQUERADE
ip6tables -t nat -A POSTROUTING -s 1000:2000:3::/64 -j MASQUERADE
保存规则
service iptables save
service ip6tables save
开始使用
在你的云计算平台创建两个私有网络地址池
IPv4:
网关:172.20.10.1
掩码:255.255.255.0
DNS:114.114.114.114(任何可用的公共DNS)
可用IP范围:172.20.10.2-172.20.10.254 (当然,你可以根据自己需求设置IP范围)
IPv6:
网关:1000:2000:3::1
前缀长度:64
DNS:2400:3200:baba::1(任何可用的公共DNS)
可用IP范围:随心所欲。。。
功效扩展
NAT网关 - 私有网段 互通
私有IP - 私有IP 互通
当你想使用私有网段下的云主机某个端口通过 NAT网关(公网)访问,一样可以使用 iptables 映射 172.20.10.x 指定端口到公网上。具体端口映射规则自行百度就有。
同时你也可以使用 nginx 等程序反向代理私有IP 的任何应用,达到一个IP 共用 80 & 443 端口的效果。
SNI Proxy 也是一个非常好的开源程序,能实现四层协议无缝反代( )
版权声明:本文为原创文章,版权归 Cooluc's Blog 所有,转载请注明出处!
本文链接:https://www.cooluc.com/archives/856.html
友情提示:如果博客出现404或链接失效,请留言或者联系博主修复!
1 条评论
nat 后 ssh 上不去了,怎么解😂