请教ubuntu14.04做网关让局域网共享服务器上网的方法(各位大神帮我分析一下)

Web、Mail、Ftp、DNS、Proxy、VPN、Samba、LDAP 等基础网络服务
mayaren888
帖子: 17
注册时间: 2011-07-19 10:05
送出感谢: 0
接收感谢: 0

请教ubuntu14.04做网关让局域网共享服务器上网的方法(各位大神帮我分析一下)

#1

帖子 mayaren888 » 2014-07-28 9:33

一、实际情况和需求:
家里有一条固定IP的光纤线路
ubuntu14.04server 服务器一台(双网卡)
无线路由器一个
工作站和手机有很多台。
请问服务器如何制作DHCP+网关 让工作站和手机进行上网?

二、目前的进展
昨天设置这台服务器耗费了好几个小时,但是没有成功,说一下昨天工作的成果
1、设置eth0和eth1两个网卡的IP地址
eth0为对外网的网卡,eth1是对内局域网的网卡
我的设置如下:
auto eth0
iface eth0 inet static
address 202.XX.XX.XXX
gateway 202.XX.XX.XXX
netmask 255.255.255.128
dns-nameservers 114.114.114.114 8.8.8.8

auto eth1
iface eth1 inet static
address 172.16.1.1
netmask 255.255.255.0

目前服务器可以正常上网,局域网内的客户电脑可以ping通172.16.1.1的网卡。

2、设置IP转发
修改/etc/sysctl.conf,添加这一行:
net.ipv4.ip_forward= 1

3、然后我设置了Iptables根据网上的教程设置如下:

iptables -F
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o eth0 -j MASQUERADE

4、以上设置完毕以后重新启动系统

5、设置客户端IP地址
ip:172.16.1.5
子掩码:255.255.255.0
网关:172.16.1.1
DNS:172.16.1.1


问题就是客户端无法上网,请问各位大神,我是在哪个环节上出错了呢?
kingbo_gentoo
帖子: 7
注册时间: 2012-01-12 9:29
送出感谢: 0
接收感谢: 0

Re: 请教ubuntu14.04做网关让局域网共享服务器上网的方法(各位大神帮我分析一下)

#2

帖子 kingbo_gentoo » 2014-07-28 9:58

家里一个路由器就解决 了,谁还用网关服务器?是单位吧?
mayaren888
帖子: 17
注册时间: 2011-07-19 10:05
送出感谢: 0
接收感谢: 0

Re: 请教ubuntu14.04做网关让局域网共享服务器上网的方法(各位大神帮我分析一下)

#3

帖子 mayaren888 » 2014-07-28 10:05

kingbo_gentoo 写了:家里一个路由器就解决 了,谁还用网关服务器?是单位吧?
因为这是一条固定IP光纤,想对外开一些服务的,但是又不想影响家人的上网。所以必须这么做。
kingbo_gentoo
帖子: 7
注册时间: 2012-01-12 9:29
送出感谢: 0
接收感谢: 0

Re: 请教ubuntu14.04做网关让局域网共享服务器上网的方法(各位大神帮我分析一下)

#4

帖子 kingbo_gentoo » 2014-07-28 11:05

我用的EA6500+dd-wrt解决问题,省电,网站+文件服务+。。。基本功都能够用,没必要开个费电的服务器
kingbo_gentoo
帖子: 7
注册时间: 2012-01-12 9:29
送出感谢: 0
接收感谢: 0

Re: 请教ubuntu14.04做网关让局域网共享服务器上网的方法(各位大神帮我分析一下)

#5

帖子 kingbo_gentoo » 2014-07-28 11:07

就算你用服务器,路由开个端口转换不也是轻松的很?
kingbo_gentoo
帖子: 7
注册时间: 2012-01-12 9:29
送出感谢: 0
接收感谢: 0

Re: 请教ubuntu14.04做网关让局域网共享服务器上网的方法(各位大神帮我分析一下)

#6

帖子 kingbo_gentoo » 2014-07-28 11:09

想企业级服务应用?
kingbo_gentoo
帖子: 7
注册时间: 2012-01-12 9:29
送出感谢: 0
接收感谢: 0

