ubuntu使用iptables 持久化

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