зеркало из
https://github.com/iharh/notes.git
synced 2025-10-29 20:56:06 +02:00
209 строки
10 KiB
Plaintext
209 строки
10 KiB
Plaintext
?
|
|
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}}' <container_name_or_id>
|
|
```
|
|
|
|
Предположим, 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 <source_ip> 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-контейнера.
|