iptables 持久化
安装持久化工具
apt-get install iptables-persistent
Ubuntu 16.04 调用语法
netfilter-persistent save
netfilter-persistent reload
一键清除iptables规则
cat clear_iptables_rule.sh
#!/bin/bash
iptables -F
iptables -X
iptables -Z
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEP
iptables 转发请求到80端口
1.使用DNAT实现
iptables -t nat -A PREROUTING -p tcp -i ens33 -d 192.168.122.128 --dport 8089 -j DNAT --to 192.168.122.128:80
2.使用redirect实现
iptables -t nat -A PREROUTING -p tcp --dport 8088 -j REDIRECT --to-port 80
====================
iptables本地端口转发
1. 所有的81请求转发到了8080上.
# iptables -t nat -A PREROUTING -p tcp --dport 81 -j REDIRECT --to-ports 8080
1
# iptables -t nat -A PREROUTING -p tcp --dport 81 -j REDIRECT --to-ports 8080
如果需要本机也可以访问,则需要配置OUTPUT链:
iptables -t nat -A OUTPUT -p tcp --dport 81 -j REDIRECT --to-ports 8080
1
iptables -t nat -A OUTPUT -p tcp --dport 81 -j REDIRECT --to-ports 8080
原因:外网访问需要经过PREROUTING链,但是localhost不经过该链,因此需要用OUTPUT,或者POSTROUTING。POSTROUTING不行,需要看看。
iptables 转发到其它服务器
ubuntu 防火墙转发规则:
1首先把/etc/sysctl.conf配置文件中的net.ipv4.ip_forward=0改为net.ipv4.ip_forward=1
然后执行sysctl -p /etc/sysctl.conf使命令生效。
2配置防火墙的 IP 伪装
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
3如果你想让内部网络内的某个服务器能够被外部访问,你可以使用 NAT 内 PREROUTING 链的 -j DNAT 目标来指定向目标 IP 地址以及端口转发请求连接到内部服务器。例如,如果你想把进入的 HTTP 请求转发到 172.11.0.21 上的专用 Apache HTTP 服务器服务器系统,运行以下命令
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT \
--to 172.11.0.21:80
4该规则允许把进入的80端口请求从防火墙转发到172.11.0.21的服务器。
iptables -A FORWARD -i eth0 -p tcp --dport 80 -d 172.11.0.21 -j ACCEPT