关于CentOS 7系统:需要删除firewalld装回iptables.
# 安装命令:
systemctl stop firewalld.service systemctl disable firewalld.service yum install iptables-services -y systemctl enable iptables.service
第一步:开启系统的转发功能
首先,先确认服务器是否已开启转发,运行:
sysctl net.ipv4.ip_forward # 如果已经启动则显示 > net.ipv4.ip_forward = 1 # 如果没有启动则显示 > net.ipv4.ip_forward = 0
# CentOS 6/Debian/Ubuntu 开启方式:
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf sysctl -p
# CentOS 7 开启方式:
echo "net.ipv4.ip_forward = 1" >> /usr/lib/sysctl.d/cloudiplc.conf sysctl -p /usr/lib/sysctl.d/cloudiplc.conf
首先我们设置一下iptables 防火墙的开机启动自动载入规则功能。
CentOS 系统:
service iptables save service iptables restart
Debian/Ubuntu使用:
iptables-save > /etc/iptables.up.rules iptables-restore < /etc/iptables.up.rules
第二步: 加入iptables规则
总体是这样的:
iptables -t nat -A PREROUTING -p tcp --dport [端口号] -j DNAT --to-destination [目标IP] iptables -t nat -A PREROUTING -p udp --dport [端口号] -j DNAT --to-destination [目标IP] iptables -t nat -A POSTROUTING -p tcp -d [目标IP] --dport [端口号] -j SNAT --to-source [本地服务器IP] iptables -t nat -A POSTROUTING -p udp -d [目标IP] --dport [端口号] -j SNAT --to-source [本地服务器IP]
* 如服务器是内网IP(例如NAT-VPS),请用ifconfig或ip addr确认走公网流量网卡的内网IP(本地服务器IP),比如阿里云这些,内网IP一般为10.xx.xx.xx
例如单端口同端口转发: 将本地服务器(中转服务器2.2.2.2
)的10000
端口转发至目标IP(节点服务器)为1.1.1.1
的30000
端口
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 10000 -j DNAT --to-destination 1.1.1.1:30000 iptables -t nat -A PREROUTING -p udp -m udp --dport 10000 -j DNAT --to-destination 1.1.1.1:30000 iptables -t nat -A POSTROUTING -d 1.1.1.1 -p tcp -m tcp --dport 30000 -j SNAT --to-source 2.2.2.2 iptables -t nat -A POSTROUTING -d 1.1.1.1 -p udp -m udp --dport 30000 -j SNAT --to-source 2.2.2.2
例如端口范围不同端口转发:
将本地服务器(中转服务器2.2.2.2
)的10000~20000
端口转发至目标IP(节点服务器)为1.1.1.1
的30000~40000
端口
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 10000:20000 -j DNAT --to-destination 1.1.1.1:30000-40000 iptables -t nat -A PREROUTING -p udp -m udp --dport 10000:20000 -j DNAT --to-destination 1.1.1.1:30000-40000 iptables -t nat -A POSTROUTING -d 1.1.1.1 -p tcp -m tcp --dport 30000:40000 -j SNAT --to-source 2.2.2.2 iptables -t nat -A POSTROUTING -d 1.1.1.1 -p udp -m udp --dport 30000:40000 -j SNAT --to-source 2.2.2.
第三步:修改后记得保存 iptables配置,免得重启后没了。
CentOS 系统:
service iptables save
Debian/Ubuntu 系统:
iptables-save > /etc/iptables.up.rules
1.查看NAT规则
iptables -t nat -vnL POSTROUTING iptables -t nat -vnL PREROUTING
2.删除NAT规则:
通过上面的查看规则命令,查看规则后,确定你要删除的规则的顺序,下面的命令是删除第四个规则。
iptables -t nat -D POSTROUTING 4 iptables -t nat -D PREROUTING 4
四:一键脚本:
wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/iptables-pf.sh && chmod +x iptables-pf.sh && bash iptables-pf.sh
关于国内腾讯云等服务器转发失败解释
国内的很多服务器,例如腾讯云,在VPS网卡上面绑定的都是内网IP,这样的话,如果你用脚本自动检测外网IP,会转发失败,需要在添加转发规则的时候,本服务器IP手动写你的服务器 网卡上面绑定的IP。
- ifconfig
- # 输入命令后会看到 网卡信息,我们看第二行的 inet addr:xxx.xxx.xxx.xxx ,这里的 xxx 就是你的网卡绑定的IP。
© 版权声明
文章来源于网络收集,如有侵权,请联系删除。
THE END
暂无评论内容