Как заставить отправлять данные на маршрутизатор (на L3) вместо отправки напрямую? (на L2)

496
static

У меня есть публичный IP-адрес на одной машине:

a.b.c.156/32 

GW - это abc133 (который находится в сети / 27 со своим шлюзом abc129)

Я статически добавил маршрут ARP:

sudo arp -an a.b.c.133 at ab:cd:ef:12:34:56 [ether] PERM on eth0 

Если я пинг с a.b.c.156/32:

From a.b.c.133: icmp_seq=2 Redirect Host (New nexthop: a.b.c.129) 

затем:

sudo arp -an a.b.c.129 at aa:bb:cc:dd:ee:ff [ether] on eth0 # !<------ why? (it is even not from the same network) a.b.c.133 at ab:cd:ef:12:34:56 [ether] PERM on eth0 

Как предотвратить отправку arp за моим роутером (abc133)? Чтобы abc129 был доступен только через IP-уровень 3, а не как подсеть?

Обновить:

Структура сети:

provider's GW (a.b.c.129/27) <--- my host (a.b.c.133/27) <--- my second host (a.b.c.156/32) <--- my third host (a.b.c.151/32) ... (a.b.c.x - public IP) 

Как запретить хостам позади "my host (a.b.c.133)"отправлять arp в "provider's GW (a.b.c.129/27)", но вместо этого использовать маршрутизацию? Так что abc129 будет доступен только через IP-уровень 3, а не напрямую? Так как же изолировать второй, третий ... хост от отправки arp в "provider's GW (a.b.c.129/27)"?

Обновление 2:

У меня есть следующее в "route -n":

Dest. GW. Mask Flags Metrics Ref Interface 0.0.0.0 a.b.c.133 0.0.0.0 UG 0 0 eth0 a.b.c.133 0.0.0.0 255.255.255.255 UH 0 0 eth0 

Обновление 3:

