zoukankan      html  css  js  c++  java
  • Linux双网卡NAT共享上网

    linux双网卡NAT共享上网

    术语字汇

    • 私有IP地址(路由不可达地址)是一个被用于本地局域网的IP地址(在互联网中不可见)。
    • 公用IP地址(路由可达地址)是一个在互联网中可见的IP地址。
    • IP伪装是一项允许一系列机器通过MASQ网关连接互联网的功能。这些MASQ网关之外的机器在互联网中是不可见的。MASQ之后的机器中任何流入或流出的数据必须经过MASQ网关。
    • 网络地址转换(NAT)是一项通过IP伪装技术可以使私有IP地址访问互联网的功能。

    硬件要求

    • 一台有两个接口(一个公有IP地址和其他的私有IP地址)的linux主机,这个主机将被用作网关。
    • 一台或者多台拥有私有IP地址的linux/windows系统的PC或者笔记本。
    • 交换机/集线器(可选)。

    服务器设置:

    1、激活IP转发

    为了设置网络共享,你需要在linux主机上更改一个内核参数来使能IP转发功能。内核启动参数设定在/etc/sysctl.conf文件中。打开这个文件,定位到含有# net.ipv4.ip_forward = 0的这一行,移除#号(即取消注释),然后将其值设置为1。
    你还要使激活IP转发功能生效,通过执行下面的命令:

    sysctl -w net.ipv4.ip_forward=1
    sysctl -p
    

    或使用下面的命令临时生效,重启后失效

    echo "1" > /proc/sys.Net/ipv4/ip_forward #打开IP转发,1表示转发;0表示不转发
    

    2、NAT配置

    另一个网络共享的重要部分是NAT配置,这可以通过使用iptables的命令,iptables包含四个防火墙的规则表:

    • FILTER (默认表格)
    • NAT
    • MANGLE
    • RAW

    这个教程中我们将仅使用两个表格:FILTER和NAT表格。
    首先,刷新所有活跃的防火墙的规则。

    iptables -X
    iptables -F
    iptables -t nat -X
    iptables -t nat -F
    

    在输入表格中,你需要设置转发链(FORWARD)成可接受的(ACCEPT)目的地,因此所有通过主机的数据包将会被正确的处理。

    iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
    

    在NAT表中,你必须为你的WAN口启用IP伪装功能,我们假设WAN口协议是ppp0。为了在ppp0接口上使能IP伪造技术,我们使用以下的命令:

    iptables -t nat -I POSTROUTING -o ppp0 -j MASQUERADE
    

    或使用下面简单的命令是:

    iptables -F
    iptables -P INPUT ACCEPT
    iptables -P FORWARD ACCEPT
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE #打开NAT
    
    

    客户端设置

    网络拓补结构:(192.168.1.0/24可以连接Internet,网关192.168.1.1)

    1、NAT方法:

    服务器:两网卡的设置:
    eth0:192.168.1.10 掩码:255.255.255.0 网关:192.168.1.1 #可以连接Internet相联
    eth1:192.168.2.1 掩码:255.255.255.0 #与局域网相联
    客户机:192.168.2.10/24 网关:192.168.2.1 #与eth1同一网段,网关为eht1

    2、网桥方法:

    eth0:0.0.0.0 #无IP -->br0
    eth1:0.0.0.0 #无IP -->br0
    br0:eth0:192.168.1.10 掩码:255.255.255.0 网关:192.168.1.1
    客户机:192.168.1.10/24

    ifconfig eth0 0.0.0.0 up  #网桥工作于数据链路层,不需要IP
    ifconfig eth1 0.0.0.0 up
    brctl addbr br0 #添加一个网桥
    brctl addif br0 eth0
    brctl addif br0 eth1 #将eth0 eth1加到网桥中去
    ifconfig br0 192.168.1.10.Netmask 255.255.255.0 broadcast 192.168.1.255 up #给网桥分配IP地址,如果不做NAT,也不需要远程访问网桥的话,可以不设IP地址,但必须启用网桥(ifconfig br0 up)
    route add default gw 192.168.1.1 #如果网桥不需要访问其他机器的话,可以不添加网关。
    

    配置感想:
    按照NAT的方法,很快配置完成,并且可以顺利上网。对于那些对于网络配置没什么特殊要求的用户,可以选用NAT方法,简单实用。

    另外,无线局域网共享wifi,需要hostapd搭建无线局域网,可以参考creat_ap.

  • 相关阅读:
    设计并实现一个漂亮的结婚小站
    Android新特性--ConstraintLayout完全解析
    Android之MainActivity类
    Android app启动activity并调用onCreate()方法时都默默地干了什么?
    Android Studio开发-高效插件强烈推荐
    Android SDK Manager详解
    Android Studio中如何设置颜色拾色器工具
    独立的android开发者开发app如何盈利?
    Android Studio开发常用快捷键
    最强 Android Studio 使用小技巧和快捷键总结
  • 原文地址:https://www.cnblogs.com/wonux/p/5555953.html
Copyright © 2011-2022 走看看