以下命令需要以root的权限执行

> 是 > 代码显示或许有些bug

展示所有的规则:

iptables -vnL --line-numbers

如果比较特殊的,比如nat,那就需要指定类型,其他命令也一样:

iptables -t nat -vnL --line-numbers

删除规则:

iptables -D 类型 对应的序号num

这样可以删掉INPUT规则的第一条:

iptables -D INPUT 1

这样可以删掉nat中PREROUTING规则的第一条:

iptables -t nat -D PREROUTING 1

开放端口(INPUT):

开80:

iptables -I INPUT -p tcp --dport 80 -j ACCEPT

开22:

iptables -I INPUT -p tcp --dport 22 -j ACCEPT

本地的端口转发(REDIRECT):

80转到8080:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

可以指定固定访问客户端ip实现对端口的复用:

iptables -t nat -I PREROUTING -p tcp -s 223.6.6.6 --dport 8080 -j REDIRECT --to-ports 22

远程的端口转发(DNAT):

这里配置相对比较麻烦,如果是做一下跳板简单用一下的,我推荐:showArgvSocket

开启ip路由转发功能:

临时:

echo 1 > /proc/sys/net/ipv4/ip_forward

永久:

编辑 /etc/sysctl.conf 添加到最后:

net.ipv4.ip_forward = 1

或者找到被注释的这行删掉最前面的#注释并把0改成1

应用设置:

sysctl -p

添加转发:

80转发到1.1.1.1的80:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 1.1.1.1:80

可以指定固定访问客户端ip实现对端口的复用:

iptables -t nat -I PREROUTING -p tcp -s 223.6.6.6 --dport 443 -j DNAT --to-destination 1.1.1.1:80

其他:

转发时使用 -d 可以指定服务端监听ip,这在多ip服务器上很有用,或是监听127.0.0.1仅允许本地访问

查看状态:

/etc/init.d/iptables status

启动:

/etc/init.d/iptables start

停止:

/etc/init.d/iptables stop

保存:

centos大概可以这样操作:

service iptables save

比较通用的打开姿势(以下任意一条):

iptables-save > /etc/iptables.rules
iptables-save > /etc/network/iptables.up.rules
iptables-save > /etc/iptables/rules.v4