Не может правильно настроить шлюз на 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, подключенный к Интернету. 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

Но то, что я не могу понять, - то, почему только одна из двух зарубок работает правильно. В то время как этот сервер может говорить с LAN enp6s0, это не может соединиться с Интернетом.

Таким образом, я применяю этот маршрут к нему:

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

И дело идет, вернулся! Теперь сервер может соединиться с Интернетом, но становится недоступным для LAN.

Что я делаю неправильно?

0
задан 10 June 2018 в 22:15

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

Кроме того, вам потребуется маршрут для 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.

0
ответ дан 29 October 2019 в 04:01

Другие вопросы по тегам:

Похожие вопросы: