
弄了一塊J2900雙千兆網口的工控板回來(奇怪的型號)當軟路由用,無奈我又想各種皮,還想裝桌面環境配VNC,而且我還對虛擬機不感冒(況且這U還不支持直通),只得放棄所有路由器系統,作為一名Arch鐵粉,追求無定制純原生,便決定裝Archlinux然后變之為路由器,Archlinux的安裝就不談了,只講跟標題有關的事,步驟簡單美麗,其他Linux發行版若想食用需自行領會,
首先,你需要一臺雙網口的電腦(單網口想弄WiFi的自行體會),最小化安裝了Archlinux(已經安裝了別的東西也不要緊,只是網路配置部分需自行調整),推薦在ArchISO里操作,避免網路問題無法安裝軟體包(?_??),
打造路由器無非幾點:一個網卡用DHCP等方式上網,另一個網卡設定靜態地址并在其上配置DHCP服務,搭建DNS服務(可選),最后配置iptables以轉發流量并充當防火墻,
(可選)在配置網路之前,為了”美觀”,我把網口介面名稱換成了lan和wan,只需要編輯/etc/udev/rules.d/10-network.rules,添加如下內容:
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:e0:b5:90:09:1a", NAME="lan"
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:e0:b5:90:09:19", NAME="wan"
將MAC地址換成自己的就好,
安裝必須的軟體包(若不想用netctl可換,iptables為Archlinux自帶):
pacman -S netctl dhcpcd dhcp
然后配置網路,我選用netctl,至于為什么不用NetworkManager是因為可能會導致無法控制網卡的情況,
先配置WAN口,編輯/etc/netctl/extern-profile(名字自取),然后添加如下內容:
Description='Public Interface'
Interface=wan
Connection=ethernet
IP='dhcp'
這是通過DHCP上網,需撥號請查閱ArchWiki,
然后配置LAN口,編輯/etc/netctl/intern-profile(名字自取),然后添加如下內容:
Description='Private Interface'
Interface=lan
Connection=ethernet
IP='static'
Address=('192.168.0.1/24')
Description只是個描述而已,如果你沒有改網口介面名稱,需要將Interface替換成你自己的(如eth0、enp0s0之類),Address是(自行領會),
然后啟用這些東西:
netctl enable intern-profile
netctl enable extern-profile
現在配置DHCP服務,編輯/etc/dhcpd.conf,洗掉所有內容,添加如下內容:
option domain-name-servers 8.8.8.8;
option subnet-mask 255.255.255.0;
option routers 192.168.0.1;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.2 192.168.0.255;
}
domain-name-servers是DNS服務器地址,可配置多個,可替換成本地DNS服務器或其他喜歡的DNS服務器,subnet-mask是子網掩碼,基本不用管,routers是網關地址,注意和之前netctl的Address匹配,subnet必須以.0結尾,range標明可分配地址區間,
再編輯 /usr/lib/systemd/system/dhcpd4.service,在ExecStart最后面添加監聽網卡名稱,

然后設定開機自啟,順便也讓iptables自啟:
systemctl enable dhcpd4
systemctl enable iptables
由于我用不上ipv6,所以省略了,
退出chroot重啟進入系統操作,如果你是遠程操作ArchISO的,會操作到一半斷線導致無法繼續,況且之前配置的服務還沒啟動(雖然可以手動啟動),
現在WAN口已經連上網了,但是不能通過LAN口上網,于是開始配置轉發和防火墻,
先開啟轉發功能(我只開ipv4):
echo 'net.ipv4.ip_forward=1' > /etc/sysctl.d/30-ipforward.conf
Arch系寫到單獨的檔案,其他發行版直接寫到/etc/sysctl.conf,
然后配置iptables,先清除所有規則:
iptables -F
iptables -t nat -F
然后設定默認策略以處理不匹配流量:
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
然后設定變數名,以進行后面的命令(如果沒有修改網口介面名稱需修改成自己的):
export LAN=lan
export WAN=wan
(可選)鎖定服務,使之只為LAN口作業:
iptables -I INPUT 1 -i ${LAN} -j ACCEPT
iptables -I INPUT 1 -i lo -j ACCEPT
iptables -A INPUT -p UDP --dport bootps ! -i ${LAN} -j REJECT
iptables -A INPUT -p UDP --dport domain ! -i ${LAN} -j REJECT
(可選)將特權埠的TCP/UDP包丟棄:
iptables -A INPUT -p TCP ! -i ${LAN} -d 0/0 --dport 0:1023 -j DROP
iptables -A INPUT -p UDP ! -i ${LAN} -d 0/0 --dport 0:1023 -j DROP
最后添加NAT規則(注意自行修改):
iptables -I FORWARD -i ${LAN} -d 192.168.0.0/16 -j DROP
iptables -A FORWARD -i ${LAN} -s 192.168.0.0/16 -j ACCEPT
iptables -A FORWARD -i ${WAN} -d 192.168.0.0/16 -j ACCEPT
iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE
現在通過LAN口連接的設備應該能上網了,保存iptables規則:
rm -rf /etc/iptables/iptables.rules
iptables-save > /etc/iptables/iptables.rules
大功告成,敬情享用吧!(終于可以皮了)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/238409.html
標籤:其他
上一篇:安裝 CentOS7
下一篇:常見Linux命令學習