Re: 请教ubuntu14.04做网关让局域网共享服务器上网的方法(各位大神帮我分析一下)

#7

帖子 kingbo_gentoo » 2014-07-28 11:11

你的iptables要加个eth1转发
mayaren888
帖子: 17
注册时间: 2011-07-19 10:05
送出感谢: 0
接收感谢: 0

Re: 请教ubuntu14.04做网关让局域网共享服务器上网的方法(各位大神帮我分析一下)

#8

帖子 mayaren888 » 2014-07-28 12:16

kingbo_gentoo 写了:就算你用服务器,路由开个端口转换不也是轻松的很?
家里普通的路由器 数据吞吐量根本不行。因为这台服务器要跑的程序比较大。所以我才这么来弄的。
mayaren888
帖子: 17
注册时间: 2011-07-19 10:05
送出感谢: 0
接收感谢: 0

Re: 请教ubuntu14.04做网关让局域网共享服务器上网的方法(各位大神帮我分析一下)

#9

帖子 mayaren888 » 2014-07-28 12:18

kingbo_gentoo 写了:你的iptables要加个eth1转发
我看了一些教程中说 iptables 中的nat 要 nat到 外网的网卡上,所以我上面的那个是iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o eth0 -j MASQUERADE
mayaren888
帖子: 17
注册时间: 2011-07-19 10:05
送出感谢: 0
接收感谢: 0

Re: 请教ubuntu14.04做网关让局域网共享服务器上网的方法(各位大神帮我分析一下)

#10

帖子 mayaren888 » 2014-07-28 19:58

问题好像还是存在于内网卡与外网卡之间的IP转发。 我在启动文件中加入两条路由也未能解决此问题。
#route add -net 172.16.1.0 netmask 255.255.255.0 eth1
#route add -net 202.XX.XX.0 netmask 255.255.255.0 eth0
我的客户机是win7系统ip:172.16.1.5
ping 172.16.1.1 通过
ping 接外网的那个网卡能ping通
在本机用tracert www.163.com 显示:无法解析目标系统名称。
mayaren888
帖子: 17
注册时间: 2011-07-19 10:05
送出感谢: 0
接收感谢: 0

Re: 请教ubuntu14.04做网关让局域网共享服务器上网的方法(各位大神帮我分析一下)

#11

帖子 mayaren888 » 2014-07-28 20:25

我在服务器下运行
/$ sudo iptables -L -nv
Chain INPUT (policy ACCEPT 2440 packets, 173K bytes)
pkts bytes target prot opt in out source destination

Chain FORWARD (policy ACCEPT 1178 packets, 82711 bytes)
pkts bytes target prot opt in out source destination

Chain OUTPUT (policy ACCEPT 1650 packets, 134K bytes)
pkts bytes target prot opt in out source destination


是不是iptables 没有启动呢?
mayaren888
帖子: 17
注册时间: 2011-07-19 10:05
送出感谢: 0
接收感谢: 0

Re: 请教ubuntu14.04做网关让局域网共享服务器上网的方法(各位大神帮我分析一下)

#12

帖子 mayaren888 » 2014-07-28 20:26

执行
$ iptables -L
显示如下:
iptables v1.4.21: can't initialize iptables table `filter': Permission denied (you must be root)
Perhaps iptables or your kernel needs to be upgraded.
poloshiao
论坛版主
帖子: 18280
注册时间: 2009-08-04 16:33
送出感谢: 21 次
接收感谢: 1957 次

Re: 请教ubuntu14.04做网关让局域网共享服务器上网的方法(各位大神帮我分析一下)

#13

帖子 poloshiao » 2014-07-28 22:11

iptables -L
sudo iptables -L -n -v
abbott
帖子: 435
注册时间: 2007-07-11 22:45
送出感谢: 0
接收感谢: 0

Re: 请教ubuntu14.04做网关让局域网共享服务器上网的方法(各位大神帮我分析一下)

#14

帖子 abbott » 2014-09-04 8:07

提供一个我的使用案例. 仅供参考.
在CentOS 6, Ubuntu 14.04, Debian7, CentOS 5, RHEL 5/6都可用.

以下是我的具体案例, 请依据你的实际情况修改.

