拋開云主機環境來說,通常一個辦公網絡內所有的主機都沒有公網IP地址,但他們都能通過具有IP地址的路由器(網關)設備訪問Internet,此設備只需要具備NAT和轉發功能即可。具有這樣功能的設備當然可以用某臺計算機代替。
下面是一個最簡單的模型:
主機A(服務端):
網卡1:內網IP地址1
網卡2:公網IP地址3或者能訪問Internet的某個IP地址3
主機B(客戶端):
網卡1:內網IP地址2
主機B想通過主機A訪問Internet,只需要主機B指定主機A為網關,主機A能夠將來自主機B的包偽裝成主機A上的網卡2上的IP即可(sNAT)。
因此云主機環境也是一樣,只要保證兩個云主機間內網是連通的,另一臺云主機能訪問Internet即可。如果某兩個云主機內網不通,但可以通過***連通,也可以實現。
(一)下面是兩個主機間通過內網IP直接連接模擬訪問Internet的例子。
主機A(服務端):
網卡1:10.20.0.128(eth0,無Internet訪問)
網卡2:192.168.1.52(eth2,Internet訪問)
主機B(客戶端):
網卡1:10.20.0.129(eth0,無Internet訪問)
主機A操作:
開啟iptables轉發功能:
sysctl -w net.ipv4.conf.default.accept_source_route=1 sysctl -w net.ipv4.conf.default.rp_filter=0 sysctl -w net.ipv4.ip_forward=1
配置iptables NAT規則:
modprobe iptable_nat iptables -t nat -A POSTROUTING -s 10.20.0.0/24 -o eth2 -j MASQUERADE
刪除iptables拒絕轉發規則:
iptables -D FORWARD -j REJECT --reject-with icmp-host-prohibited
主機B操作:
將默認網關配置成主機A的網卡1地址:
route add -host 10.20.0.128/32 dev eth0 route add default gw 10.20.0.128 dev eth0
(二)下面是兩個主機間通過Open×××連接模擬訪問Internet的例子。
主機A(服務端,CentOS6.x):
網卡1:10.20.0.128(eth0,無Internet訪問)
網卡2:192.168.1.52(eth2,Internet訪問)
主機B(客戶端,CentOS6.x):
網卡1:10.20.0.129(eth0,無Internet訪問)
主機A操作:
安裝Open×××(安裝Open×××也可以參考《CentOS6.7安裝Open×××服務端》):
yum -y install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm yum -y install openssl open*** cd /etc/open*** git clone https://github.com/Open×××/easy-rsa.git cd /etc/open***/easy-rsa/ git checkout -b v2.2.1 cp -r easy-rsa/2.0 /etc/open***/easy-rsa/ cd /etc/open***/easy-rsa/2.0/ vim im vars export EASY_RSA="`pwd`" export OPENSSL="openssl" export PKCS11TOOL="pkcs11-tool" export GREP="grep" export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA` export KEY_DIR="$EASY_RSA/keys" echo NOTE: If you run ./clean-all, I will be doing a rm -rf on $KEY_DIR export PKCS11_MODULE_PATH="dummy" export PKCS11_PIN="dummy" export KEY_SIZE=2048 export CA_EXPIRE=3650 export KEY_EXPIRE=3650 export KEY_COUNTRY="CN" export KEY_PROVINCE="Shandong" export KEY_CITY="QingDao" export KEY_ORG="51devops" export KEY_EMAIL="uberurey_ups@163.com" export KEY_OU="Ops" export KEY_NAME="51devops"
生成Open××× 證書以及key:
source vars ./clean-all ./pkitool --initca ./pkitool --server node1.51devops.com ./build-dh # ./build-key node1.51devops.com ./build-key node2.51devops.com chmod 400 /etc/open***/easy-rsa/2.0/keys/node1.51devops.com.key
編寫一個Open××× Server端的配置文件:
vim /etc/open***/server.conf
port 1194 proto tcp dev tun ca /etc/open***/easy-rsa/2.0/keys/ca.crt cert /etc/open***/easy-rsa/2.0/keys/node1.51devops.com.crt key /etc/open***/easy-rsa/2.0/keys/node1.51devops.com.key dh /etc/open***/easy-rsa/2.0/keys/dh3048.pem server 10.8.0.0 255.255.255.0 ifconfig-pool-persist clientiplist.txt client-to-client duplicate-cn keepalive 10 120 comp-lzo persist-key persist-tun status /var/log/open***-status.log log /var/log/open***.log log-append /var/log/open***.log verb 3
啟動Open×××并配置iptables:
service open*** start service open*** status ifconfig tun0 cat /var/log/open***.log cat /var/log/open***-status.log iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 1194 -j ACCEPT # iptables -I INPUT -m state --state NEW -m udp -p udp --dport 1194 -j ACCEPT iptables-save || service iptables status service iptables save
編輯內核參數,啟用轉發功能:
vim /etc/sysctl.conf net.ipv4.conf.default.accept_source_route = 1 net.ipv4.conf.default.rp_filter = 0 net.ipv4.ip_forward = 1
或者:
sysctl -w net.ipv4.conf.default.accept_source_route=1 sysctl -w net.ipv4.conf.default.rp_filter=0 sysctl -w net.ipv4.ip_forward=1
配置iptables,配置sNAT和FORWARD規則:
modprobe iptable_nat iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth2 -j MASQUERADE iptables -D FORWARD -j REJECT --reject-with icmp-host-prohibited service iptables save || iptables-save > /etc/sysconfig/iptables
tips:也可以清空iptables所有配置,再添加允許規則,這樣可以避開一些reject規則。
可以通過iptables -t nat -nL -v命令查看nat表狀態。
iptables -t nat -A POSTROUTING -s 10.20.0.0/24 -o eth2 -j MASQUERADE
配置主機B(客戶端)
安裝Open×××客戶端:
yum -y install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm yum -y install openssl open***
編輯Open××× Client配置文件:
vim /etc/open***/client.conf client dev tun port 1194 proto tcp remote 10.20.0.128 1194 resolv-retry infinite nobind persist-tun ca /etc/open***/ca.crt cert /etc/open***/node2.51devops.com.crt key /etc/open***/node2.51devops.com.key remote-cert-tls server script-security 3 ns-cert-type server comp-lzo adaptive verb 3 mute 20
縮小證書文件的權限,只允許當前用戶訪問,不允許組內其他用戶和其他組訪問
chmod 400 /etc/open***/node2.51devops.com.key service open*** restart
配置路由:
route add -host 10.8.0.1/32 dev tun0 route add default gw 10.8.0.1 dev tun0
測試連接:
ping -c4 10.8.0.1 ping -c4 114.114.114.114
在Open×××連接前需要注意證書一定配置正確,時間同步,軟件版本最好保持一致、OpenSSL軟件包升級到最新版本。
tag:Linux網絡,Open×××配置,iptables sNAT
--end--
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。