通过iptable使内网的机器能访问外网

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过iptable使内网的机器能访问外网相关的知识,希望对你有一定的参考价值。

环境:

Centos 6.8-1

VMware模拟方法,将一张网卡设置为VMnet1,一张设置为桥接

    (桥接设备)eth0 :

    IP地址:192.168.199.55

    子网掩码:255.255.255.0

    网关:192.168.199.1

    (VMnet1)eth1:

    IP地址:192.168.43.129

    子网掩码:255.255.255.0


Centos 6.8-2

    VMware模拟方法,将一张网卡设置为VMnet1

    (VMnet1)eth0:

    IP地址:192.168.43.128

    子网掩码:255.255.255.0

    网关:192.168.43.129

    

iptables的结构:

Iptables用于建立,维护和检查IPv4数据包的表过滤规则在Linux内核中。 可以定义几个不同的表。 每个表包含多个内置链,并且还可以包含用户 - 定义链。每个链是可以匹配一组数据包的规则列表。 每个规则指定如何处理匹配的数据包。 这被称为“目标”, 这可能是在同一个表中跳转到用户定义的链。


iptables的表与链:

iptables具有4张内建表Filter,NAT,Mangle,Raw

Filter表示iptables默认的表

例:

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

等同于

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


1、Filter表中有3个链:

  • INPUT链:处理来自外部的数据,理解为过滤进入linux系统的数据

  • OUTPUT链:处理准备向外发送的数据,理解为是否允许一些数据包去别的网络,比如公网

  • FORWARD链:将数据转发到本机的其他网卡设备上


2、NAT表

  • PREROUTING链:处理到达本机,但并没有路由出去的数据包,它会改变数据包中的目标IP地址DNAT

  • POSTROUTING链:处理即将向外发送的数据包,它会改变数据包中的源IP地址SNAT

  • OUTPUT链:处理本机产生的数据包


3、Mangle表

Mangle表用于指定如果处理数据包,它能改变TCP头中的Qos位。Mangle表具有5个内建链:

PREROUTING

OUTPUT

FORWARD

INPUT

POSTROUTING


4、Raw表

Raw表用于处理异常,内含2个内建链

PREROUTING 链

OUTPUT链







操作步骤:

Centos6.8-1

1、开启内核转发功能

vim /etc/sysctl.conf

# Controls IP packet forwarding

net.ipv4.ip_forward = 1


2、使参数生效

sysctl -p


3、查看iptables现有的规则

查看默认表Filter的FORWARD链

....................

Chain FORWARD (policy ACCEPT)

target     prot opt source               destination         

REJECT     all  --  anywhere             anywhere            reject-with icmp-port-unreachable

......................


4、删除Filter表中的FORWARD链中的REJECT规则,做实验也不管严不严谨了,工作中谨慎谨慎再谨慎。

iptables -t filter -D FORWARD -j REJECT 

service iptables save

iptables -L


5、添加转发规则

iptables -t nat POSTROUTING -s 192.168.43.0/24 -J SNAT --to-source 192.168.199.55

service iptables save


6、在Centos6.8-2上修改网卡参数

vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

TYPE=Ethernet

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=static

IPADDR=192.168.43.128

NETMASK=255.255.255.0

GATEWAY=192.168.43.129

DNS1=202.101.172.35

DNS2=8.8.8.8


7、测试Centos6.8-1和Centos6.8-2的连通性

ping 192.168.43.129


8、查看本地的默认网关是否为192.168.43.129

rount -n

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

0.0.0.0         192.168.43.129   0.0.0.0         UG    0      0        0 eth0


9、测试能ping通Centos6.8-1的路由网关

ping 192.168.199.1


10、测试能否ping通外网

ping 114.114.114.114


11、测试能否正确解析域名

ping  www.vperson.win


12、以上测试都通过,即完成实验。



    

以上是关于通过iptable使内网的机器能访问外网的主要内容,如果未能解决你的问题,请参考以下文章

iptables综合实验

sockets+proxychains代理,使内网服务器可以访问外网

Iptables实验

如何将内网的机器映射到外网?

德邦linux服务器外网能访问,不同IP段内网能访问,同IP段内网访问不了

Iptables不适用与socks协议吗?