配置Linux为NAT网关

NAT简介

网络地址转换NAT(Network Address Translation)方法是在1994年提出的。这种方法需要在专用网连接到互联网的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。这样,所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和互联网连接。

如下图所示给出了NAT路由器的工作原理。在图中,专用网192.168.0.0内所有主机的IP地址都是本地IP地址192.168.x.x。NAT路由器至少要有一个全球IP地址,才能和互联网相连。图中表示出NAT路由器有一个全球IP地址172.38.1.5(当然,NAT路由器可以有多个全球IP地址)。

SNAT与DNAT简介

路由器将专有网段中收到的192网段的报文替换成172网段的报文为SNAT(Source Network Address Translation);反之路由器将从公网收到的172网段的报文替换为内网192网段的报文为DNAT(Destination Network Address Translation)。

NAPT简介

使用端口号的NAT也叫做网络地址与端口号转换NAPT(Network Address and Port Translation),而不使用端口号的NAT就叫做传统的NAT(traditional NAT)。但在许多文献中并没有这样区分,而是不加区分地都使用NAT这个更加简洁的缩写词。下图说明了NAPT的地址转换机制。


 

配置Linux NAT网关 

如图所示,通过配置Client与server实现Client访问互联网

 配置client默认路由指向192.168.2.11

//添加默认路由
[root@node03 ~]# route add default gw 192.168.2.11

