? https://n2x.io/blog/advanced-linux-routing-with-policy-routing https://www.baeldung.com/linux/destination-source-routing https://lartc.org/ http://www.ralphb.net/IPSubnet/ http://www.kohala.com/start/ https://tldp.org/HOWTO/Adv-Routing-HOWTO/index.html https://tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.rpdb.simple.html https://serverfault.com/questions/1120143/make-ip-route-and-routing-rules-permanent-using-nmcli-on-rhel-8-rocky-8 ... proto static/kernel Linux Network Administrators Guide https://tldp.org/LDP/nag2/index.html Guide to IP Layer Network Administration with Linux http://linux-ip.net/html/index.html tools https://subnetonline.com/ nmcli https://www.ibm.com/support/pages/setup-policy-based-routing-networkmanager https://www.networkmanager.dev/docs/api/latest/nm-settings-nmcli.html https://www.golinuxcloud.com/nmcli-command-examples-cheatsheet-centos-rhel/ rh https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/10/html/configuring_and_managing_networking/index https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/10/html/configuring_and_managing_networking/configuring-policy-based-routing-to-define-alternative-routes https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/10/pdf/configuring_and_managing_networking/Red_Hat_Enterprise_Linux-10-Configuring_and_managing_networking-en-US.pdf ? no this in rh10 https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/configuring_and_managing_networking/configuring-policy-based-routing-to-define-alternative-routes_configuring-and-managing-networking 4. ip routing http://linux-ip.net/html/ch-routing.html 4.7. routing cache http://linux-ip.net/html/routing-cache.html 5. nat http://linux-ip.net/html/ch-nat.html http://linux-ip.net/html/nat-overview.html http://linux-ip.net/html/nat-stateless.html http://linux-ip.net/html/nat-dnat.html http://www.linas.org/linux/load.html D.2 http://linux-ip.net/html/tools-ip-route.html rules https://bbs.archlinux.org/viewtopic.php?id=251095 https://doc.lagout.org/network/inetdoc/Policy_Routing_in_Linux_ENG.pdf https://blog.scottlowe.org/2013/05/29/a-quick-introduction-to-linux-policy-routing/ http://www.policyrouting.org/ http://www.policyrouting.org/PolicyRoutingBook/ONLINE/CH05.web.html ip rule help man ip-rule $ ip rule help https://www.man7.org/linux/man-pages/man8/ip-rule.8.html http://linux-ip.net/html/tools-ip-rule.html list/show 0: from all lookup local 32766: from all lookup main 32767: from all lookup default add/del SELECTOR ACTION SELECTOR ... [ fwmark FWMARK[/MASK] ] https://unix.stackexchange.com/questions/626779/whats-the-meaning-of-these-ip-route-rules ip rule add fwmark 1 lookup 100 adds a rule to packets marked as 1 (I suppose with a --set-mark 1 in iptables) https://tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.netfilter.html https://utcc.utoronto.ca/~cks/space/blog/linux/LinuxIpFwmarkMasks https://utcc.utoronto.ca/~cks/space/blog/tech/IPRecursiveRoutingProblem https://serverfault.com/questions/745878/command-line-utility-to-test-fwmark-in-ip-rule-ip-route !!! use ip route get with marks !!! eBPF program can also be attached for marking flush save restore with iptables https://serverfault.com/questions/1014323/making-an-ip-rule-higher-priority-than-local !!! # iptables -t mangle -A PREROUTING -i pppoe0 -p tcp -m tcp --dport 80 -j MARK --set-xmark [num] # ip rule add fwmark [num] table 200 https://doc.lagout.org/network/ https://doc.lagout.org/network/inetdoc/ https://doc.lagout.org/network/inetdoc/Policy_Routing_in_Linux_ENG.pdf http://www.policyrouting.org/ http://www.policyrouting.org/PolicyRoutingBook/ONLINE/TOC.html https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/8/html/configuring_and_managing_networking/configuring-policy-based-routing-to-define-alternative-routes_configuring-and-managing-networking 2025 https://blog.sdn.clinic/2025/01/advanced-linux-routing-policy-based-routing/ ip rule add dport 80 table 80 ip rule add dport 443 table 80 ip route add default via 192.168.178.1 dev eth1 table 80 2021 https://freedium.cfd/https://medium.com/@marthin.pasaribu_72336/linux-policy-routing-introduction-37933f8cb62e ip rule list ip rule add from 192.168.39.199 lookup custom ip route add default via 192.168.30.2 dev eth1 table custom 2013 https://blog.scottlowe.org/2013/05/29/a-quick-introduction-to-linux-policy-routing/ local-table is non-modifiable tools https://github.com/cedrickchee/awesome-wireguard https://github.com/cedrickchee/awesome-wireguard#mesh-network https://github.com/slackhq/nebula https://noiseprotocol.org/ https://nebula.defined.net/docs/ https://medium.com/several-people-are-coding/introducing-nebula-the-open-source-global-overlay-network-from-slack-884110a5579 https://github.com/tonarino/innernet https://blog.tonari.no/introducing-innernet https://patchwork.ozlabs.org/project/netfilter-devel/patch/1479114761-19534-1-git-send-email-pablo@netfilter.org/#1511797 https://tailscale.com/ https://github.com/juanfont/headscale https://headscale.net/stable/ https://www.youtube.com/@Tailscale/videos misc https://github.com/linuxserver/docker-wireguard https://github.com/netbirdio/netbird https://github.com/gravitl/netmaker https://github.com/svenstaro/wiresmith tools https://github.com/wagoodman/dive https://github.com/bitwister/twine netwoking using labels Для перенаправления трафика внутрь Docker-контейнера с использованием policy routing, необходимо выполнить несколько шагов. В этом сценарии вы можете использовать iptables и ip rule для управления маршрутизацией. Предположим, у вас есть Docker-контейнер с известным IP-адресом или именем. ### Пошаговое руководство: 1. **Узнайте IP-адрес контейнера**: Используйте команду `docker inspect` для получения IP-адреса контейнера: ``` docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ``` Предположим, IP-адрес контейнера — `172.17.0.2` (замените на ваш IP-адрес). 2. **Создайте отдельную таблицу маршрутов**: В файле `/etc/iproute2/rt_tables` добавьте новую таблицу маршрутов, например: ``` 100 docker ``` 3. **Добавьте маршрут для контейнера в новую таблицу**: Добавьте маршрут через виртуальную сеть Docker в новую таблицу. Например: ``` ip route add 172.17.0.0/16 dev docker0 table docker ``` Здесь `docker0` — это стандартное имя моста Docker. 4. **Создайте правило для перенаправления определённого трафика**: Используйте команду `ip rule` для перенаправления нужного трафика в вашу таблицу маршрутизации. Например, перенаправьте весь трафик, поступающий на определённый IP-адрес (например, публичный IP вашего хоста): ``` ip rule add from lookup docker ``` Или вы можете перенаправить трафик только по определённому порту: ``` ip rule add fwmark 1 lookup docker ``` 5. **Используйте iptables для маркировки пакетов**: Маркируйте входящий трафик, который вы хотите перенаправить в контейнер. Например, если вы хотите перенаправить трафик на порт `8080`, используйте команду: ``` iptables -t mangle -A PREROUTING -p tcp --dport 8080 -j MARK --set-mark 1 ``` Этот шаг связывает iptables с вашим правилом маршрутизации, созданным на предыдущем этапе. 6. **Настройте NAT для правильной маршрутизации**: Для того чтобы трафик перенаправлялся в контейнер, вам нужно настроить натирование. Например: ``` iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 172.17.0.2:8080 iptables -t nat -A POSTROUTING -s 172.17.0.0/16 -j MASQUERADE ``` Здесь гарантируется, что отправленный трафик будет правильно обработан Docker и вернётся в исходное место. 7. **Проверьте настройки**: Убедитесь, что правило маршрутизации и iptables работают правильно: ``` ip rule show ip route list table docker iptables -t mangle -L iptables -t nat -L ``` 8. **Сохраните настройки**: Чтобы настройки сохранились после перезагрузки, убедитесь, что правила iptables и маршрутизации восстановятся при старте системы. Например, вы можете использовать `iptables-save` и скрипты для восстановления правил. Этот подход позволит вам перенаправить входящий трафик через policy routing и iptables внутрь Docker-контейнера.