将你的Archlinux打造成路由器

弄了一块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
大功告成,敬情享用吧!(终于可以皮了)
将你的Archlinux打造成路由器的更多相关文章
- ArchLinux 安装笔记:续 --zz
续前话 在虚拟机里调试了几天,终于鼓起勇气往实体机安装了,到桌面环境为止的安装过程可以看我的前一篇文章<ArchLinux 安装笔记>.桌面环境我使用的是 GNOME,虽然用了很长一段时间 ...
- ArchLinux安装与配置小结
最近无意间发现一个基于ArchLinux的发行版--BlackArch,主题十分炫酷(中二).当然渗透类的Linux 发行版已经有BackTrack和Kali了,不过都是源于Debian的,使用者众多 ...
- Windows7和Archlinux双系统硬盘安装笔记
俗话说,好记性不如烂笔头,这些东西也都是我Google来的,做个笔记以后自己安装也方便些. 因为官方wiki的Beginners' Guide讲的非常好,大部分步骤按照wiki一步一步来就好了,这里只 ...
- Archlinux 安装小计
前阵子Fedora太不稳定,几乎不能正常使用了,同时也对版本形式的linux每次升级后各种扫尾和清扫工作感到有点厌倦,心里也非常想体验一下linux的滚动发行版,所以下定决心要干掉fedora,主流的 ...
- 我的硬盘安装ArchLinux+xorg+gnome+美化
整个安装需要联接网络!现在的xorg为6.8.1,gnome为2.8.0 看了大家为了使用gnome,出现了那么多问题!这里我就推荐一个发行版,再安装上gnome2.8. ...
- 千呼万唤始出来:ArchLinux for Espressobin
前言 原创文章,转载引用务必注明链接,水平有限,如有疏漏,欢迎指正. 本文使用Markdown写成,为获得更好的阅读体验和正常的链接.图片显示,请访问我的博客原文: http://www.cnblog ...
- win7下利用ftp实现华为路由器的上传和下载
win7下利用ftp实现华为路由器的上传和下载 1. Win7下ftp的安装和配置 (1)开始->控制面板->程序->程序和功能->打开或关闭Windows功能 (2)在Wi ...
- Angular2学习笔记——路由器模型(Router)
Angular2以组件化的视角来看待web应用,使用Angular2开发的web应用,就是一棵组件树.组件大致分为两类:一类是如list.table这种通放之四海而皆准的通用组件,一类是专为业务开发的 ...
- 提升网速的路由器优化方法(UPnP、QoS、MTU、交换机模式、无线中继)
在上一篇<为什么房间的 Wi-Fi 信号这么差>中,猫哥从微波炉.相对论.人存原理出发,介绍了影响 Wi-Fi 信号强弱的几大因素,接下来猫哥再给大家介绍几种不用升级带宽套餐也能提升网速的 ...
随机推荐
- 换装WIN10(windows)那点儿事,换装操作系统一文通,玩转安装操作系统
目录 1. 按 2. win10对电脑配置的要求 3. 原版镜像下载 4. 制作U盘系统盘 5. 硬盘分区调整 6. 设置开机时从U盘启动 7. 安装win10 8. 如何激活WIN10 9. 如何给 ...
- javascript DOM练习
一.定时器 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset=" ...
- Codeforces Choosing Laptop 题解
这题实在是太水了,具体看注释 蒟蒻的方法是一边找过时的电脑一边比大小 蒟蒻不才,只会C++ 其实还会free basic,但它已经过时了 附: 本题洛谷网址 Codeforces网址 希望蒟蒻的题解能 ...
- .net core 连接数据库(通过数据库生成Modell)
创建数据库 (扫盲贴还劳烦大神们勿喷,谢谢) 打开数据库 输入如下代码 创建数据库 CREATE DATABASE [Blogging]; GO USE [Blogging]; GO CREATE T ...
- [bzoj3930] [洛谷P3172] [CQOI2015] 选数
Description 我们知道,从区间[L,H](L和H为整数)中选取N个整数,总共有(H-L+1)^N种方案.小z很好奇这样选出的数的最大公约数的规律,他决定对每种方案选出的N个整数都求一次最大公 ...
- 大叔 EF 来分析 EntityFrameworks.Data.Core 2
Extensions 1DbCommand拦截器扩展DbCommandInterceptorExtensions 2Class for IQuerable extensions methods Inc ...
- NOI2019滚粗记
Day -15 期末考完了,爆炸爆炸,就连数学和物理都错了好多傻*错误QwQ 哎呀管他的,NOI我来了! 跑到广附集训来了23333 Day -14 -- -2 做题,听题,哇和一群队爷在一个教室,真 ...
- 创建dynamics CRM client-side (七) - 用JS 来控制Auto-Save
在我们的system setting里面, 我们可以设置打开/关闭 auto save的功能. 我们可以用js来控制auto-save this.formOnSave = function (exec ...
- [校内训练19_09_10]sort
题意 给一个非负整数序列,每次问能否异或上一个正整数使得所有的数单调不减.如果能,输出最小的x,否则输出-1.单点修改.多测.要求最多一个log. 思考 只要考虑相邻的两个数.找到这两个数最高的不同的 ...
- SpringCloud与微服务Ⅳ --- Rest微服务构建案例工程模块
一.父工程搭建 父工程pom: <?xml version="1.0" encoding="UTF-8"?> <project xmlns=& ...