无法在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 nic,连接到Internet。 enp6s0是LAN nic。

我在/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 

但我无法理解的是为什么只有两个nics中的一个正常工作。 虽然此服务器可以通过enp6s0与LAN通信,但它无法连接到Internet。

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

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

事情还原了! 现在服务器可以连接到互联网,但无法访问局域网。

我究竟做错了什么?

 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的数据包,它会被默认选中。