라우터로서의 리눅스 : 3 개의 인터넷 공급자가 있으며 각각 고유 한 모뎀을 가지고 있습니다.
제공자 주소-게이트웨이 주소 192.168.1.1
Linux 라우터에 연결됨 eth1 /192.168.1.2
제공자 2 , 게이트웨이 주소 192.168.2.1
Linux 라우터 eth2 /192.168.2.2에 연결
제공자 3 , 게이트웨이 주소 192.168.3.1
Linux 라우터 eth3 /192.168.3.2에 연결
________
+------------+ /
| | |
+----------------------+ Provider 1 +--------|
__ |192.168.1.2 |192.168.1.1 | /
___/ \_ +------+-------+ +------------+ |
_/ \__ | eth1 | +------------+ /
/ \ eth0| |192.168.2.2 | | |
|Client network -----+ ROUTER eth2|--------------+ Provider 2 +------| Internet
\10.0.0.0/24 __/ | | |192.168.2.1 | |
\__ __/ | eth3 | +------------+ \
\___/ +------+-------+ +------------+ |
|192.168.3.2 | | \
+----------------------+ Provider 3 +-------|
|192.168.3.1 | |
+------------+ \________
소스 IP를 통해 네트워크 10.0.0.0/24의 클라이언트를 다른 게이트웨이로 라우팅하고 싶습니다.
클라이언트 네트워크에 대한 인터페이스 는 모든 클라이언트의 기본 게이트웨이 인 eth0 /10.0.0.1입니다.
예 :
10.0.0.11은 Provider1 @ eth1로 라우팅되어야합니다 . 10.0.0.12는
Provider2 @ eth2로 라우팅되어야합니다
.
SNAT 를 사용 ip route
하고 사용해야한다고 생각 iptables
하지만 정확히 어떻게 알아낼 수는 없습니다.
여기까지 내가 가진 스크립트가 있습니다.
ipv4 전달이 활성화되었습니다.
#!/bin/bash
# flush tables
ip route flush table connection1
ip route flush table connection2
ip route flush table connection3
# add the default gateways for each table
ip route add table connection1 default via 192.168.1.1
ip route add table connection2 default via 192.168.2.1
ip route add table connection3 default via 192.168.3.1
# add some IP addresses for marking
iptables -t mangle -A PREROUTING -s 10.0.0.11 -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -s 10.0.0.12 -j MARK --set-mark 2
iptables -t mangle -A PREROUTING -s 10.0.0.13 -j MARK --set-mark 3
# add the source nat rules for each outgoing interface
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 192.168.1.2
iptables -t nat -A POSTROUTING -o eth2 -j SNAT --to-source 192.168.2.2
iptables -t nat -A POSTROUTING -o eth3 -j SNAT --to-source 192.168.3.2
# link routing tables to connections (?)
ip rule add fwmark 1 table connection1
ip rule add fwmark 2 table connection2
ip rule add fwmark 3 table connection3
#default route for anything not configured above should be eth2