ubuntu 配置iptables代理转发功能

基础知识

iptables命令是Linux上常用的防火墙软件,是netfilter项目的一部分。可以直接配置,也可以通过许多前端和图形界面配置。

iptables是按照规则来办事的,我们就来说说规则(rules),规则其实就是网络管理员预定义的条件,规则一般的定义为”如果数据包头符合这样的条件,就这样处理这个数据包”。规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept)、拒绝(reject)和丢弃(drop)等。配置防火墙的主要工作就是添加、修改和删除这些规则。

数据包流程
数据经过防火墙的流程

两种方式的代理

1、本机端口代理

# 数据从端口80转发8080
$ sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080

2、外部数据转发

$ sudo nano /etc/sysctl.conf
# net.ipv4.ip_forward=1 
# 打开代理转发功能,从上图可以看出,需要经过FORWORD
# 设置net.ipv4.ip_forward=1后需要重启系统才能生效
# 如果不想重启系统,也可以如下设置
$ sudo sysctl -w net.ipv4.ip_forward=1 
# 数据从代理机器123.206.219.160:80 转发到 123.206.219.164:8080
$ sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 123.206.219.164:8080
$ sudo iptables -t nat -A POSTROUTING -d 123.206.219.164 -p tcp --dport 8080 -j SNAT --to-source 123.206.219.160

# 如果【代理机器】位于内部局域内,--to-source 需要指向【代理机器】局域网地址【192.168.1.233】,如下所示:
$ sudo iptables -t nat -A POSTROUTING -d 123.206.219.164 -p tcp --dport 8080 -j SNAT --to-source 192.168.1.233

你可能感兴趣的:(ubuntu 配置iptables代理转发功能)