当前位置: 技术问答>linux和unix
如何用linux实现路由(双网卡共享上网)
来源: 互联网 发布时间:2015-12-21
本文导语: eth1 连接外网 有公网地址和网关地址 eth0 连接内网 分配其IP为192.168.0.2 已运行有squid,iptables /proc/sys/net/ipv4/ip_forward 也已经设为1 可以通过SQUID设置代理端口3128进行上网,但是希望开通路由功能,该怎么办呢? 希...
eth1 连接外网 有公网地址和网关地址
eth0 连接内网 分配其IP为192.168.0.2
已运行有squid,iptables
/proc/sys/net/ipv4/ip_forward 也已经设为1
可以通过SQUID设置代理端口3128进行上网,但是希望开通路由功能,该怎么办呢?
希望各位高手相助,谢谢!
eth0 连接内网 分配其IP为192.168.0.2
已运行有squid,iptables
/proc/sys/net/ipv4/ip_forward 也已经设为1
可以通过SQUID设置代理端口3128进行上网,但是希望开通路由功能,该怎么办呢?
希望各位高手相助,谢谢!
|
假设Linux的机器上只有两块网卡:
eth0:外部,你的4个公网地址是a.a.a.a~d.d.d.d,网关地址是x.x.x.x
eth1:内部,地址是:z.z.z.z
设置:/etc/sysconfig/network的内容为:
NETWORKING=yes
HOSTNAME=yourhostname
GATEWAY=x.x.x.x
GATEWAYDEV=eth0
然后创建子口的方式把四个公网地址分别配置到eth0,eth0:0,eth0:1,eth0:2,以eth0:2为例:
DEVICE=eth0:2
BOOTPROTO=static
BROADCAST=?.?.?.?
IPADDR=d.d.d.d
NETMASK=?.?.?.?
NETWORK=?.?.?.?
ONBOOT=yes
确定一个地址配置到eth1上,作为内部终端的网关地址
然后创建一个简单的iptables脚本
#!/bin/sh
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j SNAT --to-source a.a.a.a-d.d.d.d
要点:
在写nat规则时,指定做nat的是一个地址范围而不是单一一个地址,如果不是连续的地址,可以以空格分开写在--to-source后面
所有用作nat地址池内的地址必须是已经被配置到某个接口上,并且可以被访问到的。这和在某些路由设备上指定地址池是不一样的。
eth0:外部,你的4个公网地址是a.a.a.a~d.d.d.d,网关地址是x.x.x.x
eth1:内部,地址是:z.z.z.z
设置:/etc/sysconfig/network的内容为:
NETWORKING=yes
HOSTNAME=yourhostname
GATEWAY=x.x.x.x
GATEWAYDEV=eth0
然后创建子口的方式把四个公网地址分别配置到eth0,eth0:0,eth0:1,eth0:2,以eth0:2为例:
DEVICE=eth0:2
BOOTPROTO=static
BROADCAST=?.?.?.?
IPADDR=d.d.d.d
NETMASK=?.?.?.?
NETWORK=?.?.?.?
ONBOOT=yes
确定一个地址配置到eth1上,作为内部终端的网关地址
然后创建一个简单的iptables脚本
#!/bin/sh
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j SNAT --to-source a.a.a.a-d.d.d.d
要点:
在写nat规则时,指定做nat的是一个地址范围而不是单一一个地址,如果不是连续的地址,可以以空格分开写在--to-source后面
所有用作nat地址池内的地址必须是已经被配置到某个接口上,并且可以被访问到的。这和在某些路由设备上指定地址池是不一样的。
|
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -j MASQUERADE
|
用iptables就行了,一条语句
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -j MASQUERADE