对linux做NAT的解释
我对linux做NAT的解释
一台安装了linux8.0的机器上配置两块网卡,
第一块为eth1,IP地址为218.11.11.11,用来连接外网。
第二块为eth0,IP地址为192.168.0.1,用来连接内网,并做内网的网关。
iptables的配置如下:
1、modprobe ip_tables
2、modprobe iptable_nat
(因为在Linux启动时,ip_tables和iptable_nat两个模块在内核中并不是默认的启动选项,上述两条语句就是先将这两个必需的模块启动。)
3、modprobe ip_conntrack
(为了进行连接跟踪,必须将ip_conntrack这个模块加载,以确保外网中主机返回的报文,能顺利传送到内网中发出请求报文的主机。)
4、echo "1">;/proc/sys/net/ipv4/ip_forward
这条语句的作用是将ip_forward的值赋为1,也即是将端口转发功能打开,因为系统默认的值为不允许。
5、iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to 218.11.11.11
这条语句是利用POSTROUTING功能,来检查第一一个向外传输的报文,并将每一个出去请求的源地址都转换为在外网中合法的IP地址218.11.11.11,从而使内网的主机能够访问外网中的主机。
对于WWW服务
如果想让网内的机器对外提供WWW服务可以这样设置
1、iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth1 -j DNAT --to 192.168.0.1:80
PREROUTING中的规则是最先被检查的,一旦有数据从eth1进入内网,且目的地址为218.11.11.11,端口为80,则iptables就把请求发送到192.168.0.1的80端口
如果再增加一台的话可以这样
iptables -t nat -A PREROUTING -p tcp --dport 8888 -i eth1 -j DNAT --to 192.168.0.2:80
此语句将对218.11.11.11:8888的请求发至192.168.0.2的80端口。外网的主机想访问192.168.0.2提供的WWW服务时必须用http://218.11.11.11:8888
2、iptabes -t nat -APREROUTING -p tcp --dport 80 -i eth1 DNAT --to 192.168.0.1:80
这条语句将服务器对本机IP地址218.11.11.11:80的访问也转发到内网的192.168.0.1:80上。如果没有这条语句,则它对本机eth1上80端口的访问,将不会转发到内网相对应的主机上去。
FTP服务
在网内架设FTP服务让外网的人能够访问到。
1、modprobe ip_conntrack_ftp
2、modprobe ip_nat_ftp
想要在内网架设FTP服务器就必须加载以上两个模块。它们主要是用来跟踪FTP服务的联接状态,确保外网中的主机能够准确找到内网中提供FTP服务的机器,并保持连接
3、iptables -t nat -A PREROUTING -p tcp --dport 21 -i eth1 -j DNAT --to 192.168.0.1:21
一旦有请求218.11.11.11:21报文,则把这些报文转发到内网的192.168.0.1:21上去。和WWW服务一样可以通过不同的端口建立内网不同IP地址的FTP服务。
4、iptables -t nat -A PREROUTING -p tcp --dport 21 -i eth1 -j DNAT --to 192.168.0.1:21
这条语句将服务器对本机IP地址218.11.11.11:21的访问也转发到内网的192.168.0.1:21上。如果没有这条语句,则它对本机eth1上21端口的访问,将不会转发到内网相对应的主机上去。