使用Linux搭建软路由
生活随笔
收集整理的這篇文章主要介紹了
使用Linux搭建软路由
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
環境:Ubuntu 16.0.4\6網卡、電信光貓一個、交換機N個,無線路由器N個
1.使用電信賬號連接Internet,這里使用一張網卡即可,即eth0
配置網卡eth0固定IP: vim /etc/network/interfacesauto eth0 iface eth0 inet static address 192.168.1.1 netmask 255.255.255.0配置pppoe撥號: sudo pppoeconf 1.等待檢測網卡,如果檢測失敗,可能是由于有其它設備正在嘗試撥號(PC,路由器) 2.輸入寬帶賬號 3.輸入密碼 4.剩下的選擇YES即可連接ADSL: sudo pon dsl-provider斷開ADSL連接: sudo poff查看日志: plog查看接口信息: ifconfig ppp0(一般是這個,如果你之前有配置VPN占用了ppp0,則ADSL端口可能會變成ppp1,詳細可以看plog)2.配置iptables規則,轉發網絡請求
檢測內核是否開啟路由轉發: sudo sysctl -p #輸出:net.ipv4.ip_forward = 1 如果沒有開啟,vim /etc/sysctl.conf 添加 net.ipv4.ip_forward = 1 再次執行 sysctl -p配置iptables: iptables -A FORWARD -i eth0 -o ppp0 -j ACCEPT iptables -A FORWARD -i ppp0 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE #把eth0網卡的數據包通過nat轉發到ppp0,根據自己的需要修改相應的網卡 iptables-save > /etc/iptables.rules #保存規則到文件3.配置iptables規則,禁止不必要的訪問
禁止ping: iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP禁止原先服務端口: 1.SSH端口禁止外網訪問 iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPTiptables -A INPUT -p tcp --dport 22 -j DROP2.禁止其他端口外網訪問80 iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 80 -j ACCEPTiptables -A INPUT -p tcp --dport 80 -j DROP?
4.添加開機自啟動
添加開機啟動: vim /etc/rc.local 或者是 /etc/init.d/rc.local #添加:sudo /usr/bin/pon dsl-provider sudo /sbin/iptables-restore < /etc/iptables.rules5.iptables命令參考:
參數含義: -P 代表協議(PROTOCOL) 指明當前規則針對的傳輸協議(如 TCP、UDP、ICMP 等) 可能的參數值有:tcp, udp, icmp, all 使用 “all” 表示適用于所有協議。而如果在規則中不指定 -p 參數,則默認使用 “all” 參數。一般不使用 “all” 這個值,要么指定某個特定的協議,要么就指定 -p 參數。 -p 的參數值既可以用名稱(如 tcp)也可以用協議對應的數值(如 6 代表 tcp 協議) /etc/protocols 文件中包含了所有允許的協議名稱和相應數值 也可以用長的參數名 –protocol-S 代表源地址(SOURCE) 指定數據包的源地址 可以是 ip 地址,或者網絡地址,或者主機名(hostname) 例如:-s 192.168.1.101 表示針對特定的 ip 地址 對于網絡掩碼,使用 /mask。例如,“-s 192.168.1.0/24″ 表示網絡掩碼為 255.255.255.0 的所有 192.168.1.x 地址都匹配。 如果不指定 -s 參數,默認匹配所有源地址 也可以用長參數名 –src 或者 –source-D 代表目的地址(DESTINATION) 指定數據包的目的地址 使用方式與上面的 “-s” 一樣(不同之處僅在于 -s 指源,而 -d 表示目的地址) 也可以用長參數名 –dst 或者 –destination-J 代表跳轉(TARGET) j 的意思是 “jump”(跳轉) 到目標 指定當某個數據包滿足該規則的時候的就跳轉到的下一個處理規則,而不再順序執行后面的規則判斷 可能的值有:ACCEPT, DROP, QUEUE, RETURN,分別表示接受、丟棄、進入隊列,返回(跳出,通常是從某個 chain 中跳回到調用該 chain 的上層 chain) 也可以跳轉到某個自定義的 chain 中,使用該 chain 的名稱做為跳轉目標-I 代表 IN INTERFACE(入站接口) i 表示 “input interface”(輸入接口,即,指定網絡數據處理的網卡,一般 eth0 即表示第一塊有線網卡的外網接口,lo 表示局域網接口) 可以直接理解為 “-i” 表示接口。不過,-i 和 -o 都表示接口,-i 表示輸入時的接口,而 -o 特指輸出用的接口。 指定數據包進入 INPUT、FORWARD 和 PREROUTING 鏈時經由的接口。 例如:-i eth0 表示該規則應該針對從 eth0 接口進來的數據包。 如果不指定 -i 參數,則經由系統中所有可用的接口進入的數據包都可以匹配該規則。 也可以使用長參數 –in-interface-O 代表 OUT INTERFACE(出站接口) o 表示 “output interface”(出站經由接口) 指定發送出去的數據包進入 INPUT、FORWARD 和 PREROUTING 鏈時經由的接口。 如果不指定 -o 參數,則經由系統中所有可用的接口發出的數據包都可以匹配該規則。 也可以使用長參數 –out-interface常用選項: 注意:下面所有這些選項前面都是 –(2個短橫線 – )。–SPORT 表示 SOURCE PORT (源端口,用于 -P TCP, 或者 -P UDP) 默認匹配所有端口(未特別指定時) 可以指定端口號(數字),也可以指定端口名稱。例如,默認的 SSH 端口號碼為 22,名稱為 ssh,可以表示為 “–sport 22″ 或者 “–sport ssh”。 /etc/services 文件包含了所有允許的端口名稱和對應的端口號碼。 在規則中使用號碼比使用名稱要好(效率高些) 要匹配一個端口范圍,使用英文半角冒號(:),如 22:100 匹配從 22 到 100 的所有端口號。 也可以使用長名稱 –source-port–DPORT 表示 DESTINATION PORT (目的端口,-P TCP, 或者 -P UDP) 與 –sport 的用法相同,區別僅在于對象是目的端口 也可以使用長名稱 –destination-port–TCP-FLAGS 表示 TCP FLAGS (用于 -P TCP) 可以使用英文半角逗號(,)來指定多個 TCP 狀態標識 可能值有:SYN, ACK, FIN, RST, URG, PSH??梢匀?#xff0c;也可以不用。–ICMP-TYPE 表示 ICMP TYPE (ICMP 類型,用于 -P ICMP) 當使用 icmp 協議 “-p icmp” 的時候,可以使用 “–icmp-type” 特別指定 ICMP 類型 例如,使用 “–icmp-type 0″ 表示 “Echo Reply”,“–icmp-type 8″ 表示 “Echo”。參考自:https://cnzhx.net/blog/common-iptables-cli/?
?
總結
以上是生活随笔為你收集整理的使用Linux搭建软路由的全部內容,希望文章能夠幫你解決所遇到的問題。