2011年1月26日 星期三

Nat server2

要使用 ubuntu 當 ip 分享器,要設定4個東西, 1.防火牆. 2.設固定IP. 3.撥號連線. 4.dhcp 5.NAT

  以下內容,紅字部份皆為指令或是您需要修改的內容,藍字部份則為設定檔內容。

1.防火牆


要連上 Internet 之前要先設好防火牆

gedit ~/backup/iptables.sh
===================================
#!/bin/sh
#我的防火牆設定
iptables -P INPUT DROP
#iptables -A INPUT -i ! lo -s 127.0.0.1/8 -j DROP
#封包若不是從 lo 這張網卡進入,但來源是 127.0.0.1/8 的ip,則丟棄此封包
#iptables -A OUPUT -i ! lo -d 127.0.0.1/8 -j DROP
#封包若不是輸出至 lo 這張網卡,但目地是 127.0.0.1/8 的ip,則丟棄此封包
#以上2行是避免入侵者假造 127.0.0.1/8 網段的封包以嘗試突破防火牆
iptables -A INPUT -i lo -j ACCEPT
# 127.0.0.1 本地端回應全接受
iptables -A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
#針對 eth0 這張網卡,設定我主動發出去的回應都予放行
iptables -A INPUT -i ppp0 -m state --state RELATED,ESTABLISHED -j ACCEPT
#針對 ppp0 (撥號連線)這張網卡,設定我主動發出去的回應都予放行
iptables -A INPUT -i eth0 -s 192.168.0.0/24 -j ACCEPT
# 192.168.0.1~255 這個網段全放行
#iptables -A INPUT -i ppp0 -p tcp --dport 80:84 -j ACCEPT
#↑此為設定80prot到84port開放
#iptables -A INPUT -i ppp0 -p tcp --dport 22 -j ACCEPT
#↑此為設定 ssh port 打洞
iptables -A INPUT -i ppp0 -p tcp --dport 5500 -j ACCEPT
# 5500 for vnc
#iptables -A INPUT -i ppp0 -p tcp --dport 38 -j ACCEPT
#iptables -A INPUT -i ppp0 -p tcp --dport 3100:3300 -j ACCEPT
# ↑此為設定ftp:38 和被動式連線的port位範圍
#here is for NAT
iptables -t nat -P PREROUTING  ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT      ACCEPT
echo "1" > /proc/sys/net/ipv4/ip_forward
#將ip_forward的值由0改為1,表示啟動封包轉送的功能,讓你的 Linux 具有 router 的能力
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ppp0 -j MASQUERADE
#來自192.168.0.0/24 這網段的封包全轉到 ppp0 這張網卡去
# ↓隱形掃瞄攻擊防範
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A FORWARD -p tcp --tcp-flags ALL NONE -j DROP
iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
iptables -A FORWARD -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
iptables -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j DROP
iptables -A FORWARD -p tcp --tcp-flags FIN,RST FIN,RST -j DROP
iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j DROP
iptables -A FORWARD -p tcp --tcp-flags ACK,FIN FIN -j DROP
iptables -A INPUT -p tcp --tcp-flags ACK,URG URG -j DROP
iptables -A FORWARD -p tcp --tcp-flags ACK,URG URG -j DROP
#↓設定開機自動撥號連線
pon dsl-provider
===================================
chmod 755 ~/backup/iptables.sh
設定開機啟動防火牆,請下指令
sudo ln -s /home/user/backup/iptables.sh /etc/init.d/iptables.sh
註意: user 請改成你自己的帳號名
sudo update-rc.d iptables.sh defaults 50

2.設固定IP

sudo gedit /etc/network/interfaces
============================
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static

address 192.168.0.1
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
=============================


3.撥號連線

sudo pppoeconf
接著會跳出中文的設定畫面,大約按兩三個 enter 之後,它就會問你撥號連線的帳密
輸入完帳密之後,其它的問題,都是按enter即可,但要慢慢的按enter,但有個問題要註意
因為有一個問題是問你要不要設開機自動連線,註意:請不要設開機自動連線
因為讓它開機自動連線會有些問題, DNS 會無法正常解晰
我們已經有在 iptables.sh 那兒設開機自動連線了,所以這兒就不需要了.

設完之後,重開機之後做以下檢查:
ifconfig
看固定IP有沒有設成功
sudo iptables -L -n
看防火牆有沒有設成功,成功的話是會看到一堆 0.0.0.0/0 的數字
ping yahoo.com
看能不能正常連上網路

待以上都正常之後,我們才接著往下走

