将你的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 信号强弱的几大因素,接下来猫哥再给大家介绍几种不用升级带宽套餐也能提升网速的 ...
随机推荐
- 网络流 - 最大流构图入门 bzoj 1305
一次舞会有n个男孩和n个女孩.每首曲子开始时,所有男孩和女孩恰好配成n对跳交谊舞.每个男孩都不会和同一个女孩跳两首(或更多)舞曲.有一些男孩女孩相互喜欢,而其他相互不喜欢(不会“单向喜欢”).每个男孩 ...
- dp-最长递增子序列 (LIS)
首先引出一个例子 问题 : 给你一个长度为 6 的数组 , 数组元素为 { 1 ,4,5,6,2,3,8 } , 则其最长单调递增子序列为 { 1 , 4 , 5 , 6 , 8 } , 并且长度为 ...
- macOS 10.11.* 安装scrapy
1.安装brew,然后修改brew源为某高校 2.更新python brew install python 3.安装pip 4.安装scrapy,这里肯定会有一个坑,之前在网上看到10.11开启了什么 ...
- 提高开发效率的一些ipython技巧
目录 一.显示ipython快速参考 二.书签功能 三.查看帮助或信息 四.执行python程序 五.执行剪贴板中的代码 六.与操作系统交互 七.测试代码执行时间 八.性能分析 九.matplotli ...
- 搞定SpringBoot多数据源(3):参数化变更源
目录 1. 引言 2. 参数化变更源说明 2.1 解决思路 2.2 流程说明 3. 实现参数化变更源 3.1 改造动态数据源 3.1.1 动态数据源添加功能 3.1.2 动态数据源配置 3.2 添加数 ...
- [洛谷P1606] [USACO07FEB] 荷叶塘Lilypad Pond
Description 为了让奶牛们娱乐和锻炼,农夫约翰建造了一个美丽的池塘.这个长方形的池子被分成了M行N列个方格(1≤M,N≤30).一些格子是坚固得令人惊讶的莲花,还有一些格子是岩石,其余的只是 ...
- 1、python3.x安装(windows)
现在大部分自动化测试已经使用python3.x版本,与Python2的区别这里就不多说了,如有兴趣可以自行百度. 一.下载 官网:https://www.python.org/downloads/,下 ...
- windows上apache配置php5
windows上apache配置php5 重点:1.php5里的php.ini的extension_dir要改为绝对目录(带'/'斜杠),如果只是写个ext,在apache+mod_php里面是不会加 ...
- 编译游戏库allegro
一个allegro依赖了大概十个库,还得自己一个个的去编译,然后复制粘贴 主要从两个网页学到的 第一个网页里有绝大多数的依赖库的编译方法 http://wiki.allegro.cc/index.ph ...
- HDU-2841 Visible Trees(莫比乌斯反演)
Visible Trees 传送门 解题思路: 实际上的答案就是1~n与1~m之间互质的数的对数,写出式子就是 \(ans=\sum^{n}_{i=1}\sum^{m}_{j=1}[gcd(i,j)= ...