Я пытаюсь создать небольшой шлюз для домашнего проекта. У меня есть машина NODE, GATEWAY и EXTERNAL, работающая в общедоступной сети IPv6. Хотя NODE не подключен через Ethernet, моя цель - подключить его к сети IPv6 с помощью шлюза. Он связывается со шлюзом через радио (тоже IP, но с использованием 64-битных адресов), у которого есть собственный интерфейс.
Используя IP-маршруты, я смог пропинговать ВНЕШНИЙ с моего УЗЛА, используя ШЛЮЗ. Теперь у меня такой вопрос: могу ли я предоставить миру свой узел с помощью NAT? У меня есть общедоступный IP-адрес для NODE, поэтому я добавил его в шлюз: (Все IP-адреса поддельные, конечно)
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 123.222.23.2 netmask 255.255.255.0 broadcast 123.222.255.255
inet6 2003:6g8:140:200:6a39:5021:83c4:fgbb prefixlen 128 scopeid 0x0<global>
inet6 fe80::c229:5c97:8b23:a3e5 prefixlen 64 scopeid 0x20<link>
inet6 2003:6g8:140:200:1acc:42fd:1946:e2c1 prefixlen 64 scopeid 0x0<global>
И тестирование, затем я могу пинговать оба IP-адреса из ВНЕШНЕГО, и в конечном итоге попасть в шлюз. Теперь я хотел бы перенаправить любой трафик, поступающий с ip, на мой радиоинтерфейс и изменить IP-адрес назначения.
Поскольку я новичок в iptables, я просто попробовал. Настройка DNAT
sudo ip6tables -t nat -A PREROUTING -i eth0 -d 2003:6g8:140:200:6a39:5021:83c4:fgbb -j DNAT --to-destination fe80::160c:25ee:1de6:a52c
Где последний IP-адрес - это локальный адрес УЗЛА. Если я правильно понимаю, тогда все пакеты с получателем этого конкретного IP-адреса вместо этого получат локальный IP-адрес.
Тогда разрешаю пересылку
sudo ip6tables -A FORWARD -i eth1 -j ACCEPT
sudo ip6tables -A FORWARD -o radio0 -j ACCEPT
Затем создаю статическую маршрутизацию
sudo ip -6 route add fe80::160c:25ee:1de6:a52c dev radio0
Но это, похоже, не работает. Когда я пытаюсь выполнить эхо-запрос 2003: 6g8: 140: 200: 6a39: 5021: 83c4: fgbb, они попадают только на шлюз, а не на другой интерфейс.
Что я делаю не так?
С уважением
Во-первых, помните, что на целевом устройстве должен быть маршрут, который будет возвращать ответы в блок NAT.
Во-вторых, локальные адреса ссылок особенные. Я не знаю, нарушат ли особые правила, касающиеся локальных адресов ссылки, такую настройку. В общем, если пакеты собираются пересечь маршрутизатор, они должны использовать обычные (глобальные или уникально-локальные) адреса.