需求
有2個在不同地方的IDC機房,2個機房需要鏈接對方的內網。拓撲見下圖。ServerA想直接訪問到ServerB連接的私有網絡
|
+-----------+ 外網 +-------------+ |兩個機器通過內網相互訪問
+ Server A + <----------> + Server B + |
+-----------+ +-------------+ | 192.168.200.0/24
111.7.132.43 120.210.196.42 |
實現
通過ip tunnel建立ipip隧道,再通過iptables進行nat,便可以實現。
Step 1. 建立ip隧道
ServerA配置iptunnel,並給tunnel接口配置上ip
/sbin/modprobe ip_ipip
/sbin/ip tun add iptun_hj mode ipip local 111.7.132.43 remote 120.210.196.42 ttl 32
/sbin/ifconfig iptun_hj 192.168.200.1/24 up
ServerB配置iptunnel,並給tunnel接口配置上ip
/sbin/modprobe ip_ipip
/sbin/ip tun add hj_iptun mode ipip local 120.210.196.42 remote 111.7.132.43 ttl 32
/sbin/ifconfig hj_iptun 192.168.200.2/24 up
隧道配置完成後,請在ServerA上192.168.200.2,看是否可以ping通,ping通則繼續,ping不通需要再看一下上面的命令執行是否有報錯
Step 2. 添加路由和nat
ServerA上,添加到192.168.200.0/30的路由
/sbin/route add -net 192.168.200.0/24 gw 192.168.200.2
ServerB上,添加iptables nat,將ServerA過了訪問192.168.200.0/24段的包進行NAT,並開啓ip foward功能
iptables -t nat -I POSTROUTING -s 192.168.200.0/24 -j MASQUERADE
echo "1" > /proc/sys/net/ipv4/ip_forward
或者:
sysctl -w net.ipv4.ip_forward=1
sed -i '/net.ipv4.ip_forward/ s/0/1/' /etc/sysctl.conf
至此,完成了兩端的配置,ServerA可以直接訪問ServerB 所接的私網了。
需要特定網絡走私網出去,需要使用到ip rule和ip route.