//查看新添加的路由
[root@node03 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.2.11    0.0.0.0         UG    0      0        0 eth0
192.168.2.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0

配置NAT server 开启snat

//开启路由转发
[root@ct7_node01 ~]# sysctl net.ipv4.ip_forward=1


//情况防火墙规则
[root@ct7_node01 ~]# iptables -F

//清空nat规则
[root@ct7_node01 ~]# iptables -t nat -F

//配置新的nat规则
[root@ct7_node01 ~]# iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j SNAT --to 192.168.122.22

//查看刚刚创建nat规则
[root@ct7_node01 ~]# iptables -t nat -vnL
...
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 SNAT       all  --  *      *       192.168.2.0/24       0.0.0.0/0            to:192.168.122.22
...

客户端访问公网测试

[root@node03 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 74:52:01:01:03:01 brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.13/24 brd 192.168.2.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::754a:b9ba:aae0:2412/64 scope link 
       valid_lft forever preferred_lft forever
    inet6 fe80::54fc:ae6:27ee:f265/64 scope link tentative dadfailed 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 74:52:01:01:03:02 brd ff:ff:ff:ff:ff:ff
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 74:52:01:01:03:03 brd ff:ff:ff:ff:ff:ff
5: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 74:52:01:01:03:04 brd ff:ff:ff:ff:ff:ff
[root@node03 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.2.11    0.0.0.0         UG    0      0        0 eth0
192.168.2.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0
[root@node03 ~]# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=111 time=57.1 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=111 time=48.6 ms
^C
--- 8.8.8.8 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 48.682/52.897/57.112/4.215 ms
[root@node03 ~]# 

客户端成功访问互联网

配置Linux NAPT网关 

上述步骤已完成了NAT的配置,客户端可以通过ip地址访问互联网,但是想要使用DNS,Http等服务还需要做进一步的配置。

配置规则

//将 UDP 192.168.2.13:53的报文替换为UDP的192.168.122.22:51889
[root@ct7_node01 ~]# iptables -t nat -A POSTROUTING -s 192.168.2.13 -p udp --dport 53 -j SNAT --to 192.168.122.22:51889

//查看NAT规则
[root@ct7_node01 ~]# iptables -t nat -nvL
...   
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 SNAT       all  --  *      *       192.168.2.0/24       0.0.0.0/0            to:192.168.122.22
    0     0 SNAT       udp  --  *      *       192.168.2.13         0.0.0.0/0            udp dpt:53 to:192.168.122.22:51889

...  

验证

[root@node_03 ~]# ping baidu.com
PING baidu.com (220.181.38.148) 56(84) bytes of data.
64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=1 ttl=54 time=9.84 ms
^C
--- baidu.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 9.842/9.842/9.842/0.000 ms
[root@node_03 ~]# curl baidu.com
<html>
<meta http-equiv="refresh" content="0;url=http://www.baidu.com/">
</html>
[root@node_02 ~]# 

iptables的bug

如上图所示只进行了192.168.2.13 udp53端口的转换,但是客户端同样可以发送与接收HTTP的请求;192.168.122.22上iptables虽然带端口的nat只配置了一条,但实际上192.168.2.13上所有的tcp、udp端口都会进行转换,192.168.2.13这台主机可以访问互联网上所有的应用。

Tips

如果将NAT网关替换为海外的服务器,会出现什么情况呢: )

  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要设置Linux网关,可以使用以下命令: 1. 查看当前的网络设置: ``` ifconfig ``` 2. 设置网关: ``` route add default gw <网关IP地址> ``` 例如,如果网关IP地址是192.168.1.1,那么命令应该是: ``` route add default gw 192.168.1.1 ``` 3. 验证设置是否成功: ``` route -n ``` 该命令会显示当前的路由表,包括网关信息。如果网关设置成功,应该能够看到默认网关的IP地址。 ### 回答2: Linux 系统设置网关是一项重要的配置任务,它决定了网络中各个节点之间的通信途径和传输效率。下面我将详细介绍如何在 Linux 系统中设置网关。 1.了解网关的概念 在计算机网络中,网关是连接不同网络之间的一种特殊设备或者程序,也可以被称作路由器。它负责将数据从源网络转发到目的地网络,并能够提供网络地址转换(NAT)等功能。 2.查看现有设置 在开始设置之前,首先需要查看当前系统中的网关设置情况。可以使用以下命令查看: $ route 或者 $ netstat -rn 这些命令能够显示当前系统的路由表,包括默认网关。 3.设置静态网关 静态网关是指管理员手动指定的网关地址,它是最常见的网关设置方式。一般来说,我们需要找到网关的IP地址和子网掩码,并将其添加到系统的路由表中。可以进入系统的网络设置或者配置文件来设置静态网关,具体操作步骤如下: a) 修改配置文件 如有需要,可以在 /etc/network/interfaces 文件中修改网关设置。在文件中添加以下配置行: gateway <网关IP地址> b) 使用命令设置 也可以使用命令来设置网关。在终端窗口中输入以下命令: # route add default gw <网关IP地址> 或者 # ip route add default via <网关IP地址> 其中,<网关IP地址> 为管理员手动指定的网关地址。 4.设置动态网关 动态网关是指路由器根据网络中的拓扑结构和路由协议自动选择的网关。大多数情况下,动态网关设置应该能够自动获取并配置好。如果系统未能自动获取,则需要手动设置,并使用以下命令检查其是否正确: $ ip route show 或者 $ netstat -nr 以上就是在 Linux 系统中设置网关的详细步骤及注意事项。在设置网关之前,需要了解网关的概念以及它在网络中的作用和特点。然后,可以使用不同的方法和命令来实现静态或动态网关配置。最后,需要再次检查路由表中的设置是否正确,以确保网络运行正常。 ### 回答3: 1. 网关的作用 网关是计算机网络中的重要设备,它主要用于连接两个不同的网络,将数据从一个网络传输到另一个网络。在同一网络中,不需要设置网关,而在不同的网络之间,网关就是数据传输的必要媒介。 2. Linux中设置网关的方法 在Linux中,设置网关的方法可以有多种,这里我们简单介绍几种常用的方法: (1)使用命令行设置 打开终端,输入以下命令: sudo route add default gw 192.168.1.1 其中,“192.168.1.1”是网关的IP地址,根据实际情况修改即可。这个命令会将默认路由添加到系统中,这样就可以通过网关连接到外部网络。 同时,也可以将这个命令添加到网络配置文件中,使其开机自动执行。打开/etc/rc.local文件,在末尾添加如下命令: route add default gw 192.168.1.1 (2)使用网络管理工具设置 在桌面环境下,我们也可以使用网络管理工具来设置网关。具体方法是: 在系统菜单中找到“System Settings(系统设置)”选项,点击进入; 在打开的窗口中找到“Network(网络)”选项,点击进入; 在“Network Connections(网络连接)”中找到对应的连接,点击编辑; 在编辑界面中,选择“IPv4 Settings(IPv4设置)”,在“Gateway(网关)”一项中输入网关的IP地址,保存即可。 3. 其他注意事项 设置网关时,需要注意以下几点: (1)网关的IP地址必须与网络中其他设备的IP地址在同一个网段内,否则无法正常通信; (2)网关的IP地址一般由网络管理员提供,如果自己设置,需要确保其正确性; (3)如果在同一网络中,无需设置网关,直接设置IP地址即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值