网络拓扑:
Gateway / NAT server,
eth0 --- public internet 59.72.122.110 netmask 255.255.255.0 gateway 59.72.122.254
eth1 --- private network 192.9.200.200 netmask 255.255.255.0 gateway 192.9.200.254
eth1 链接一个私有的交换机或者集线器, 其他的机器, 包括无线路由器, 链接该交换机或者集线器, 192.9.200.254是eth1所链接的交换机的网关地址.

在Gateway / NAT server上设定.

先设定Gateway / NAT server上的两个网络.
#### The private network runs on interface eth1
#### The public network runs on interface eth0

EXTIF="eth0"
INIF="eth1"
export INIF EXTIF

### shutdown all interfaces.
ifconfig eth0 down
ifconfig eth1 down
ifconfig eth2 down
ifconfig eth3 down

### public
ifconfig $EXTIF hw ether 00:11:B0:19:89:64
ifconfig $EXTIF 59.72.122.110 netmask 255.255.255.0

### private
ifconfig $INIF 192.9.200.200 netmask 255.255.255.0


### Bring up the two interfaces
ifconfig $EXTIF up
ifconfig $INIF up

### configure the route table
route add -net 192.9.0.0 netmask 255.255.0.0 gw 192.9.200.254 dev $INIF
route add default gw 59.72.122.254 dev $EXTIF

####EOF
请酌情修改.

####BOF
#!/bin/bash

EXTIF="eth0"
INIF="eth1"
INNET="192.9.200.0/24"
export INIF EXTIF INNET

### For NAT Gateway
# Starting NAT Server
echo "1" > /proc/sys/net/ipv4/ip_forward

### Flush the original rules
/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -Z
/sbin/iptables -F -t nat
/sbin/iptables -X -t nat
/sbin/iptables -Z -t nat

# Set Default Rules
/sbin/iptables -P INPUT ACCEPT
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -P FORWARD DROP
/sbin/iptables -t nat -P PREROUTING ACCEPT
/sbin/iptables -t nat -P POSTROUTING ACCEPT
/sbin/iptables -t nat -P OUTPUT ACCEPT

### No extra control
### All Forward from the private INNET is allowed.

### Accept all the Forward request form $INIF
/sbin/iptables -A FORWARD -i $INIF -j ACCEPT

/sbin/iptables -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE
/sbin/iptables -t nat -A POSTROUTING -o $INIF -j MASQUERADE


### Forward chain

### Allow vpn client to access private network
/sbin/iptables -A FORWARD -i ppp+ -o $INIF -j ACCEPT
/sbin/iptables -A FORWARD -i $INIF -o ppp+ -j ACCEPT

### Allow vpn client to access pub network
/sbin/iptables -A FORWARD -i ppp+ -o $EXTIF -j ACCEPT
/sbin/iptables -A FORWARD -i $EXTIF -o ppp+ -j ACCEPT
###

# the following two lines Enable iptables work in High Efficiency
/sbin/iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

### EOF####



抱歉, 我不会使用ipbtale指令, 就写了这个简单的脚本, 开机自己运行.
如果你没有vpn服务, 请忽略ppp+相关的设定.
如果你有其他安全要求, 请修改INPUT为DROP, 然后逐条开放.


客户机上的设定:
IP和eth1保持一个地址段, 但是记得网关指定为Gateway /NAT server上的eth1的IP地址.


无线路由器上, 设定WLAN端口IP后, 指定网关是192.9.200.200, 在LAN上开启DHCP.

其他台式机, 如何开启DHCP, 我自己没有处理, 我想你需要在Gateway /NAT server上开起DHCP服务就可以了.
但是记得要推送网关为你的eth1的IP地址.


以上东西写的很丑,
不过在我这里能用.

如有错误,
请指出.
xmjz
帖子: 8
注册时间: 2011-04-17 17:05
送出感谢: 0
接收感谢: 0

Re: 请教ubuntu14.04做网关让局域网共享服务器上网的方法(各位大神帮我分析一下)

#15

帖子 xmjz » 2015-01-20 15:59

建议采用shorewall(www.shorewall.net)和hostap,可以提供网关和无线AP功能
回复

回到 “服务器基础应用”