客户端获取 LAN IP 但无法上网

客户端获取 LAN IP 但无法上网

我偶然发现了一个相当具体的问题,但我没有知识可以自己解决它。我设置了一个 Ubuntu 服务器 (16.04.2),它将充当路由器。到目前为止,我已经配置了两个网络接口,WAN 和 LAN。DNS 也正常工作,客户端获取本地 IP 地址但无法访问互联网,这可能是由于防火墙规则配置错误造成的。注意:端口转发也已启用。

配置文件

enp0s3    Link encap:Ethernet  
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:28 errors:0 dropped:0 overruns:0 frame:0
          TX packets:36 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 

enp0s8    Link encap:Ethernet
          inet addr:192.168.0.1  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2190 errors:0 dropped:0 overruns:0 frame:0
          TX packets:41 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 

接口

#WAN
auto enp0s3
iface enp0s3 inet dhcp

#LAN
auto enp0s8
iface enp0s8 inet static
    address 192.168.0.1
    network 192.168.0.0
    netmask 255.255.255.0
    broadcast 192.168.0.255

路由

Destination     Gateway         Genmask         Flags Metric Ref    Use 
Iface
0.0.0.0         10.0.2.2        0.0.0.0         UG    0      0        0 enp0s3
10.0.2.0        0.0.0.0         255.255.255.0   U     0      0        0 enp0s3
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 enp0s8

Iptables -L -v&Iptables -t nat -L -v

Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out    source   destination
    0     0 ACCEPT     all  --  lo     any    anywhere anywhere
    3   704 ACCEPT     all  --  enp0s8 any    anywhere anywhere
   12   997 ACCEPT     all  --  enp0s3 any    anywhere anywhere    ctstate RELATED,ESTABLISHED

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out    source   destination
    0   0   ACCEPT     all  --  enp0s8 enp0s3 anywhere anywhere
    0   0   ACCEPT     all  --  enp0s3 enp0s8 anywhere anywhere     ctstate RELATED,ESTABLISHED

Chain OUTPUT (policy ACCEPT 12 packets, 904 bytes)
 pkts bytes target     prot opt in     out    source   destination

Chain POSTROUTING (policy ACCEPT 1 packets, 48 bytes)
 pkts bytes target     prot opt in     out    source   destination
    7   520 MASQUERADE  all --  any    enp0s3 anywhere anywhere

rc.本地

我使用 rc.local 文件在启动后使用这些行。

iptables -P INPUT DROP
iptables -P FORWARD DROP

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i enp0s8 -j ACCEPT

iptables -A INPUT -i enp0s3 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i enp0s8 -o enp0s3 -j ACCEPT
iptables -A FORWARD -i enp0s3 -o enp0s8 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE

客户端 ifconfig

enp0s3    flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
          inet 192.168.0.100 netmask 255.255.255.0 broadcast 192.168.0.255
          RX packets 8
          RX errors 0 dropped 0 overruns 0 frame 0
          TX packets 221
          TX errors 0 dropped 0 overrunes 0 carrier 0 collisions 0

有人能帮我解释一下我遗漏了什么吗?我不得不从几个终端输入所有内容,所以可能会有错误。如果有必要,我会继续进行更正。

致谢!

答案1

您似乎有很多拼写错误。或者,如果它们不是拼写错误,那么它们就是您配置中的错误,这可以部分解释为什么事情对您来说无法正常工作。为了获得有意义的帮助,最好复制并粘贴文件内容或命令结果,而不是尝试在问题中输入所有内容。

我认为您的基本问题是您没有正确配置机器以使其作为路由器运行。要用作双网卡“路由器”,LAN 上所有流量的默认网关都需要转到 WAN IP,在您的情况下,WAN IP 似乎是 enp0s3。

还请注意,根据定义,10.xxx(和 192.168.0.0/16)IP 地址是不可路由的。我期望路由器面向 Internet 的子网会有一个注册的 IP 地址,除非它的流量位于所有流量都进入另一个调制解调器或路由器的子网上。

假设我看到的您发布内容中的错误确实是拼写错误而不是配置错误,那么您构建的内容似乎更像是桥接器/数据包转发器而不是路由器。您配置的 WAN 看起来更像是另一个 LAN 子网,因此我对流量无法进入互联网并不感到惊讶。

由于您尚未安装任何路由器软件,并且路由器通常至少有三个接口(不包括 DMZ),因此您将通过路由表控制配置中的所有路由。您可以使用以下命令添加路由

route add

使用起来非常简单,如果你犯了错误,你可以用命令删除路线

route del 

此命令的手册页相对来说一目了然。如果不知道您的计算机如何实际连接到互联网,我无法提供可行配置的示例。

这是一种过于简单的说法,但基本上,enp0s3 是一个可从 Internet 访问的 C 类 IP 地址。enp0s8 是一个您自己发明的子网(例如 192.168.0.1/24),其中分配给 enp0s3 的 IP 地址是默认网关。

您可以通过输入以下内容来验证您的路由表

route -n

相关内容