=============== my host (a.b.c.133/27): > ip r a.b.c.151 dev vmbr0 scope link # third host a.b.c.156 dev vmbr0 scope link # second host 192.168.1.0/24 dev vmbr1 proto kernel scope link src 192.168.1.1 # local network default via a.b.c.129 dev vmbr0 # provider's gw  > ip n a.b.c.129 dev vmbr0 lladdr AA:BB:CC:DD:EE:FF REACHABLE a.b.c.156 dev vmbr0 lladdr AB:CD:EF:12:34:56 PERMANENT a.b.c.151 dev vmbr0 lladdr A1:B2:C3:D4:E5:F6 PERMANENT =============== my second host (a.b.c.156/32): > ip r default via a.b.c.133 dev eth0 a.b.c.133 dev eth0 scope link  > ip n # before "ping a.b.c.129" or "ping 8.8.8.8" a.b.c.133 dev eth0 lladdr F1:E2:D3:C4:B5:A6 PERMANENT  > ip n # after "ping a.b.c.129" or "ping 8.8.8.8" a.b.c.129 dev eth0 lladdr AA:BB:CC:DD:EE:FF REACHABLE # after some minutes idle => STALE a.b.c.133 dev eth0 lladdr F1:E2:D3:C4:B5:A6 PERMANENT =============== other hosts the similar to "my second host" 
0
Трудно понять, о чем ты говоришь. На какой машине вы статически добавили запись ARP и почему? О чем «это» вы говорите в последнем абзаце? David Schwartz 11 лет назад 0
Понимаю. обновил вопрос. static 11 лет назад 0
Что-то все еще не имеет смысла. ARP - это вещь Ethernet. На вашем рисунке показан второй и третий хосты в отдельной сети Ethernet от GW провайдера. Поэтому они * не могут * отправлять запросы ARP к ним. Что именно здесь означает «позади»? Является ли "мой хост" маршрутизатором? Если да, то является ли это шлюзом по умолчанию для второго и третьего хостов? David Schwartz 11 лет назад 0
Я хочу, чтобы "мой хост (abc133)" был маршрутизатором. Это обычный компьютер. static 11 лет назад 0
Затем вам нужно добавить * маршруты *, а не записи ARP. И abc133 должен быть шлюзом по умолчанию для второго и третьего хостов. (И «мой хост» должен находиться в подсети вместе со вторым и третьим хостами, чтобы они могли обмениваться трафиком.) David Schwartz 11 лет назад 0
если я установлю «мой второй хост» и т. д. в подсети / 27, он все равно будет знать GW провайдера, и наоборот. (Обновил вопрос) static 11 лет назад 0
Да, но если вы хотите использовать «мой хост» в качестве маршрутизатора, то вам нужно добавить маршруты ко второму и третьему хостам, указав ему использовать «мой хост» в качестве маршрутизатора. David Schwartz 11 лет назад 0
да, я сделал это: ip route add default через abc133 dev eth0. И это странная вещь: второй хост знает, кто является маршрутизатором, почему он обращается к маршрутизатору провайдера через arp? Я хочу, чтобы все, что находится за «моим хостом», было вынуждено маршрутизировать, а не подключаться напрямую к другим хостам перед «моим хостом» (то есть маршрутизатором провайдера), но все же иметь прямой доступ к другому «третьему хосту», ... так далее.". static 11 лет назад 0
Это будет работать, если хосты настроены в той же подсети, что и abc133, или если у них есть маршрут к нему. David Schwartz 11 лет назад 0
Тем не менее, не работает. Gw второго / третьего и т. Д. Провайдера добавляют MAC-адрес до тех пор, пока он отправляет что-либо ему или куда-либо еще через него. static 11 лет назад 0
Можете ли вы вставить свой текущий конфиг? Может ли каждая машина достичь своего шлюза по умолчанию? David Schwartz 11 лет назад 0
Я выполнил настройку динамически (не через / etc / network / interfaces), потому что мне нужно все время менять настройки. Так что вы имеете в виду config: "ip r", "ip n"? Да, каждая машина может достигнуть своего стандартного значения gw и далее (я могу достигнуть Интернета). static 11 лет назад 0
обновлено: добавлена ​​конфигурация из "ip n", "ip r" static 11 лет назад 0
abc129 является шлюзом по умолчанию, но нет никакого маршрута к abc129, и оба хоста не находятся в общей сети. David Schwartz 11 лет назад 0
по умолчанию gw равен «my host», и он имеет «abc129» по умолчанию (см. «my host» «> ip r»). Почему «второй хост» имеет «abc129» в качестве gw по умолчанию ?, он имеет «мой хост» в качестве gw по умолчанию static 11 лет назад 0

1 ответ на вопрос

0
Ярослав Рахматуллин
a.b.c.129 at aa:bb:cc:dd:ee:ff [ether] on eth0 # !<------ why? (it is even not from the same network) 

It on the same network. Otherwise you would not see the hardware address of the node. If you were on different networks you would only see the MAC address of your router*. Logically separated subnets can be on the same physical network. Nothing prevents them from using the shortest physical path. The provider's gateway and your gateway share a subnet in the example.

If you wish to force all traffic via your gateway, I think you'll need to create firewall rules on the hosts.

* You would see the MAC address of +'. (a cross represents a NIC)

 [local subnet]---------+' local gw +" | | [ remote subnet]----+. remote gw +, 
Какие правила брандмауэра вы имеете в виду? Это не должно быть правилами REJECT / DROP, в противном случае трафик будет просто отклонен, и связь будет невозможна. Мне нужно правило, которое заставляет второй и т. Д. Хосты отправлять трафик через маршрутизатор, а не напрямую. static 11 лет назад 0
[Этот ответ] (http://serverfault.com/questions/345111/iptables-target-to-route-packet-to-specific-interface) описывает способ форсирования некоторого трафика через данный интерфейс. Подобные конфигурации могут быть сделаны для адресов. Проведите исследование, попробуйте хотя бы один метод, а затем задайте новый вопрос о iptables, если это необходимо. Не забудьте указать свои реальные цели (я полагаю *, например, изолировать ваши хосты от GW провайдера). Удачи. Ярослав Рахматуллин 11 лет назад 1