4.dhcp

這個就是分配IP的功能

sudo apt-get install dhcp3-server
sudo cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf.bak
sudo gedit /etc/dhcp3/dhcpd.conf

找到以下的內容,將其清掉後,

========= ubuntu 的 /etc/dhcp3/dhcpd.conf =================
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;
default-lease-time 600;
max-lease-time 7200;
=============清掉以上內容========================

直接貼上以下藍字的內容。有問題可自己恢復dhcpd.conf.bak 檔
==============dhcpd.conf內容======================
subnet 192.168.0.0 netmask 255.255.255.0 {
     range 192.168.0.3 192.168.0.100;
     option routers 192.168.0.1;
     option subnet-mask 255.255.255.0;
     option broadcast-address 192.168.0.255;
     option domain-name-servers 168.95.1.1, 139.175.10.20;
     option domain-name "vic";
     default-lease-time 604800;
     max-lease-time 259200;
                                             }
# 第一行 定義了此網段和遮罩範圍
# 第二行 range 為此網段IP發配的範圍
# 第三行 option routers 應為NAT主機的IP
# 第四行 遮罩重複設了,故少此行應也沒關係
# 第五行 broadcast-address 應設為同網段的最後一個IP
# 第六行 可設定多部 DNS 主機,不過必須要以逗號『 , 』分隔開才行。
# 第七行 域名,沒有的話就隨便設也沒關係
# 第八行 default-lease-time 604800; 單位為秒,此為7天
# 第九行 max-lease-time 259200;最大租用期限,此為30天
# 以上是 DNS 的 IP 設定,這個設定值會修改用戶端的 /etc/resolv.conf 檔案內容!

#底下開始是靜態IP的設定,s1可隨便填,第二行為MAC位址,第三行為固定IP
#host s1 {
#          hardware ethernet    xx:xx:01:41:xx:xx;
#          fixed-address        192.168.0.100;
#                                                 }
==============dhcpd.conf內容======================

啟動、停止指令
sudo /etc/init.d/dhcp3-server restart

※設定dhcp 所監聽的網卡
若你不只一張網卡,則你需要設定由哪一張網卡來分配IP
sudo gedit /etc/dhcp3/dhcpd.conf
INTERFACES=" "
在兩個"中間填入你網卡代號

經以上設定,別台電腦就可以透過你這台電腦取得IP了,但它們還不能上網,還有一個步驟

5.NAT

經此設定,別台電腦才能透過它上網

gedit ~/backup/iptables.sh
==================================================================
iptables -t nat -P PREROUTING  ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT      ACCEPT
echo "1" > /proc/sys/net/ipv4/ip_forward
#將ip_forward的值由0改為1,表示啟動封包轉送的功能,讓你的 Linux 具有 router 的能力
iptables -t nat -A POSTROUTING -s
192.168.0.0/24 -o ppp0 -j MASQUERADE
#來自
192.168.0.0/24 這網段的封包全轉到 ppp0 這張網卡去
==================================================================
需註意或更改的地方只有紅字的部份,若你的網段不是 192.168.0.0
或你的對外連網的網卡不是 ppp0 這張網卡,請調整參數

這樣設好之後,重開機,試試別台電腦能不能從你這台電腦取得IP並上網.

不能上網?

在 ubuntu9.04 按以上的設定重開機之後,可能會造成網頁無法打開的現像。
經查是 DNS server 解析的問題,  /etc/resolv.conf 此檔的內容並未正確的設定 DNS server,造成所有域名解析失敗。
解法也很簡單,只要在此檔填入正確的 DNS server 即可。
例如:
nameserver 168.95.192.1
nameserver 168.95.1.1

但是麻煩來了,在 ubuntu/debian 系列的版本裡, /etc/resolv.conf 又不能讓你手動編輯,重開機後會自動的覆蓋過去,很是困擾。

解法有二:

一、較暴力的解法:
設定 /etc/resolv.conf 無法寫入
指令
sudo chmod a-w /etc/resolv.conf

二、dhcp出問題:
應該是 dhcp 的 bug

sudo vim /etc/dhcp3/dhclient.conf

更改底下這兩行

supersede domain-name "mydomain.com"
prepend domain-name-server xxx.xxx.xxx.1, xxx.xxx.xxx.2

找到相對的段落,將藍字的部份改為正確的 DNS server

prepend domain-name-server 168.95.1.1, 168.95.192.1


--------------
文章來源 http://dominic16y.world.edoors.com/CTauuTRGbHgs

沒有留言:

張貼留言