无法在 Ubuntu 16.04 上正确配置网关

无法在 Ubuntu 16.04 上正确配置网关

我正在尝试使用 Ubuntu 16.04 创建网关,我的服务器具有以下网卡:

enp4s0    Link encap:Ethernet  HWaddr 00:15:c5:f6:c0:36
          inet addr:192.168.0.101  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::215:c5ff:fef6:c036/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:5118 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3065 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:7474529 (7.4 MB)  TX bytes:254689 (254.6 KB)
          Interrupt:16

enp6s0    Link encap:Ethernet  HWaddr 00:08:54:31:8f:79
          inet addr:172.24.3.19  Bcast:172.24.3.255  Mask:255.255.252.0
          inet6 addr: fe80::208:54ff:fe31:8f79/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:7573 errors:0 dropped:334 overruns:0 frame:0
          TX packets:2756 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:756664 (756.6 KB)  TX bytes:881724 (881.7 KB)

enp4s0 是 WAN 网卡,连接到互联网。enp6s0 是 LAN 网卡。

我按如下方式配置它们/etc/network/interfaces

allow-hotplug enp4s0
iface enp4s0 inet dhcp

allow-hotplug enp6s0
iface enp6s0 inet static
address 172.24.3.19
netmask 255.255.252.0
gateway 172.24.0.1
dns-nameservers 172.24.3.1

enp4s0 收到的 ip 如下,摘自/var/lib/dhcp/dhclient.enp4s0.leases

lease {
  interface "enp4s0";
  fixed-address 192.168.0.101;
  option subnet-mask 255.255.255.0;
  option routers 192.168.0.1;
  option dhcp-lease-time 7200;
  option dhcp-message-type 5;
  option domain-name-servers 192.168.0.1,8.8.8.8;
  option dhcp-server-identifier 192.168.0.1;
  renew 5 2018/06/08 16:03:17;
  rebind 5 2018/06/08 16:59:19;
  expire 5 2018/06/08 17:14:19;
}

下列的Nairabytes.net,我应用了一些 iptables 规则,如下所示:

iptables -t nat -A POSTROUTING -o enp4s0 -j MASQUERADE
iptables -A FORWARD -i enp4s0 -o enp6s0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i enp6s0 -o enp4s0 -j ACCEPT

因此 iptables 规则变为如下形式:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

但我不明白为什么两个网卡中只有一个正常工作。虽然该服务器可以通过 enp6s0 与 LAN 通信,但它无法连接到互联网。

所以我将这条路线应用到它:

sudo /sbin/route add -net 0.0.0.0 gw 192.168.0.1 enp4s0

然后事情就恢复了!现在服务器可以连接到互联网,但无法访问 LAN。

我究竟做错了什么?

答案1

sudo /sbin/route add -net 0.0.0.0 gw 192.168.0.1 enp4s0

这将设置一条路线一切更改为 192.168.0.1。

您可能想要添加默认网关,这意味着任何不匹配任何其他特定路由的内容都会进入此处。这可以使用以下命令完成:

sudo ip route add default via 192.168.0.1 dev enp4s0

此外,您还需要另一个 NIC 上的 172.24.0.0/16 路由:

sudo ip route add -net 172.24.0.0/16 via 172.24.3.1 dev enp6s0

这将向您的本地 172.240.0/16 网络添加一条路由,使您能够访问此网络。由于这是一条更具体的路由,因此对于发往 172.24.0.0 的数据包,它将被默认选择。

相关内容