独辟蹊径:实现Linux下的局域网远程接入

  本文介绍一种利用Linux服务器的两个串口构建拨号服务器的方法,远程用户可以通过拨号连接到局域网,方便地进行信息传递和资源共享。

  笔者的配置环境是Red Hat 8.0 Linux操作系统,所需的硬件包括两个外置Modem(分别连接到COM1和COM2端口)和两条电话线。实现步骤如下:

  1.初始化串口设备

  在/etc/inittab文件中加入如下两行,用来初始化ttyS0和ttyS1两个串口设备:

  S0:345:respawn:/sbin/mgetty -D -X 3 ttyS0

  S1:345:respawn:/sbin/mgetty -D -X 3 ttyS1

  然后,运行“/sbin/init q”命令使改动生效。

  2.指定认证方式

  在/etc/PPP目录下创建文件ppplogin,内容如下:

  #!/bin/sh

  /usr/sbin/pppd auth -chap +pap login

  该文件指定用户登录时采用PAP认证。PAP和CHAP是PPP服务的两种身份验证协议。

  保存文件后,给文件设置执行的权限:

  #chmod a+x /etc/ppp/ppplogin

  然后,更改/etc/mgetty+sendfax/login.config文件,去掉“/AutoPPP/”一行前面的注释,并改为如下内容:

  /AutoPPP/ - - /etc/PPP/ppplogin

  

  3. 修改options文件

  修改/etc/PPP/Options文件为如下内容;

  detach

  Modem

  Lock

  crtscts

  asyncmap 0

  netmask 255.255.255.0

  proxyarp

  ms-dns 192.168.11.1

  “detach”选项非常重要。如果不指定这个选项,拨号程序就会进入后台,使得Shell脚本退出,随之而来的是串行线路被挂断,导致连接中止。“detach”防止了tty设备脱离PPPD的控制。

  “Modem”选项使得PPPD监视DTR引线,可以观察到对等点是否已掉线。

  “Lock”选项指定在串行设备上使用UUCP风格的锁定。

  “crtscts”选项用以打开硬件握手信号。

  “asyncmap 0”设置了异步字符映射,这个映射指定控制字符不能直接通过连接发送,需要先进行转义。

  “netmask 255.255.255.0”设定PPP网络接口的网络掩码。

  “proxyarp”选项打开了ARP代理功能。

  “ms-dns”2.168.11.1”指定了局域网内的DNS服务器地址,如没有可以不设。

  4. 给拨入用户分配IP

  创建/etc/ppp/Options.ttyS0和/etc/ppp/

  options.ttyS1两个文件,内容如下:

  # Vi options.ttyS0

  192.168.11.3:192.168.11.242

  # Vi options.ttys1

  192.168.11.3:192.168.11.243

  其中,“192.168.11.3”是用作拨号服务器的那台Linux机器的IP地址,“192.168.11.242”和“192.168.11.243”是分别指定给COM1口和COM2口拨入用户的IP地址。

  5. 口令验证

  编辑文件/etc/PPP/pap-secrets,内容如下:

  * * "secret" 192.168.11.242

  * * "password" 192.168.11.243

  如上所示,每行代码包含四列,分别代表用户名、服务器地址、口令值和IP地址列表。“*”表示可以与任何内容进行匹配。

  用户拨入后,如果需要访问局域网内的其它服务器,就必须打开IP转发功能:

  echo 1> /proc/sys/net/ipv4/ip_forward

  要想在空闲一段时间后自动獬樱枰?etc/ppp/options中加入如下一行:

  idle 600

  上述代码中,“600”表示600秒,即10分钟。

  如果在相应目录下找不到/sbin/mgetty文件和/etc/mgetty+sendfax/login.config文件,则需要安装mgetty软件包。

(0)

