1. 程式人生 > >Linux學習(二十九)iptables(三)nat表的應用

Linux學習(二十九)iptables(三)nat表的應用

icmp cal 網卡 cast 默認值 ria bootproto cap span

需求

A機器可以訪問外網,B機器和A機器處於同一個內網,現在要讓B機器通過A機器訪問外網。

步驟

1.為虛擬機添加一塊網卡。

技術分享圖片

如果沒有區段名稱的話,點擊‘LAN區段(S)...’按鈕,新建一個。

2.ifconfig -a命令可以看到剛添加進來的尚未啟用的網卡:

[root@bogon ~]# ifconfig -a
eth1      Link encap:Ethernet  HWaddr 00:0C:29:AC:CC:56  
          inet addr:192.168.182.130  Bcast:192.168.182.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:feac:cc56/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1546 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1187 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:157665 (153.9 KiB)  TX bytes:168997 (165.0 KiB)

eth2      Link encap:Ethernet  HWaddr 00:0C:29:AC:CC:60  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:18 errors:0 dropped:0 overruns:0 frame:0
          TX packets:18 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1512 (1.4 KiB)  TX bytes:1512 (1.4 KiB)

3.配置網卡eth2:

TYPE=Ethernet
DEVICE=eth2
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.100.1
NETMASK=255.255.255.0
HWADDR=00:0C:29:AC:CC:60

4.在機器A上運行:

echo "1" > /proc/sys/net/ipv4/ip_forward

打開ip轉發。

5.在A機器上添加規則:

iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eth2 -j MASQUERADE

6.配置B機器到相同的“lan區段”,設置ip為192.168.100.2,網關為192.168.100.1。

需求

用xshell登陸B機器

步驟一:A機器打開路由轉發

[root@localhost ~]# echo "1" > /proc/sys/net/ipv4/ip_forward

說明:該命令是更改內核設置,打開路由轉發功能,默認值是0.

步驟二:在A機器的nat表中增加2條規則(執行該步驟前先清除nat表原有規則)

規則1:

[root@localhost ~]# iptables -t nat -A PREROUTING -d 192.168.8.125 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22

規則2:

[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.8.125

這個實驗失敗了。。。以後再看吧,盡力了。。。

備份

# service iptables save 

/etc/sysconfig/iptables //默認保存的位置

指定備份位置

[root@localhost ~]# iptables-save > /tmp/ipt.txt
[root@localhost ~]# cat /tmp/ipt.txt
# Generated by iptables-save v1.4.21 on Fri Dec  1 21:16:41 2017
*filter
:INPUT DROP [9:702]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [262:26184]
-A INPUT -p icmp -m icmp --icmp-type 8 -j DROP
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 192.168.8.0/24 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
COMMIT
# Completed on Fri Dec  1 21:16:41 2017

恢復備份的規則

[root@localhost ~]# iptables-restore < /tmp/ipt.txt

Linux學習(二十九)iptables(三)nat表的應用