linux ip路由(linux修改网卡ip配置文件)
很多朋友对于linux ip路由和linux修改网卡ip配置文件不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!
linux加路由命令指定网卡linux加路由命令
LINUX下怎样加一条静态路由?
1、添加一条默认路由routeadddefaultgw10.0.0.1(默认只在内存中生效)开机自启动可以追加到/etc/rc.local文件里echo"routeadddefaultgw10.0.0.1">>/etc/rc.local2、添加一条静态路由routeadd-net192.168.2.0/24gw192.168.2.254要永久生效的话要这样做:echo"anynet192.168.2.0/24gw192.168.2.254">>/etc/sysconfig/static-routes添加到一台主机的静态路由routeadd-host192.168.2.2gw192.168.2.254要永久生效的话要这样做:echo"anyhost192.168.2.2gw192.168.2.254">>/etc/sysconfig/static-routes注:Linux默认没有这个文件,得手动创建一个
linux路由功能?
第一首先打开linux系统。然后创建三台虚拟机。
第二然后配置不同网段的ip地址。再利用ping检查连通效果。
第三然后进入到sysctl.conf目录。再开启系统的路由功能。
第四然后编辑net.ipv4.ip_forward=1。再编写iptables规则。
第五然后设置ip地址的网关。再route-n检查网关的情况。
第六然后测试三台虚拟的ip连通性。
再ping不同网段的ip地址,也是连通。
这就是实现linux系统的路由功能。
Linux-linux下用route命令怎么设置网关?
买一个4口交换机,连接电脑,专线和局域网。网卡上设置局域网IP、子网掩码和网管DNS之类的。然后测试一下,确保局域网工作正常。
为网卡添加专网IP,然后在管理员权限的cmd下,用route命令添加一条路由记录,把访问专线网段的请求指向专网的网关。route命令的用法参考route/?
linux路由表设置?
lan1和lan1的地址是各网段的网络号还是网络中某个终端的ip地址?
能说的详细一点么?比如子网掩码
linux路由目的地址配置?
目的地址可以配置固定地址,也可以配置地址段
Linux下的iptable实现nat网关。(DNS,DHCP,外网,内部局域网)
本文主要介绍如何使用iptbales实现linux2.4下的强大的NAT功能。关于iptables的详细语法请参考“用iptales实现包过虑型防火墙”一文。需要申明的是,本文绝对不是 NAT-HOWTO的简单重复或是中文版,在整个的叙述过程中,作者都在试图用自己的语言来表达自己的理解,自己的思想。
一、概述
1.什么是NAT
在传统的标准的TCP/IP通信过程中,所有的路由器仅仅是充当一个中间人的角色,也就是通常所说的存储转发,路由器并不会对转发的数据包进行修改,更为确切的说,除了将源MAC地址换成自己的MAC地址以外,路由器不会对转发的数据包做任何修改。NAT(Network Address Translation网络地址翻译)恰恰是出于某种特殊需要而对数据包的源ip地址、目的ip地址、源端口、目的端口进行改写的操作。
2.为什么要进行NAT
我们来看看再什么情况下我们需要做NAT。
假设有一家ISP提供园区Internet接入服务,为了方便管理,该ISP分配给园区用户的IP地址都是伪IP,但是部分用户要求建立自己的WWW服务器对外发布信息,这时候我们就可以通过NAT来提供这种服务了。我们可以在防火墙的外部网卡上绑定多个合法IP地址,然后通过NAT技术使发给其中某一个IP地址的包转发至内部某一用户的WWW服务器上,然后再将该内部WWW服务器响应包伪装成该合法IP发出的包。
再比如使用拨号上网的网吧,因为只有一个合法的IP地址,必须采用某种手段让其他机器也可以上网,通常是采用代理服务器的方式,但是代理服务器,尤其是应用层代理服务器,只能支持有限的协议,如果过了一段时间后又有新的服务出来,则只能等待代理服务器支持该新应用的升级版本。如果采用NAT来解决这个问题,
因为是在应用层以下进行处理,NAT不但可以获得很高的访问速度,而且可以无缝的支持任何新的服务或应用。
还有一个方面的应用就是重定向,也就是当接收到一个包后,不是转发这个包,而是将其重定向到系统上的某一个应用程序。最常见的应用就是和squid配合使用成为透明代理,在对http流量进行缓存的同时,可以提供对Internet的无缝访问。
3. NAT的类型
在linux2.4的NAT-HOWTO中,作者从原理的角度将NAT分成了两种类型,即源NAT(SNAT)和目的NAT(DNAT),顾名思义,所谓SNAT就是改变转发数据包的源地址,所谓DNAT就是改变转发数据包的目的地址。
二、原理
在“用iptales实现包过虑型防火墙”一文中我们说过,netfilter是Linux核心中一个通用架构,它提供了一系列的"表"(tables),每个表由若干"链"(chains)组成,而每条链中可以有一条或数条规则(rule)组成。并且系统缺省的表是"filter"。但是在使用NAT的时候,我们所使用的表不再是"filter",而是"nat"表,所以我们必须使用"-t nat"选项来显式地指明这一点。因为系统缺省的表是"filter",所以在使用filter功能时,我们没有必要显式的指明"-t filter"。
同filter表一样,nat表也有三条缺省的"链"(chains),这三条链也是规则的容器,它们分别是:
PREROUTING:可以在这里定义进行目的NAT的规则,因为路由器进行路由时只检查数据包的目的ip地址,所以为了使数据包得以正确路由,我们必须在路由之前就进行目的NAT;
POSTROUTING:可以在这里定义进行源NAT的规则,系统在决定了数据包的路由以后在执行该链中的规则。
OUTPUT:定义对本地产生的数据包的目的NAT规则。
三、操作语法
如前所述,在使用iptables的NAT功能时,我们必须在每一条规则中使用"-t nat"显示的指明使用nat表。然后使用以下的选项:
1.对规则的操作
加入(append)一个新规则到一个链(-A)的最后。
在链内某个位置插入(insert)一个新规则(-I),通常是插在最前面。
在链内某个位置替换(replace)一条规则(-R)。
在链内某个位置删除(delete)一条规则(-D)。
删除(delete)链内第一条规则(-D)。
2.指定源地址和目的地址
通过——source/——src/-s来指定源地址(这里的/表示或者的意思,下同),通过——destination/——dst/-s来指定目的地址。可以使用以下四中方法来指定ip地址:
a.使用完整的域名,如“www.linuxaid.com.cn”;
b.使用ip地址,如“192.168.1.1”;
c.用x.x.x.x/x.x.x.x指定一个网络地址,如“192.168.1.0/255.255.255.0”;
d.用x.x.x.x/x指定一个网络地址,如“192.168.1.0/24”这里的24表明了子网掩码的有效位数,这是 UNIX环境中通常使用的表示方法。
缺省的子网掩码数是32,也就是说指定192.168.1.1等效于192.168.1.1/32。
3.指定网络接口
可以使用——in-interface/-i或——out-interface/-o来指定网络接口。从NAT的原理可以看出,对于PREROUTING链,我们只能用-i指定进来的网络接口;而对于POSTROUTING和OUTPUT我们只能用-o指定出去的网络接口。
4.指定协议及端口
可以通过——protocol/-p选项来指定协议,如果是udp和tcp协议,还可——source-port/——sport和——destination-port/——dport来指明端口。
四、准备工作
1.编译内核,编译时选中以下选项,具体可参看“用iptales实现包过虑型防火墙”一文:
Full NAT
MASQUERADE target support
REDIRECT target support
2.要使用NAT表时,必须首先载入相关模块:
modprobe ip_tables
modprobe ip_nat_ftp
iptable_nat模块会在运行时自动载入。
五、使用实例
1.源NAT(SNAT)
比如,更改所有来自192.168.1.0/24的数据包的源ip地址为1.2.3.4:
iptables-t nat-A POSTROUTING-s 192.168.1.0/24-o eth0-j SNAT——to 1.2.3.4
这里需要注意的是,系统在路由及过虑等处理直到数据包要被送出时才进行SNAT。
有一种SNAT的特殊情况是ip欺骗,也就是所谓的Masquerading,通常建议在使用拨号上网的时候使用,或者说在合法ip地址不固定的情况下使用。比如
# iptables-t nat-A POSTROUTING-o ppp0-j MASQUERADE
可以看出,这时候我们没有必要显式的指定源ip地址等信息。
2.目的SNAT(DNAT)
比如,更改所有来自192.168.1.0/24的数据包的目的ip地址为1.2.3.4:
iptables-t nat-A PREROUTING-s 192.168.1.0/24-i eth1-j DNAT——to 1.2.3.4
这里需要注意的是,系统是先进行DNAT,然后才进行路由及过虑等操作。
有一种DNAT的特殊情况是重定向,也就是所谓的Redirection,这时候就相当于将符合条件的数据包的目的ip地址改为数据包进入系统时的网络接口的ip地址。通常是在与squid配置形成透明代理时使用,假设squid的监听端口是3128,我们可以通过以下语句来将来自192.168.1.0/24,目的端口为80的数据包重定向到squid监听
端口:
iptables-t nat-A PREROUTING-i eth1-p tcp-s 192.168.1.0/24——dport 80
-j REDIRECT——to-port 3128
六、综合例子
1.使用拨号带动局域网上网
小型企业、网吧等多使用拨号网络上网,通常可能使用代理,但是考虑到成本、对协议的支持等因素,建议使用ip欺骗方式带动区域网上网。
成功升级内核后安装iptables,然后执行以下脚本:
#载入相关模块
modprobe ip_tables
modprobe ip_nat_ftp
#进行ip伪装
iptables-t nat-A POSTROUTING-o ppp0-j MASQUERADE
2. ip映射
假设有一家ISP提供园区Internet接入服务,为了方便管理,该ISP分配给园区用户的IP地址都是伪IP,但是部分用户要求建立自己的WWW服务器对外发布信息。我们可以再防火墙的外部网卡上绑定多个合法IP地址,然后通过ip映射使发给其中某一个IP地址的包转发至内部某一用户的WWW服务器上,然后再将该内部WWW服务器响应包伪装成该合法IP发出的包。
我们假设以下情景:
该ISP分配给A单位www服务器的ip为:
伪ip:192.168.1.100
真实ip:202.110.123.100
该ISP分配给B单位www服务器的ip为:
伪ip:192.168.1.200
真实ip:202.110.123.200
linux防火墙的ip地址分别为:
内网接口eth1:192.168.1.1
外网接口eth0:202.110.123.1
然后我们将分配给A、B单位的真实ip绑定到防火墙的外网接口,以root权限执行以下命令:
ifconfig eth0 add 202.110.123.100 netmask 255.255.255.0
ifconfig eth0 add 202.110.123.200 netmask 255.255.255.0
成功升级内核后安装iptables,然后执行以下脚本:
#载入相关模块
modprobe ip_tables
modprobe ip_nat_ftp
首先,对防火墙接收到的目的ip为202.110.123.100和202.110.123.200的所有数据包进行目的NAT(DNAT):
iptables-A PREROUTING-i eth0-d 202.110.123.100-j DNAT——to 192.168.1.100
iptables-A PREROUTING-i eth0-d 202.110.123.200-j DNAT——to 192.168.1.200
其次,对防火墙接收到的源ip地址为192.168.1.100和192.168.1.200的数据包进行源NAT(SNAT):
iptables-A POSTROUTING-o eth0-s 192.168.1.100-j SNAT——to 202.110.123.100
iptables-A POSTROUTING-o eth0-s 192.168.1.200-j SNAT——to 202.110.123.200
这样,所有目的ip为202.110.123.100和202.110.123.200的数据包都将分别被转发给192.168.1.100和192.168.1.200;而所有来自192.168.1.100和192.168.1.200的数据包都将分别被伪装成由202.110.123.100和202.110.123.200,从而也就实现了ip映射。
如何理解ip路由和操作linux的路由表
路由其实就是选择一条数据包传输路径的过程,也就是说主机怎么向它的目的地顺利发送数据的过程。当TCP/IP主机发送IP数据包时,便出现了路由,且当到达IP路由器时还会再次出现。路由器是从一个物理网向另一个物理网发送数据包的装置,路由器通常被称为网关,它承但着分发数据包的任务。对于发送的主机和路由器而言,必须决定向哪里转发数据包。在决定路由时,IP层查询位于内存中的路由表,然后根据查询规则,进行ip路由。是不是很抽象?用我的话说吧,也就是下面要讨论的问题。
先说如何选路:
(1)当一个主机试图与另一个主机通信时,IP首先决定目的主机是一个内网还是外网,怎么确定?当然使用网络号。
(2)如果是是同一内网,那就就是直接发送了,这个最简答不过了。
(3)如果目的主机是和发送主机不在同一个内网,也就是在外网了,^_^很啰嗦,IP将查询路由表来为外网主机或外网选择一个路由,所以一般情况下有可能为某个外网指定特定的路由,具体问题稍后分析。
(4)若未找到明确的路由,此时在路由表中还会有默认网关,也可称为缺省网关,IP用缺省的网关地址将一个数据传送给下一个指定的路由器,所以网关也可能是路由器,也可能只是内网向特定路由器传输数据的网关。
(4)在该路由器收到数据后,它再次为远程主机或网络查询路由,若还未找到路由,该数据包将发送到该路由器的缺省网关地址。
每发现一条路由,数据包被转送下一级路由器,称为一次“跳步”,按照同样的方式进行转发,并最终发送至目的主机。若未发现任何一个路由可以接受此次ip包的地址,发送主机将收到一个出错信息,也就是说其中任何一跳出现了不可到达,最后的结果也就是报错了。
上面只是个人的一些理解,事实上当时我们做的实验不少,但是看看tcp/ip详解后,就可以一目了然了,现在以linux下的路由表为例说明一下:
$ sudo route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.100.0* 255.255.255.0 U 0 0 0 eth1
192.168.10.0* 255.255.254.0 U 0 0 0 eth0
default 192.168.10.1 0.0.0.0 UG 0 0 0 eth0
--------------------------------------------------------------------------------------
IP路由选择是逐跳地(hop-by-hop)进行的。从这个路由表信息可以看出,IP并不知道到达任何目的的完整路径(当然,除了那些与主机直接相连的目的)。所有的IP路由选择只为数据报传输提供下一站路由器的IP地址。它假定下一站路由器比发送数据报的主机更接近目的,而且下一站路由器与该主机是直接相连的。
IP路由选择主要完成以下这些功能:
1)搜索路由表,寻找能与目的IP地址完全匹配的表目(网络号和主机号都要匹配)。如果找到,则把报文发送给该表目指定的下一站路由器或直接连接的网络接口(取决于标志字段的值)。
2)搜索路由表,寻找能与目的网络号相匹配的表目。如果找到,则把报文发送给该表目指定的下一站路由器或直接连接的网络接口(取决于标志字段的值)。目的网络上的所有主机都可以通过这个表目来处置。例如,一个以太网上的所有主机都是通过这种表目进行寻径的。这种搜索网络的匹配方法必须考虑可能的子网掩码。关于这一点我们在下一节中进行讨论。
3)搜索路由表,寻找标为“默认(default)”的表目。如果找到,则把报文发送给该表目指定的下一站路由器。如果上面这些步骤都没有成功,那么该数据报就不能被传送。如果不能传送的数据报来自本机,那么一般会向生成数据报的应用程序返回一个“主机不可达”或“网络不可达”的错误。
完整主机地址匹配在网络号匹配之前执行。只有当它们都失败后才选择默认路由。默认路由,以及下一站路由器发送的ICMP间接报文(如果我们为数据报选择了错误的默认路由),是IP路由选择机制中功能强大的特性。
以上的解释都很清楚了,不用再详细解释怎么走了,如果你实在还不能理解的话,去看tcp/ip详解吧。顺便解释一下上面的output内容:
The output of the kernel routing table is organized in the following columns
Destination
The destination network or destination host.
Gateway
The gateway address or'*' if none set.
Genmask
The netmask for the destination net;'255.255.255.255' for a host destination and'0.0.0.0' for the default route.
Flags Possible flags include
U(route is up)
H(target is a host)
G(use gateway)
R(reinstate route for dynamic routing)
D(dynamically installed by daemon or redirect)
M(modified from routing daemon or redirect)
A(installed by addrconf)
C(cache entry)
!(reject route)
Metric The'distance' to the target(usually counted in hops). It is not used by recent kernels, but may be needed by
routing daemons.
Ref Number of references to this route.(Not used in the Linux kernel.)
Use Count of lookups for the route. Depending on the use of-F and-C this will be either route cache misses(-F) or
hits(-C).
Iface Interface to which packets for this route will be sent.
MSS Default maximum segment size for TCP connections over this route.
Window Default window size for TCP connections over this route.
irtt Initial RTT(Round Trip Time). The kernel uses this to guess about the best TCP protocol parameters without wait-
ing on(possibly slow) answers.
HH(cached only)
The number of ARP entries and cached routes that refer to the hardware header cache for the cached route. This
will be-1 if a hardware address is not needed for the interface of the cached route(e.g. lo).
Arp(cached only)
Whether or not the hardware address for the cached route is up to date
同时在freebsd上使用netstat-nr打印路由表,也顺便提示一下。
现在问题在如何操作路由表,因为ip的选路全靠它吃饭了,怎么为一个特定的网络或者主机选择一条特定的路由?如何删除路由?这些问题对于网络维护和系统管理也尤为重要:
还是以上面的路由表为例,建议使用前先man route查看方法,或许各个系统略有差异,下面是以debian为例,由于是测试,所以使用sudo,而不是root权限:
1、为某主机添加路由
$ sudo route add–host 192.168.10.58 dev eth1
//所有通向192.168.10.58的数据都是用eth1网卡
$ sudo route add–host 192.168.11.58 gw 192.168.10.1
//通向192.168.11.58的数据使用网关192.168.10.1
不经意间做了一个验证实验:由于eth1是没有启动的,所以添加这个路由后,192.168.10.58不可ping通
初始路由表
sudo route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.100.0* 255.255.255.0 U 0 0 0 eth1
192.168.10.0* 255.255.254.0 U 0 0 0 eth0
default 192.168.10.1 0.0.0.0 UG 0 0 0 eth0
----------------------------------------------------------------------------
可以ping通192.168.10.58
$ ping 192.168.10.58
PING 192.168.10.58(192.168.10.58) 56(84) bytes of data.
64 bytes from 192.168.10.58: icmp_seq=1 ttl=64 time=0.188 ms
-----------------------------------------------------------------------------
添加192.168.10.58的路由
$ sudo route add-host 192.168.10.58 dev eth1
$ sudo route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.10.58* 255.255.255.255 UH 0 0 0 eth1
192.168.100.0* 255.255.255.0 U 0 0 0 eth1
192.168.10.0* 255.255.254.0 U 0 0 0 eth0
default 192.168.10.1 0.0.0.0 UG 0 0 0 eth0
----------------------------------------------------------------------------
由于eth0无法使用了,所以发给eth1,就等于丢入黑洞之中
$ ping 192.168.10.58
PING 192.168.10.58(192.168.10.58) 56(84) bytes of data.
--- 192.168.10.58 ping statistics---
2 packets transmitted, 0 received, 100% packet loss, time 1010ms
----------------------------------------------------------------------------
指定给网关处理
$ sudo route add-host 192.168.10.58 gw 192.168.10.1
$ sudo route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.10.58 192.168.10.1 255.255.255.255 UGH 0 0 0 eth0
192.168.10.58* 255.255.255.255 UH 0 0 0 eth1
192.168.100.0* 255.255.255.0 U 0 0 0 eth1
192.168.10.0* 255.255.254.0 U 0 0 0 eth0
default 192.168.10.1 0.0.0.0 UG 0 0 0 eth0
----------------------------------------------------------------------------
要经过网关了,验证了路由表的作用
$ ping 192.168.10.58
PING 192.168.10.58(192.168.10.58) 56(84) bytes of data.
From 192.168.10.1: icmp_seq=1 Redirect Network(New nexthop: 192.168.10.58)
64 bytes from 192.168.10.58: icmp_seq=1 ttl=64 time=1.02 ms
----------------------------------------------------------------------------
废话少说了,同理为某网路添加路由和删除路由如下所示:经过测试有效:
2、为某网络的添加路由
$ sudo route add–net 220.181.8.0/24 dev eth0
$ sudo route add–net 220.181.8.0/24 gw 192.168.10.1
3、添加默认网关
$ sudo route add default gw 192.168.10.1
4、删除路由,
$ sudo route del–host 192.168.168.110 dev eth0
可能你会遇到删除时候语法错误,请参看路由表的Flags,路由上面的第一条,G表示设定了网关,H表示操作了主机,所以就用$ sudo route del-host 192.168.10.58 gw 192.168.10.1删除,更详细的请man。
使用route命令添加的路由,机器重启或者网卡重启后路由就失效了,和iptables一样,需要永久添加的话,也是使用开机执行,所以可以用以下方法添加永久路由:
1.在/etc/rc.local里添加执行命令,进行开机执行,因为是root权限,所以不用sudo了:
route add–net 220.181.8.0/24 dev eth0
route add–net 220.181.9.0/24 gw 192.168.10.1
2.在/etc/sysconfig/network里添加到末尾
方法:GATEWAY=gw-ip或者 GATEWAY=gw-dev
3./etc/sysconfig/static-router:
any net x.x.x.x/24 gw y.y.y.y