CentOS 7 下用 firewall-cmd / iptables 实现 NAT 转发供内网服务器联网
自从用 HAProxy 对服务器做了负载均衡以后,感觉后端服务器真的没必要再配置并占用公网IP资源。
而且由于托管服务器的公网 IP 资源是固定的,想上 Keepalived 的话,需要挤出来 3 个公网 IP 使用,所以更加坚定了让负载均衡后端服务器释放公网 IP 的想法。
可是,后端服务器也不是简单释放公网 IP 就能正常工作的,正在运行的系统很多模块依然需要具有连接外网获取数据的能力。
所以就想到了用 CentOS 做一个软路由(内网 NAT 转发),如果能实现的话,就满足了我的需求。
搜索并试验了一番,目前发现用 iptables 是可行的,而且已经被我验证有效的方案。
由于用到了 iptables,需要停止并禁用内置的 firewalld 防火墙服务。
☼ 停止内置的 firewalld
systemctl stop firewalld
systemctl disable firewalld
☼ 打开系统的 IP 转发功能
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p
☼ 安装 iptables 服务
yum -y install iptables-services
# 移除 iptables 服务
#yum -y remove iptables-services
☼ 查看 iptables 规则
iptables -L
☼ 清空默认的 filter 表
iptables -F
☼ 清空默认的 nat 表
iptables -t nat -F
☼ 默认规则,禁止所有入站,允许所有出站
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
☼ 默认规则,允许所有本地环回通信,出入站
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
☼ 重点,开启 NAT 功能
iptables -t nat -A POSTROUTING -j MASQUERADE
☼ 完整的命令
可以在命令行下粘贴批量执行
systemctl stop firewalld
systemctl disable firewalldyum -y install iptables-servicesiptables -F
iptables -t nat -F
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -t nat -A POSTROUTING -j MASQUERADEiptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp -s 192.168.66.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -s 你的可信任远程管理IP -j ACCEPTiptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPTiptables-save > /etc/sysconfig/iptables
systemctl restart iptables
☼ 其他
# 允许已建立的传入连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT# 允许DHCP传入连接
iptables -A INPUT -i eth1 -p udp --dport 67:68 -j ACCEPT# 默认禁止路由转发
iptables -P FORWARD DROP# 允许内网路由转发
iptables -A FORWARD -s 192.168.66.0/24 -j ACCEPT
☼ 后记,补充 2017-12-13 20:28
捣鼓了一下午,NAT 转发当路由器供内网服务器上网终于搞定了,结果CentOS重启后,发现 iptables 的配置丢失,竟然没有永久保存?
太扯淡!
网上说这个问题的还很多,有人说可以制作自启动脚本,在启动时自动将 iptables 的规则重新注册一次,
也算是一个解决办法。
不过,思来想起,既然 CentOS 已经抛弃了 iptables ,那肯定是有一定道理的,firewalld 一定也有办法实现同样的功能吧!
firewall-cmd --permanent --zone=public --add-masquerade# 调整防火墙策略,开放 vrrp 协议,给 Keepalived 使用
# 否则可能导致【脑裂】问题,争抢VIP,或者master挂掉之后backup无法正常工作
firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface ens33 --protocol vrrp -j ACCEPT
firewall-cmd --reload
#
搞定了。
当然其他功能端口的开放,这里就不啰嗦了 (0^0)。
转载于:https://www.cnblogs.com/hope250/p/8033818.html
CentOS 7 下用 firewall-cmd / iptables 实现 NAT 转发供内网服务器联网相关推荐
- Centos/Red Hat6.8 安装、配置、启动Gitlab (内网环境)心得分享
文章目录 一.Gitlab下载 1. Gitlab官网下载 二.分析思路 2.1. 分析 2.2. 代码托管平台 2.3. 镜像站 二.Gitlab 重新加载配置异常 2.1. 异常现象 2.2. 分 ...
- linux外网服务器跳转内网服务器实现内网访问(iptables)
服务器信息如下 外网服务器:eth0:公网IP eth1:内网IP(192.168.10.205) 公网对外提供服务,内网IP与内部局域网通信. 配置过程: (1)开启iptables service ...
- Linux下实现Firewalld Net 外网端口转发至内网
前提条件: 公网服务器至少需要2个网卡,一个配公网一个配内网. 内网服务器网卡配置同公网服务器相同内网段内网地址 如果安装过iptables的机器,需要先停止,然后设置开机禁用: servcie ip ...
- NAT环境下,内网用户使用公网地址访问内网服务器
一.环境 1.单位内部有一台服务器,提供web.ftp.ssh等服务,ip地址为私网地址. 2.出口使用cisco路由器,做端口映射,使服务器对外提供服务. 3.内部用户可以通过私网地址访问服务器,外 ...
- iptables设置映射通过外网端口代理ssh登录内网服务器
一.环境阐述 环境介绍:现有一台搭载数据库的内网服务器,要求是不能访问外网,需要其他可以有公网IP的服务器做端口代理,以SSH方式登录此服务器做系统管理. 环境模拟为两台VM虚拟机(搭载CentOS6 ...
- 控制iptables的nat转发端口的实现
[第一.需求描述] 员工通过办公网络的网关服务器(linux)192.168.1.250的snat访问另外一个局域网:安全中心(10.1.1.0/24),但是为了提高安全性,只允许访问安全中 ...
- linux7防火墙端口映射,使用centos7防火墙firewall实现端口映射,实现远程内网3389桌面...
本是为了解决linux远程连接windows桌面的问题.转来转去,搞成了端口映射和防火墙.我也不想麻烦啊.尝试了网上说的各种,rdesktop和FreeRDP(FreeRDP是开源的远程桌面系统),都 ...
- windows下使用nginx 端口转发 frp内网转发
端口转发工具, win10下测试通过,用ip方式优于域名方式 https://sourceforge.net/projects/pjs-passport/ nginx下载地址 http://nginx ...
- CentOS 7 下的 Firewall
CentOS 7 默认实用的用Firewalld作为防火墙,摒弃了原先的iptables.但是内核还是使用iptable作为管理 参考文档 https://access.redhat.com/docu ...
最新文章
- 浅谈Java语言中ArrayList和HashSet的区别
- [Selenium]Eclipse hangs at 57% in debug mode with TestNG tests
- 洛谷P3809 后缀排序【后缀数组】【模板】
- .NET应用如何优雅的实现功能定时开关
- log4net在WinForm和ASP.net下的设置
- 英语笔记:写作:Nothing succeeds without a strong will
- CCF201503-3 节日(100分)
- VUE---不连接后端的登录验证规则方法
- Rad Software Regular Expression Designer 正则表达式工具软件
- Atitit php pdo的api使用 目录 1.1. PHP PDO简介	1 1.2. 若要使用数据库长连接,:PDO::ATTR_PERSISTENT	1 2. 其他设置	2 2.1. )、P
- IDEA若依框架新建模块
- IDEA 插件开发 发送弹框提示信息
- php 去高去低去平均值,招标评分必备,去掉最高最低分求平均值
- Python 发送短信
- 购买一台计算机需要哪些配件,组装一台电脑需要哪些配件【详细列举】
- 毕业设计-基于机器视觉的手写字识别系统
- 【免费】Linux命令行与Shell脚本编程大全 第3版 PDF全本 21MB 百度网盘下载
- 小白学python(爬虫知识1(大体框架)
- 一只仓鼠引发的热议HUAWEI nova 青春版超大内存走红
- 台州爱乐搜5.18与您相约香溢大酒店
热门文章
- 递归与非递归转换(栈知识应用)
- 东北大学计算机分数线2017,东北大学2017年本科一批录取分数线(全国)
- win7查看电脑上openCV的版本
- android 多版本打包,Android build.gradle版本名打包配置的方法
- mysql和sqlserver共存_mysql 和sqlserver的 多行合并成一行
- php增删改查前后端分离,前后端分离之前端增删改查
- 多线程处理缓慢_华为昇腾,AI推理性能超越对手一倍:软件挖掘处理器全部潜力...
- html代码闪烁的文字怎么打,HTML最简单的文字闪烁代码
- linux按文件名排序ls,linux – 如何使用shell脚本按名称对文件进行排序
- java 非模态_Qt 之 模态、非模态、半模态窗口的介绍及 实现QDialog的exec()方法