у меня есть школьная сеть10.0.0.0/8
У меня Debian работает со статически назначенным IP- 10.122.72.2
шлюзом 10.122.72.1
на eth0 и локальной сетью 10.122.2.0/24
на eth1.
Проблема в том, что я могу получить доступ к чужой сети, например, 10.122.1.0/24
но не могу получить доступ к своей локальной сети извне, например, ping 10.122.2.1
из 10.122.1.0/24
сети
tracert 10.122.1.1
из моей локальной сети сообщите мне, как был маршрутизирован пакет10.122.2.1 -> 10.122.72.1 -> 10.122.1.1
И tracert 10.122.2.1
из 10.122.1.0/24
сети дай мне10.122.1.1 -> 10.122.254.9 -> request timed out
sudo route -n
дайте мне это :
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.122.72.1 0.0.0.0 UG 0 0 0 eth0
10.122.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
10.122.72.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
и вот мой/etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 10.122.72.2
netmask 255.255.255.0
network 10.122.72.0
broadcast 10.122.72.255
gateway 10.122.72.1
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 202.46.129.2
auto eth1
iface eth1 inet static
address 10.122.2.1
netmask 255.255.255.0
network 10.122.2.0
broadcast 10.122.2.255
Вот мои правила брандмауэра
outif="eth0"
lanif="eth1"
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -t nat -A POSTROUTING -o $lanif -j MASQUERADE
iptables -t nat -A POSTROUTING -o $outif -j MASQUERADE
Как сделать мою локальную сеть доступной извне?
заранее спасибо
решение1
Проблема здесь не в маршрутизаторе (по крайней мере, пока).
tracert
Вы запустили, и это показывает, что, похоже 10.122.254.9
, не знает, куда направить пакет дальше. Вам нужно настроить другие маршрутизаторы в школьной сети для маршрутизации 10.122.2.0/24
к вашему маршрутизатору.
После этого вы даже сможете удалить NAT с вашего маршрутизатора.
Учитывая два tracert
предоставленных вами результата, можно сделать вывод, что ваша сеть выглядит примерно так:
IP-маршрутизация работает по принципу «прыжок за прыжком». Когда вы пытаетесь отправить пакет в 10.122.2.1
, есть две возможности:
- Вы находитесь в той же подсети, что и
10.122.2.1
: Вы просто находите его адрес уровня 2 и отправляете ему пакет. - Вы находитесь в другой подсети. Вы просматриваете таблицу маршрутизации, чтобы найти маршрутизатор в своей подсети, который приблизит вас к
10.122.2.1
, находите его адрес уровня 2 и отправляете ему пакет. Затем он выполняет те же шаги, что и вы.
В вашем случае, когда вы находитесь в 10.122.1.0/24
сети, и приведенное выше представление верно, вы можете отправить сообщение на контролируемые школой маршрутизаторы 1 и 2 (2 является шлюзом по умолчанию, когда вы не знаете, кому его отправить).
Поскольку вы не в 10.122.2.0/24
сети и не знаете, кому его отправить, вы отправляете его на шлюз по умолчанию, 10.122.1.1
также известный как маршрутизатор 2, контролируемый школой. Он не находится в той же подсети, что 10.122.2.1
и любой из них, и не имеет для него специальной записи, поэтому отправляет его на свой шлюз по умолчанию, 10.122.254.9
который, в свою очередь, вероятно, пытается отправить его в Интернет, где он отбрасывается, поскольку 10.122.2.1
находится в частном диапазоне IP-адресов.
Если вы находитесь в 10.122.72.0/24
сети, вы можете добавить запись, чтобы сообщить вашему компьютеру, что 10.122.2.0/24
он доступен через 10.122.72.2
, но поскольку вы находитесь в еще одной подсети, вам нужно сообщить маршрутизаторам, контролируемым школой, что 10.122.2.0/24
он доступен через 10.122.72.2
. В этом случае это будет означать обновление маршрутизатора, контролируемого школой 1, прямой записью для вашей сети, доступной через вашу машину Debian, и маршрутизатора, контролируемого школой 2, записью для вашей сети, доступной через маршрутизатор, контролируемый школой 1.
Без контроля над школьными маршрутизаторами это сделать невозможно. Лучшее, что вы можете сделать, это настроить VPN-сервер на своей машине Debian, а затем туннелировать трафик с 10.122.2.0/24
использованием VPN-подключения.