У меня есть маршрутизатор с установленным DD-WRT v24-sp2, и у меня возникли проблемы с доступом к другому IP-адресу, который настроен в той же подсети, что и мой публичный IP-адрес. Мой интернет-провайдер требует устанавливать WAN-подключение с помощью DHCP, поэтому и IP, и шлюз назначаются автоматически. IP-адрес, назначенный интерфейсу WAN, также является публичным IP-адресом.
Итак, проиллюстрируем этот пример:
DD-WRT router -> [lan] ip: 192.168.1.1/24
[wan] ip: 12.34.56.78/24 (public IP)
Теперь предположим, что мой сосед пользуется тем же интернет-провайдером с той же конфигурацией и, следовательно, подключен к той же публичной 12.34.56.0/24
сети (например, с IP-адресом WAN 12.34.56.10
) и предоставляет некоторые сервисы на этом публичном IP. Проблема, с которой я сталкиваюсь, заключается в том, что я не могу получить доступ к этому сервису или даже пинговать публичный IP моего соседа ни с моего маршрутизатора DD-WRT, ни с любого устройства, подключенного к этому маршрутизатору.
Я могу получить доступ к этому сервису без каких-либо проблем, используя другое интернет-соединение, поэтому я на 100% уверен, что эта проблема сохраняется только за моим маршрутизатором DD-WRT.
Моя таблица маршрутизации выглядит следующим образом:
root@DD-WRT:~# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 12.34.56.1 0.0.0.0 UG 0 0 0 vlan2
12.34.56.0 0.0.0.0 255.255.255.0 U 0 0 0 vlan2
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 br0
192.168.66.0 192.168.66.2 255.255.255.0 UG 0 0 0 tun0
192.168.66.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
Есть идеи, как с этим бороться?
решение1
Я тоже не эксперт. Я пишу это, потому что у меня похожая настройка с моим провайдером (WAN как /24
подсеть) с похожей таблицей маршрутизации. Разница в том, что это работает. Я даже могу прослушивать пакеты, идущие от или к некоторым из моих "соседей" (хотя не ко всем; думаю, это те, с кем я делю хаб).
traceroute
к моему «соседу» показывает один прыжок, как я и ожидал.
В вашем случае, похоже, между вами и вашим соседом нет односкачкового соединения или какие-то прозрачные устройства разделяют вас по какой-то причине. В любом случае конфигурация вашего провайдера не совсем такая, как я ожидал бы, исходя из этих настроек DHCP, которые вы получаете. Есть некоторая особенность на стороне провайдера. Правильным решением для провайдера может быть:
- позволяя вам и вашему соседу общаться с помощью одного перехода через прозрачные устройства, такие как концентраторы, коммутаторы и т. д., что сделает это обычной подсетью; или
- позволяя вам и вашему соседу общаться с помощью двух сетевых подключений через шлюз.
Что вы можете попробовать самостоятельно
Второй пункт выше не означает, что вам вообще не разрешено общаться с соседом через шлюз.сейчас. Вам может быть разрешено или нет, шлюз может быть настроен любым образом. Суть в том, что с вашей текущей таблицей маршрутизации вы не пытаетесь.
Вторая строка таблицы маршрутизации ( 12.34.56.0 …
) сообщает маршрутизатору, что всякий раз, когда ему нужно отправить пакет соседу, он должен отправлять его с IP-адресом соседа.иаппаратный (MAC) адрес в качестве пункта назначения. Аппаратный адрес изначально неизвестен, поэтому маршрутизатор осуществляет широковещательную передачу для него. Это никогда не доходит до соседа, и вы застряли.
Попробуйте временно удалить вторую строку из таблицы маршрутизации:
route del -net 12.34.56.0 netmask 255.255.255.0 dev vlan2
и пусть действует тот, что по умолчанию. Каждый пакет от вас к вашему соседу будет направлен на его или ее IP, но на аппаратный адрес шлюза (аналогично тому, как вы общаетесь с внешним миром). Теперь шлюз должен доставить этот пакет. Он может сделать это, а может и нет.
В моем случае, если я удалю соответствующее правило маршрутизации, я все равно смогу дозвониться до своих «соседей»; traceroute
показываетдваhops, средний узел - шлюз моего провайдера. Проблема с ответами: они направляются напрямую на мой аппаратный адрес из-за моего "соседского"неизмененныйтаблица маршрутизации. Это работает для меня, но не будет работать для вас. Так что ваш соседдолженпроделайте тот же трюк сихтаблица маршрутизации и затем этоможетработа.
У меня случайно есть доступ администратора к одному из моих "соседей". Я изменил его таблицу маршрутизации, а также свою. Затем я подтвердил wireshark
пакеты, проходящие через шлюз (используя его аппаратный адрес) в обоих направлениях.
Если это работает для вас и вашего соседа, то сделайте это изменение постоянным каким-то образом. Конечно, это обходной путь, и было бы лучше, если бы ваш интернет-провайдер изменил конфигурацию.