相关推荐

  • 独辟蹊径:实现Linux下的局域网远程接入

    本文介绍一种利用Linux服务器的两个串口构建拨号服务器的方法,远程用户可以通过拨号连接到局域网,方便地进行信息传递和资源共享. 笔者的配置环境是Red Hat 8.0 Linux操作系统,所需的硬件包括两个外置Modem(分别连接到COM1和COM2端口)和两条电话线.实现步骤如下: 1.初始化串口设备 在/etc/inittab文件中加入如下两行,用来初始化ttyS0和ttyS1两个串口设备: S0:345:respawn:/sbin/mgetty -D -X 3 ttyS0 S1:345:

  • Linux下Redis允许远程连接的实现方法

    Linux安装好Redis之后,使用Java进行连接,Java代码如下 package com.wzj.demo.test; import redis.clients.jedis.Jedis; /** * Created by wzj on 2018/3/29. */ public class RedisJava { public static void main(String[] args) { //连接本地的 Redis 服务 Jedis jedis = new Jedis("192.168

  • Linux下使用SSH远程执行命令方法收集

    说明:可以做SSH免密登录之后执行,这样可以省去每次执行输入密码的提示. 对于简单的命令: 如果是简单执行几个命令,则: ssh user@remoteNode "cd /home ; ls" 基本能完成常用的对于远程节点的管理了,几个注意的点: 双引号,必须有.如果不加双引号,第二个ls命令在本地执行 分号,两个命令之间用分号隔开 多行命令可以输入双引号后回车,结尾使用双引号包裹 对于脚本的方式: 有些远程执行的命令内容较多,单一命令无法完成,考虑脚本方式实现: #!/bin/bas

  • linux下禁止root远程登录和添加新用户的方法

    一.添加和root权限一样的用户 1. adduser admin passwd  admin (修改密码) 然后输入密码   (密码简单了通不过) 系统提示输入确认密码后再输入一次.OK添加成功. 2.修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示: vim /etc/sudoers ## Allow root to run any commands anywhere root ALL=(ALL) ALL admin ALL=(ALL) ALL 这个文件只

  • linux下使用ssh远程执行命令批量导出数据库到本地

    前天正在跟前端的同事调试功能.服务器开好,模拟的玩家登录好,就在倒计时.这时突然运营的同事跑过来说要统计几个服务器玩家的一些情况,也就是需要从几个服的数据库导出部分玩家的数据.好吧,我看了一下时间,11:47.心想,跟前端调试完,去吃个饭再午休一下那就下午再给吧.没想对方来一句"就导个数据库而已,要这么久么?",而且还是直接跟我上司说的.我嚓,好吧,我导.可问题来了,平时的统计是由php做的,批量部署这些是由运维做的.服务端完全没有对应的工具.而且服务器是在阿里云上的,数据库的用户是限

  • VNC:Linux下的远程遥控专家

    在微软Windows操作系统中的远程控制工具软件非常多,其中大家最熟悉的莫过于赛门铁克公司的PC ANYWHERE,还有CA ControlIT等等.这些远程控制工具软件都可以通过网络来控制特定的计算机,可以共享那台计算机的数据资料,操作该计算机上的外部设备. 既然在Windows下的远程控制软件如此出色,那么在Linux平台中是否有好用的一次控制工具软件呢?实际上,在Linux操作系统平台中也是存在几款功能强大的远程控制工具软件的,只是这些软件非常少,使用的用户也不是很多,所以一般的Linux

  • Linux下局域网流量统计

    1:统计10.86.0.0/16网段的内网流量情况 将下面脚本保存成文件traffic-lan.sh(运行后需要等待10秒抓包) tcpdump -nqt src net 10.86.0.0/16 and dst net ! 10.86.0.0/16 \ > /tmp/tcpdump_temp 2>&1 & sleep 10 kill `ps aux | grep tcpdump | grep -v grep | awk '{print $2}'` #awk '{s[$2] +

  • linux下查看本机和远程服务器的端口是否连通的方法

    如下所示: 1.ssh -v -p [端口号] [用户名]@[IP地址] 2.curl [IP地址]:[端口号] 以上这篇linux下查看本机和远程服务器的端口是否连通的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • linux下配置远程免密登录问题

    linux下各种集群搭建往往需要配置远程免密登录,本文主要描述了CentOs6.3系统下配置免密登录的详细过程. ssh远程登录,两种身份验证: 1.用户名+密码 密钥验证 机器1生成密钥对并将公钥发给机器2,机器2将公钥保存. 机器1要登录机器2时,机器2生成随机字符串并用机器1的公钥加密后,发给机器1. 机器1用私钥将其解密后发回给机器2,验证成功后登录 1.用户名+密码 如上图所示,机器1要登录到机器2 ssh 机器2的ip(默认使用root用户登录,也可指定,如:ssh a@192.16

  • linux下快速列出局域网中所有主机名(计算机名)的脚本

    最近有列出局域网中所有主机名的需求(SMB协议里的),但是findsmb命令总是列不全,搜了搜网上也没什么现成的解决方案,于是自己写了个python脚本 脚本会扫描局域网arp表中所有ip,并尝试解析其主机名,这样可以较为彻底地列出相关信息. 注意,运行这个脚本需要samba-common-bin和arp-scan这两个包,没有的请先apt install它们. 用法:直接运行或用python3运行,然后输入需要扫描的网卡名(network interface)(不知道的运行ifconfig可查

随机推荐