一、 共享上网

  1. 准备工作
    1)环境模拟
    内网服务器停止防火墙服务,关闭内网服务器外网网卡模拟真实环境, 删除内网网卡DNS地址信息,使其不能上网,并配置网关为有外网的服务器[172.16.1.7]

    /etc/init.d/iptables stop
    ifdown eth0
    vim /etc/sysconfig/network-scripts/ifcfg-eth1
    网卡配置略
    2)查看路由表

route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
172.16.1.0      0.0.0.0         255.255.255.0   U     0      0        0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U     1003   0        0 eth1
0.0.0.0         172.16.1.7      0.0.0.0         UG    0      0        0 eth1

说明:内网服务器网关地址指定为共享上网服务器内网网卡地址

  1. 开启共享上网服务器路由转发功能

    sed i '/net.ipv4.ip_forward/ s#0#1#g' /etc/sysctl.conf 
    grep "_forward" /etc/sysctl.conf
    net.ipv4.ip_forward = 0
    sysctl -p
  2. 共享上网实现[1:有固定外网IP]
    规则配置

    iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o eth0 -j SNAT --to-source 10.0.0.7
    -s 172.16.1.0/24          --- 指定将哪些内网网段进行映射转换
    -o eth0                  --- 指定在共享上网哪个网卡接口上做NAT地址转换
    -j SNAT                --- 将源地址进行转换变更
    -j DNAT                --- 将目标地址进行转换变更
    --to-source ip地址         --- 将源地址映射为什么IP地址
    --to-destination ip地址    --- 将目标地址映射为什么IP地址

    扩展[]
    如果设置forward链默认drop策略,那还需要做如下配置:

    iptables -A FORWARD -i eth1 -s 172.16.1.0/24 -j ACCEPT
    iptables -A FORWARD -o eth0 -s 172.16.1.0/24 -j ACCEPT
    iptables -A FORWARD -i eth0 -d 172.16.1.0/24 -j ACCEPT
    iptables -A FORWARD -o eth1 -d 172.16.1.0/24 -j ACCEPT

    共享上网实现[2:无固定外网IP]

    iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
    二、端口映射
    1.将网关的IP和9000端口映射到内网服务器的22端口
    1)映射关系

    端口映射 10.0.0.7:9000 –>172.16.1.8:22
    2)实现命令

    iptables -t nat -A PREROUTING -d 10.0.0.7 -i eth0 -p tcp –dport 9000 -j DNAT –to-destination 172.16.1.8:22

  3. 实现把访问10.0.0.5:80的请求转到172.16.1.8:80

    iptables -t nat -A PREROUTING -d 10.0.0.5 -p tcp –dport 80 -j DNAT –to-destination 172.16.1.8:80

文档更新时间: 2023-08-09 08:29   作者:月影鹏鹏
IT运维支持-AIWALY-月影工作室