Portál AbcLinuxu, 27. října 2025 21:05
Řešení dotazu:
172.16.X.0/24, což pak nekoliduje s firemními sítěmi 10.0.0.0/8, s switchovanými přípojkami do stejně adresovaných ISP sítí, ani běžnými 192.168.0.0/24 nebo 192.168.1.0/24. Když to nešlo jinak, tak jsem se z toho většinou vylhal samostatným routerem s NAT, co jsem měl po ruce.
Na virtuál bych se vykašlal, to je kanón na vrabce. Tohle by měl zvládnout jeden jediný patřičně nakonfigurovaný network namespace s veth spojem, což pak člověk rozběhne skriptem o pár příkazech.
Řešením je (jako obvykle) IPv6. Rozsah nemusí nutně být routovatelný směrem ven — koneckonců, u IPv4 může mít člověk taky na každém zařízení tolik adres a rozsahů, kolik jen chce, a nemusí je routovat mimo lokální síť. Zásadní rozdíl je v tom, že u IPv6 se dá zajistit, aby ten rozsah byl unikátní, tedy aby nebyl v konfliktu s žádným jiným rozsahem ve veřejném Internetu.
wlan0, wlan1, eth0.1, eth0.2, eth0.3, eth0.4.
Přes wlan zařízení mám vytvořený bridgě br-wlan a přes eth zařízení mám br-lan.
Teď má jeden bridge rozsah 10.0.1.0/24 a druhý 10.0.2.0/24. Routovní mezi těmito sítěmi (už) funguje. Broadcasty se z daných sítí níkdy nedoatnou ven, to chápu.
Chtěl jsem do jednoho subnetu(bridge) všechny zažízení, tj: wlan0, wlan1, eth0.1, eth0.2, eth0.3, eth0.4. Pak by byl rozsah ip adres třeba 10.0.0.0/22 a klienti na wlan* interfacech by dostávali od dhcp adresy 10.0.2.x a na eth.* interfacech by dostávali 10.0.2.x. Jen nevím, jestli jde dhcp serveru říci, kde má jaké adresy rozdávat.
Nevím jak tohodo dosáhnout, myslel jsem, že problém bude jen v konfiguraci dhcp serveru...
Dhcp server je dnsmasq.
Ne, to je z bláta do louže. Vždycky bude s nějakým IPv4 rozsahem v konfliktu. IPv6 rozsah bude světově unikátní, bez ohledu na to, do jakých dalších sítí a VPN bude routovat a bez ohledu na to, co si v budoucnu usmyslí poskytovatel. V tom byla celá pointa.
#!/bin/bash
# enable ipv4 forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
# create a new network namespace
ip netns add ns1-modem
# move usb0 device to ns1-modem namespace
ip link set usb0 netns ns1-modem
# veth link
ip link add v-eth1 type veth peer name v-peer1
ip link set v-peer1 netns ns1-modem
# set ip address of v-eth1 in root namespace
ip addr add 172.20.172.2/24 dev v-eth1
# set ip address of v-peer1 in ns1-modem namespace
ip netns exec ns1-modem ip addr add 172.20.172.1/24 dev v-peer1
# set ip address of usb0 modem interface in ns1-modem namespace
ip netns exec ns1-modem ip addr add 192.168.1.2/24 dev usb0
# activate interfaces
ip link set v-eth1 up
ip netns exec ns1-modem ip link set lo up
ip netns exec ns1-modem ip link set usb0 up
ip netns exec ns1-modem ip link set v-peer1 up
# in namespace ns1-modem set default route via modem device and set NAT
ip netns exec ns1-modem ip route add default via 192.168.1.1 dev usb0
ip netns exec ns1-modem iptables -t nat -A POSTROUTING -s 172.20.172.0/24 -o usb0 -j MASQUERADE
# set default route of root ns
#ip route add default via 172.20.172.1 dev v-eth1 metric 210
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.