Я пытаюсь настроить сервер ubuntu в качестве маршрутизатора. Это моя конфигурация интерфейса (eth2 подключается к моей WAN, eth0 - к моей LAN):
auto eth2
iface eth2 inet static
address 192.168.0.249
netmask 255.255.255.0
gateway 192.168.0.1
broadcast 192.168.0.255
auto eth0
iface eth0 inet static
address 192.168.100.1
netmask 255.255.255.0
Это информация о роутере:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.100.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2
0.0.0.0 192.168.0.1 0.0.0.0 UG 100 0 0 eth2
А это конфигурация dhcp:
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.101 192.168.100.254;
option domain-name-servers 201.70.86.133;
option routers 192.168.100.1;
authoritative;
}
Затем я подключаю Mac OS X кабелем к eth0. Это конфигурация интерфейса en0:
en0: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
ether 00:26:bb:5d:82:b0
inet6 fe80::226:bbff:fe5d:82b0%en0 prefixlen 64 scopeid 0x4
inet 192.168.100.101 netmask 0xffffff00 broadcast 192.168.100.255
media: autoselect (100baseTX <full-duplex>)
status: active
А это таблица маршрутизации:
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.100.1 UGSc 139 32 en0
10.37.129/24 link#8 UC 2 0 vnic1
10.37.129.2 0:1c:42:0:0:9 UHLWI 0 839 lo0
10.37.129.255 ff:ff:ff:ff:ff:ff UHLWbI 0 4 vnic1
10.211.55/24 link#7 UC 2 0 vnic0
10.211.55.2 0:1c:42:0:0:8 UHLWI 0 840 lo0
10.211.55.255 ff:ff:ff:ff:ff:ff UHLWbI 0 4 vnic0
127 127.0.0.1 UCS 0 0 lo0
127.0.0.1 127.0.0.1 UH 3 507924 lo0
169.254 link#4 UCS 0 0 en0
172.16.42/24 link#10 UC 2 0 vmnet8
172.16.42.1 0:50:56:c0:0:8 UHLWI 0 839 lo0
172.16.42.255 link#10 UHLWbI 1 24 vmnet8
192.168.100 link#4 UC 2 0 en0
192.168.100.1 0:e0:7c:7e:f:99 UHLWI 139 0 en0 777
192.168.100.101 127.0.0.1 UHS 0 0 lo0
192.168.100.255 ff:ff:ff:ff:ff:ff UHLWbI 0 4 en0
192.168.116 link#9 UC 2 0 vmnet1
192.168.116.1 0:50:56:c0:0:1 UHLWI 0 839 lo0
192.168.116.255 ff:ff:ff:ff:ff:ff UHLWbI 0 4 vmnet1
Мой net.ipv4.ip_forward настроен, а iptables не имеет определенного правила.
Когда я пингую 192.168.100.1, он работает. Когда я пингую 192.168.0.249, он тоже работает. Однако, когда я пытаюсь пинговать 192.168.0.1, этого не происходит. В этом последнем случае, когда я использую tcpdump, я вижу активность ICMP в eth0, но не вижу активности в eth2.
Есть ли у кого-нибудь способ решить это? Есть ли способ отладить это?
Спасибо,
Можете ли вы пропинговать 192.168.0.1 из вашей системы Ubuntu?
Включена ли пересылка в вашей системе Ubuntu? Тебе нужно net.ipv4.ip_forward
включен, если вы хотите пересылать пакеты; это обычно помещается в /etc/sysctl.conf
:
net.ipv4.ip_forward = 1
А потом беги sysctl -p
.
Вы можете установить это (непостоянно) в командной строке:
sysctl -w net.ipv4.ip_forward=1
У вас есть локальный брандмауэр, предотвращающий пересылку? Проверьте политику по умолчанию для вашей пересылки (или любых конкретных правил в цепочке пересылки).
В /etc/sysctl.conf
ищите строку, в которой упоминается net.ipv4.ip_forward
. Если он все еще закомментирован, раскомментируйте его и запустите sysctl -p
чтобы получить пересылку пакетов. Это должно позволить вам пинговать 192.168.0.1 с 192.168.100.101.
Однако тогда вам придется взглянуть на использование iptables для NAT соединения, поступающего из 192.168.100.0/24 во внешний мир.
Возможно, вы не пересылаете пакеты через интерфейсы? Пытаться
echo 1 > /proc/net/ipv4/ip_forward
echo 1 > /proc/net/ipv6/ip_forward
Если он работает, установите его навсегда с помощью sysctl.conf
Нашел причину.
Мой маршрутизатор WAN не распознал сеть 192.168.100.0, поэтому запрос icmp попал туда, но не смог вернуться.
Изменение информации о маршрутизации в маршрутизаторе WAN устранило проблему.
Спасибо!