다음을 고려하십시오.
WAN IP1: aaa.aaa.aaa.aaa/23
WAN IP2: bbb.bbb.bbb.bbb/25
LAN Subnet: 10.3.0.0/24
두 WAN 주소 모두 Linux Server로 라우팅되었으며 Linux 서버는 두 주소에서 모두 연결할 수 있습니다. LAN 인터페이스 (10.3.0.2)의 다른 호스트로 bbb.bbb.bbb.bbb를 라우팅하고 싶습니다.
INTERNET -- Linux Server
(aaa.aaa.aaa.aaa/23, bbb.bbb.bbb.bbb/25 ens3)
(10.3.0.1/24 tap0) -------- Router
(10.3.0.2/24 tap0)
INTERNET -- ISP NAT -- (xxx.xxx.xxx.xxx/xx eth0)
(172.16.1.0/24 br-lan)
이제 bbb.bbb.bbb.bbb를 tap0을 통해 10.3.0.2의 라우터로 라우팅하려고합니다 (bbb.bbb.bbb.bbb는 ens3의 주소였습니다). 따라서 내 라우터에는 공용 IP 주소가 있습니다. 이것이 내가 한 일입니다.
ip addr del bbb.bbb.bbb.bbb/25 dev ens3 # remove from ens3
ip route add bbb.bbb.bbb.bbb dev tap0 # route it to tap0
그래프는 다음과 같습니다.
INTERNET -- Linux Server
(aaa.aaa.aaa.aaa/23 ens3)
(10.3.0.1/24 tap0) -------- Router
(10.3.0.2/24, bbb.bbb.bbb.bbb tap0)
INTERNET -- ISP NAT -- (xxx.xxx.xxx.xxx/xx eth0)
(172.16.1.0/24 br-lan)
그리고 Linux 서버의 라우팅 테이블 :
% ip -4 route
default via aaa.aaa.aaa.1 dev ens3 onlink
10.3.0.0/24 via 10.3.0.1 dev tap0
10.3.0.1 dev ens3 scope link
aaa.aaa.aaa.0/23 dev ens3 proto kernel scope link src aaa.aaa.aaa.aaa
bbb.bbb.bbb.bbb dev tap0 scope link
169.254.0.0/16 dev ens3 scope link
그리고 라우터에서 address를 추가 bbb.bbb.bbb.bbb
했으며 이제 bbb.bbb.bbb.bbb
Linux 서버 에서 ping 을 할 수 있습니다.
그러나 bbb.bbb.bbb.bbb
다른 호스트 에서는 핑 을 할 수 없습니다 . 그래서 나는 시도했다 :
iptables -t nat -A POSTROUTING -j MASQUERADE
그 규칙 bbb.bbb.bbb.bbb
으로 인터넷 에서 핑 을 할 수있었습니다 . 추적 경로를 수행하면 bbb.bbb.bbb.bbb가 aaa.aaa.aaa.aaa 뒤에 있다는 것을 알 수 있습니다.
...
10. ???
11. aaa.aaa.aaa.aaa 0.0% 16 45.3 43.6 43.1 45.5 0.8
12. bbb.bbb.bbb.bbb 0.0% 16 53.7 54.8 51.2 79.4 7.1
그러나 터널 끝점 (10.3.0.2)에서 실제 소스 IP를 원합니다. 이제 Linux 서버가 SNAT를 수행하기 때문에 라우터에서 모든 트래픽 10.3.0.1을 얻습니다. 어떻게해야합니까?