View Single Post
Hei.
Jeg driver og "hacker" litt.
Fra Canal Digital får vi maks 4 offentlige dynamiske IP-adresser.

Jeg har flere LAN-klienter i subnettet 192.168.1.1 - 192.168.1.254.

Jeg deler ut 192.168.1.100 - 192.168.1.200 til DHCP-klienter.

Tre av maskinene som er tilkoblet LAN-et er satt opp med hver sin statiske IP-adresse:
192.168.1.10
192.168.1.15
192.168.1.20

Linux-boksen har to nettverkskort, et kort som er koblet direkte på modemet, og et som er koblet på en lokal switch slik at klientene internt i nettverket får nett.

Jeg har opprettet tre virtuelle interfaces:

Kode

ip link add link enp0s25 address 00:11:22:33:44:55 virtual0 type macvlan
ip link set virtual0 up
ip link add link enp0s25 address 00:11:22:33:44:56 virtual1 type macvlan
ip link set virtual1 up
ip link add link enp0s25 address 00:11:22:33:44:57 virtual2 type macvlan
ip link set virtual2 up
dhclient virtual0
dhclient virtual1
dhclient virtual2
enp0s25 er nettverkskortet som er koblet direkte på modemet.

Dette fungerer, og jeg har altså nettverkskortene virtual0, virtual1 og virtual2 som får hver sin offentlige IP-adresse. Disse IP-adressene svarer ikke på ping utenfra, kun IP-adressen som er tildelt enp0s25.

Jeg ønsker også at de tre statiske LAN-klientene kun skal ha IP-adressene som er på virtual0,1,2,3

Altså:
192.168.1.10 skal kun routes gjennom virtual0
192.168.1.15 skal kun routes gjennom virtual1
192.168.1.20 skal kun routes gjennom virtual2

På denne måten vil i praksis de tre LAN-klientene ha hver sin egen offentlige IP-adresse, men samtidig være i samme subnett som resten av klientene. Tøft, ikke sant?

Dette er skriptet jeg har prøvd å lage:

Kode

ip link add link enp0s25 address 00:11:22:33:44:55 virtual0 type macvlan
ip link set virtual0 up
ip link add link enp0s25 address 00:11:22:33:44:56 virtual1 type macvlan
ip link set virtual1 up
ip link add link enp0s25 address 00:11:22:33:44:57 virtual2 type macvlan
ip link set virtual2 up
dhclient virtual0
dhclient virtual1
dhclient virtual2

iptables -t nat -A PREROUTING -i virtual0 -j DNAT --to-destination 192.168.1.10
iptables -t nat -A PREROUTING -i virtual1 -j DNAT --to-destination 192.168.1.15
iptables -t nat -A PREROUTING -i virtual2 -j DNAT --to-destination 192.168.1.20

export IP1=`ip -4 addr show virtual0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}'`
export IP2=`ip -4 addr show virtual1 | grep -oP '(?<=inet\s)\d+(\.\d+){3}'`
export IP3=`ip -4 addr show virtual2 | grep -oP '(?<=inet\s)\d+(\.\d+){3}'`

iptables -t nat -A PREROUTING -d $IP1 -j DNAT --to-destination 192.168.1.10
iptables -t nat -A POSTROUTING -d 192.168.1.10 -j SNAT --to $IP1

iptables -t nat -A PREROUTING -d $IP2 -j DNAT --to-destination 192.168.1.15
iptables -t nat -A POSTROUTING -d 192.168.1.15 -j SNAT --to $IP2

iptables -t nat -A PREROUTING -d $IP3 -j DNAT --to-destination 192.168.1.20
iptables -t nat -A POSTROUTING -d 192.168.1.20 -j SNAT --to $IP3
Jeg fant fort ut at ingen av klientene, hverken de statiske eller de dynamiske fikk Internett, så jeg puttet på brannmurregelen:

-A POSTROUTING -o enp0s25 -j MASQUERADE

Slik ser nå brannmurreglene ut:

Kode

*nat
:PREROUTING ACCEPT [888:195205]
:INPUT ACCEPT [396:38971]
:OUTPUT ACCEPT [1883:141001]
:POSTROUTING ACCEPT [24:1206]
-A PREROUTING -d 46.x.x.x/32 -j DNAT --to-destination 192.168.1.10
-A PREROUTING -d 46.x.x.x/32 -j DNAT --to-destination 192.168.1.15
-A PREROUTING -d 95.x.x.x/32 -j DNAT --to-destination 192.168.1.20
-A POSTROUTING -d 192.168.1.10/32 -j SNAT --to-source 46.x.x.x
-A POSTROUTING -d 192.168.1.15/32 -j SNAT --to-source 47.x.x.x
-A POSTROUTING -d 192.168.1.20/32 -j SNAT --to-source 96.x.x.x
-A POSTROUTING -o enp0s25 -j MASQUERADE
-A POSTROUTING -o virtual0 -j MASQUERADE
COMMIT
# Completed on Fri Oct 20 10:13:18 2017
Da fikk alle klientene Internett, både de dynamiske og de statiske.
Men hvordan tvinger jeg trafikken til de statiske LAN-klientene til å kun gå gjennom virtual 0, 1 og 2?

Hva er det jeg mangler? Er dette i det hele tatt mulig å gjennomføre?
Sist endret av Rusmisbrukeren; 20. oktober 2017 kl. 10:18.